kfree(ops->fontbuffer);
static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,				  struct fb_info *newinfo, int unit,				  int oldidx, int found){	struct fbcon_ops *ops = oldinfo->fbcon_par;	int err = 0;	if (oldinfo->fbops->fb_release &&	    oldinfo->fbops->fb_release(oldinfo, 0)) {		con2fb_map[unit] = oldidx;		if (!found && newinfo->fbops->fb_release)			newinfo->fbops->fb_release(newinfo, 0);		if (!found)			module_put(newinfo->fbops->owner);		err = -ENODEV;	}	if (!err) {		fbcon_del_cursor_timer(oldinfo);		kfree(ops->cursor_state.mask);		kfree(ops->cursor_data);		kfree(oldinfo->fbcon_par);		oldinfo->fbcon_par = NULL;		module_put(oldinfo->fbops->owner);		/*		  If oldinfo and newinfo are driving the same hardware,		  the fb_release() method of oldinfo may attempt to		  restore the hardware state.  This will leave the		  newinfo in an undefined state. Thus, a call to		  fb_set_par() may be needed for the newinfo.		*/		if (newinfo->fbops->fb_set_par)			newinfo->fbops->fb_set_par(newinfo);	}	return err;}