int i, new_idx = -1;
        int idx = info->node;
 
-       WARN_CONSOLE_UNLOCKED();
+       console_lock();
 
-       if (!fbcon_has_console_bind)
+       if (!fbcon_has_console_bind) {
+               console_unlock();
                return;
+       }
 
        for (i = first_fb_vc; i <= last_fb_vc; i++) {
                if (con2fb_map[i] != idx &&
                }
                fbcon_unbind();
        }
+
+       console_unlock();
 }
 
 /* called with console_lock held */
 {
        int i, idx;
 
-       WARN_CONSOLE_UNLOCKED();
+       console_lock();
 
-       if (deferred_takeover)
+       if (deferred_takeover) {
+               console_unlock();
                return;
+       }
 
        idx = info->node;
        for (i = first_fb_vc; i <= last_fb_vc; i++) {
 
        if (!num_registered_fb)
                do_unregister_con_driver(&fb_con);
+       console_unlock();
 }
 
 void fbcon_remap_all(struct fb_info *info)
 }
 #endif /* CONFIG_FRAMEBUFFER_DETECT_PRIMARY */
 
+static bool lockless_register_fb;
+module_param_named_unsafe(lockless_register_fb, lockless_register_fb, bool, 0400);
+MODULE_PARM_DESC(lockless_register_fb,
+       "Lockless framebuffer registration for debugging [default=off]");
+
 /* called with console_lock held */
 int fbcon_fb_registered(struct fb_info *info)
 {
        int ret = 0, i, idx;
 
-       WARN_CONSOLE_UNLOCKED();
+       if (!lockless_register_fb)
+               console_lock();
+       else
+               atomic_inc(&ignore_console_lock_warning);
 
        idx = info->node;
        fbcon_select_primary(info);
 
        if (deferred_takeover) {
                pr_info("fbcon: Deferring console take-over\n");
-               return 0;
+               goto out;
        }
 
        if (info_idx == -1) {
                }
        }
 
+out:
+       if (!lockless_register_fb)
+               console_unlock();
+       else
+               atomic_dec(&ignore_console_lock_warning);
+
        return ret;
 }
 
 
        }
 }
 
-static bool lockless_register_fb;
-module_param_named_unsafe(lockless_register_fb, lockless_register_fb, bool, 0400);
-MODULE_PARM_DESC(lockless_register_fb,
-       "Lockless framebuffer registration for debugging [default=off]");
-
 static int do_register_framebuffer(struct fb_info *fb_info)
 {
-       int i, ret;
+       int i;
        struct fb_videomode mode;
 
        if (fb_check_foreignness(fb_info))
        }
 #endif
 
-       if (!lockless_register_fb)
-               console_lock();
-       else
-               atomic_inc(&ignore_console_lock_warning);
-       ret = fbcon_fb_registered(fb_info);
-
-       if (!lockless_register_fb)
-               console_unlock();
-       else
-               atomic_dec(&ignore_console_lock_warning);
-       return ret;
+       return fbcon_fb_registered(fb_info);
 }
 
 static void unbind_console(struct fb_info *fb_info)
        if (WARN_ON(i < 0 || i >= FB_MAX || registered_fb[i] != fb_info))
                return;
 
-       console_lock();
        fbcon_fb_unbind(fb_info);
-       console_unlock();
 }
 
 static void unlink_framebuffer(struct fb_info *fb_info)
                fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event);
        }
 #endif
-       console_lock();
        fbcon_fb_unregistered(fb_info);
-       console_unlock();
 
        /* this may free fb info */
        put_fb_info(fb_info);