framebuffer compat_ioctl deadlock
authorMikulas Patocka <mpatocka@redhat.com>
Wed, 29 Oct 2008 21:01:17 +0000 (14:01 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 30 Oct 2008 18:38:47 +0000 (11:38 -0700)
Fix deadlock in fb_compat_ioctl.  fb_compat_ioctl acquires a mutex and
calls fb_ioctl that tries to acquire that mutex too.  A regression added
during BKL removal.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/fbmem.c

index cd5f20da738a0cb4e579a046c2a352a58791ea86..6048b55f2878b8755179c0641785ac89fe217b4b 100644 (file)
@@ -1262,8 +1262,8 @@ fb_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        case FBIOPUT_CON2FBMAP:
                arg = (unsigned long) compat_ptr(arg);
        case FBIOBLANK:
-               ret = fb_ioctl(file, cmd, arg);
-               break;
+               mutex_unlock(&info->lock);
+               return fb_ioctl(file, cmd, arg);
 
        case FBIOGET_FSCREENINFO:
                ret = fb_get_fscreeninfo(inode, file, cmd, arg);