return 0;
 
        bd = container_of(self, struct backlight_device, fb_notif);
-       if (!lock_fb_info(evdata->info))
-               return -ENODEV;
        mutex_lock(&bd->ops_lock);
        if (bd->ops)
                if (!bd->ops->check_fb ||
                        backlight_update_status(bd);
                }
        mutex_unlock(&bd->ops_lock);
-       unlock_fb_info(evdata->info);
        return 0;
 }
 
 
        if (!ld->ops)
                return 0;
 
-       if (!lock_fb_info(evdata->info))
-               return -ENODEV;
        mutex_lock(&ld->ops_lock);
        if (!ld->ops->check_fb || ld->ops->check_fb(ld, evdata->info)) {
                if (event == FB_EVENT_BLANK) {
                }
        }
        mutex_unlock(&ld->ops_lock);
-       unlock_fb_info(evdata->info);
        return 0;
 }
 
 
        }
 
 
+       if (!lock_fb_info(info))
+               return;
        event.info = info;
        event.data = ␣
        fb_notifier_call_chain(FB_EVENT_CONBLANK, &event);
+       unlock_fb_info(info);
 }
 
 static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)
 {
        int i, idx;
 
-       if (!lock_fb_info(info))
-               return -ENODEV;
        idx = info->node;
        for (i = first_fb_vc; i <= last_fb_vc; i++) {
                if (con2fb_map[i] == idx)
        if (primary_device == idx)
                primary_device = -1;
 
-       unlock_fb_info(info);
-
        if (!num_registered_fb)
                unregister_con_driver(&fb_con);
 
 {
        int ret = 0, i, idx;
 
-       if (!lock_fb_info(info))
-               return -ENODEV;
        idx = info->node;
        fbcon_select_primary(info);
-       unlock_fb_info(info);
 
        if (info_idx == -1) {
                for (i = first_fb_vc; i <= last_fb_vc; i++) {
 
        switch(action) {
        case FB_EVENT_SUSPEND:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_suspended(info);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_RESUME:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_resumed(info);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_MODE_CHANGE:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_modechanged(info);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_MODE_CHANGE_ALL:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_set_all_vcs(info);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_MODE_DELETE:
                mode = event->data;
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                ret = fbcon_mode_deleted(info, mode);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_FB_UNBIND:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                idx = info->node;
-               unlock_fb_info(info);
                ret = fbcon_fb_unbind(idx);
                break;
        case FB_EVENT_FB_REGISTERED:
                con2fb->framebuffer = con2fb_map[con2fb->console - 1];
                break;
        case FB_EVENT_BLANK:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_fb_blanked(info, *(int *)event->data);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_NEW_MODELIST:
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_new_modelist(info);
-               unlock_fb_info(info);
                break;
        case FB_EVENT_GET_REQ:
                caps = event->data;
-               if (!lock_fb_info(info)) {
-                       ret = -ENODEV;
-                       goto done;
-               }
                fbcon_get_requirement(info, caps);
-               unlock_fb_info(info);
                break;
        }
 done:
 
                        return -EINVAL;
                con2fb.framebuffer = -1;
                event.data = &con2fb;
+               if (!lock_fb_info(info))
+                       return -ENODEV;
                event.info = info;
                fb_notifier_call_chain(FB_EVENT_GET_CONSOLE_MAP, &event);
+               unlock_fb_info(info);
                ret = copy_to_user(argp, &con2fb, sizeof(con2fb)) ? -EFAULT : 0;
                break;
        case FBIOPUT_CON2FBMAP:
                        break;
                }
                event.data = &con2fb;
+               if (!lock_fb_info(info))
+                       return -ENODEV;
                event.info = info;
                ret = fb_notifier_call_chain(FB_EVENT_SET_CONSOLE_MAP, &event);
+               unlock_fb_info(info);
                break;
        case FBIOBLANK:
                if (!lock_fb_info(info))
        registered_fb[i] = fb_info;
 
        event.info = fb_info;
+       if (!lock_fb_info(fb_info))
+               return -ENODEV;
        fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event);
+       unlock_fb_info(fb_info);
        return 0;
 }
 
                goto done;
        }
 
+
+       if (!lock_fb_info(fb_info))
+               return -ENODEV;
        event.info = fb_info;
        ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event);
+       unlock_fb_info(fb_info);
 
        if (ret) {
                ret = -EINVAL;
 {
        struct fb_event event;
 
+       if (!lock_fb_info(info))
+               return;
        event.info = info;
        if (state) {
                fb_notifier_call_chain(FB_EVENT_SUSPEND, &event);
                info->state = FBINFO_STATE_RUNNING;
                fb_notifier_call_chain(FB_EVENT_RESUME, &event);
        }
+       unlock_fb_info(info);
 }
 
 /**
        err = 1;
 
        if (!list_empty(&info->modelist)) {
+               if (!lock_fb_info(info))
+                       return -ENODEV;
                event.info = info;
                err = fb_notifier_call_chain(FB_EVENT_NEW_MODELIST, &event);
+               unlock_fb_info(info);
        }
 
        return err;