public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Possible deadlock when suspending framebuffer
@ 2011-06-14 13:10 Francis Moreau
  2011-06-14 18:15 ` Linus Torvalds
  0 siblings, 1 reply; 19+ messages in thread
From: Francis Moreau @ 2011-06-14 13:10 UTC (permalink / raw)
  To: Linux Kernel Mailing List, Linus Torvalds

Hello,

I noticed that a possible deadlock can happen when the current frame
buffering is being suspended and a new frambuffer device is being
registred at the same time.

When suspending the current frambuffer by doing : echo 1
>/sys/class/graphics/fb0/state, the kernel actually takes the
following locks in that order: console_lock, lock_fb_info (see
store_fbstate()).

However when a new framebuffer is coming in, the lock sequence is:
lock_fb_info (taken by do_remove_conflicting_framebuffer()),
console_lock() (taken by unbind_console).

I don't know how this should be fixed though...

Thanks
-- 
Francis

^ permalink raw reply	[flat|nested] 19+ messages in thread
* re:Possible deadlock when suspending framebuffer
@ 2011-06-15  1:09 Wanlong Gao
  2011-06-15  5:58 ` Possible " Bruno Prémont
  0 siblings, 1 reply; 19+ messages in thread
From: Wanlong Gao @ 2011-06-15  1:09 UTC (permalink / raw)
  To: Francis Moreau
  Cc: Paul Mundt, linux-fbdev, Linux Kernel Mailing List,
	Francis Moreau, Linus Torvalds

[-- Attachment #1: Type: text/plain, Size: 885 bytes --]

<snip>
Hi Francis:
can you test this patch?
Thanks

>From fe026c42af4cbdce053460a428a445e99071586a Mon Sep 17 00:00:00 2001
From: Wanlong Gao <wanlong.gao@gmail.com>
Date: Wed, 15 Jun 2011 09:03:41 +0800
Subject: [PATCH] test



Signed-off-by: Wanlong Gao <wanlong.gao@gmail.com>
---
 drivers/video/fbmem.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 5aac00e..6e6cef3 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1642,11 +1642,8 @@ static int do_unregister_framebuffer(struct
fb_info *fb_info)
 	if (i < 0 || i >= FB_MAX || registered_fb[i] != fb_info)
 		return -EINVAL;
 
-	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)
 		return -EINVAL;
-- 
1.7.4.1



[-- Attachment #2: 0001-test.patch --]
[-- Type: text/x-patch, Size: 836 bytes --]

>From fe026c42af4cbdce053460a428a445e99071586a Mon Sep 17 00:00:00 2001
From: Wanlong Gao <wanlong.gao@gmail.com>
Date: Wed, 15 Jun 2011 09:03:41 +0800
Subject: [PATCH] test

test

Signed-off-by: Wanlong Gao <wanlong.gao@gmail.com>
---
 drivers/video/fbmem.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index 5aac00e..6e6cef3 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1642,11 +1642,8 @@ static int do_unregister_framebuffer(struct fb_info *fb_info)
 	if (i < 0 || i >= FB_MAX || registered_fb[i] != fb_info)
 		return -EINVAL;
 
-	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)
 		return -EINVAL;
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2011-09-02 20:54 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-14 13:10 Possible deadlock when suspending framebuffer Francis Moreau
2011-06-14 18:15 ` Linus Torvalds
2011-06-14 19:04   ` Florian Tobias Schandinat
2011-06-17 19:02     ` [PATCH] fb: avoid possible deadlock caused by fb_set_suspend Florian Tobias Schandinat
2011-06-18  8:43       ` Bruno Prémont
2011-06-18  9:19         ` Bruno Prémont
2011-09-01 15:42           ` Florian Tobias Schandinat
2011-09-01 16:28             ` Guennadi Liakhovetski
2011-09-02 16:06             ` Guennadi Liakhovetski
2011-09-02 16:46               ` Florian Tobias Schandinat
2011-09-02 17:24                 ` [PATCH] fb: sh-mobile: Fix deadlock risk between lock_fb_info() and console_lock() Bruno Prémont
2011-09-02 20:54                   ` Florian Tobias Schandinat
2011-07-20 18:16       ` [PATCH] fb: avoid possible deadlock caused by fb_set_suspend Florian Tobias Schandinat
2011-07-28 22:10         ` Francis Moreau
  -- strict thread matches above, loose matches on Subject: below --
2011-06-15  1:09 re:Possible deadlock when suspending framebuffer Wanlong Gao
2011-06-15  5:58 ` Possible " Bruno Prémont
2011-06-15  6:22   ` Wanlong Gao
2011-06-15  7:04     ` Américo Wang
2011-06-15  7:12   ` Francis Moreau
2011-06-15 10:20     ` Bruno Prémont

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox