]> Pileus Git - ~andy/linux/blobdiff - drivers/video/fbsysfs.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[~andy/linux] / drivers / video / fbsysfs.c
index ef476b02fbe5ca7d91aed2b72710fff5ef806938..53444ac19fe05a320852b89d05aa6b58a9da64ae 100644 (file)
@@ -177,9 +177,12 @@ static ssize_t store_modes(struct device *device,
        if (i * sizeof(struct fb_videomode) != count)
                return -EINVAL;
 
-       if (!lock_fb_info(fb_info))
-               return -ENODEV;
        console_lock();
+       if (!lock_fb_info(fb_info)) {
+               console_unlock();
+               return -ENODEV;
+       }
+
        list_splice(&fb_info->modelist, &old_list);
        fb_videomode_to_modelist((const struct fb_videomode *)buf, i,
                                 &fb_info->modelist);
@@ -189,8 +192,8 @@ static ssize_t store_modes(struct device *device,
        } else
                fb_destroy_modelist(&old_list);
 
-       console_unlock();
        unlock_fb_info(fb_info);
+       console_unlock();
 
        return 0;
 }
@@ -404,12 +407,16 @@ static ssize_t store_fbstate(struct device *device,
 
        state = simple_strtoul(buf, &last, 0);
 
-       if (!lock_fb_info(fb_info))
-               return -ENODEV;
        console_lock();
+       if (!lock_fb_info(fb_info)) {
+               console_unlock();
+               return -ENODEV;
+       }
+
        fb_set_suspend(fb_info, (int)state);
-       console_unlock();
+
        unlock_fb_info(fb_info);
+       console_unlock();
 
        return count;
 }