Skip to contentSkip to conversation

au1200fb: fix oops due to uninitialized fb_info.lock mutex

PATCH In review Manuel Lauss 2 participants 3 messages Jul 7, 2009 – Jul 8, 2009 Framebuffer layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 au1200fb: fix oops due to uninitialized fb_info.lock mutex

commit 4148df9b0f38bdd362dd91d52076926c11cbe5a9 breaks au1200fb due to fb_info.lock now being uninitialized at the time of the register_frambuffer call:

CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 8038ccd4, ra == 802412d4

Call Trace:
[<8038ccd4>] __mutex_lock_slowpath+0x3c/0xe4
[<802412d4>] lock_fb_info+0x20/0x50
[<80242158>] register_framebuffer+0x264/0x2a4
[<8024f8c4>] au1200fb_drv_probe+0x308/0x444
[<80273ef8>] driver_probe_device+0xbc/0x184
[<8027402c>] __driver_attach+0x6c/0xa4
[<802736bc>] bus_for_each_dev+0x60/0xb0
[<80272e20>] bus_add_driver+0xc8/0x24c
[<802743f4>] driver_register+0xdc/0x190
[<8047d130>] au1200fb_init+0x39c/0x3cc
[<80100460>] _stext+0x60/0x1c8
[<8046f334>] kernel_init+0xc8/0x134
[<80106f64>] kernel_thread_helper+0x10/0x18

This band-aid fixes this oops.

---
 drivers/video/au1200fb.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
drivers/video/au1200fb.c +2 -0
index 0d96f1d..293aff9 100644
@@ -1671,6 +1671,8 @@ static int au1200fb_drv_probe(struct platform_device *dev)
 		if ((ret = au1200fb_init_fbinfo(fbdev)) < 0)
 			goto failed;
 
+		mutex_init(&fbdev->fb_info.lock);
+
 		/* Register new framebuffer */
 		if ((ret = register_framebuffer(&fbdev->fb_info)) < 0) {
 			print_err("cannot register new framebuffer");

--
1.6.3.3

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge

#1 lore raw
Quoted 20 lines · On Tue, 07 Jul 2009 10:29:51 +0200 Manuel Lauss <[email protected]>…

commit 4148df9b0f38bdd362dd91d52076926c11cbe5a9 breaks au1200fb due to fb_info.lock now being uninitialized at the time of the register_frambuffer call:

CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 8038ccd4, ra == 802412d4

Call Trace:
[<8038ccd4>] __mutex_lock_slowpath+0x3c/0xe4
[<802412d4>] lock_fb_info+0x20/0x50
[<80242158>] register_framebuffer+0x264/0x2a4
[<8024f8c4>] au1200fb_drv_probe+0x308/0x444
[<80273ef8>] driver_probe_device+0xbc/0x184
[<8027402c>] __driver_attach+0x6c/0xa4
[<802736bc>] bus_for_each_dev+0x60/0xb0
[<80272e20>] bus_add_driver+0xc8/0x24c
[<802743f4>] driver_register+0xdc/0x190
[<8047d130>] au1200fb_init+0x39c/0x3cc
[<80100460>] _stext+0x60/0x1c8
[<8046f334>] kernel_init+0xc8/0x134
[<80106f64>] kernel_thread_helper+0x10/0x18
Quoted 2 lines

This band-aid fixes this oops.

Please wait a little. Currently, I, Paul Mundt and Linus discuss how to fix all drivers broken by the commit 4148df9b0f38bdd362dd91d52076.

Kind regards,
Krzysztof

----------------------------------------------------------------------
Sprawdz, czy wziac klapki, czy parasolke
Pogoda na dzis, jutro i pojutrze >> http://link.interia.pl/f224d

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/blackberry

#2 lore raw

Hi Krzysztof,

Quoted 23 lines · Krzysztof Helt
Quoted 20 lines · On Tue, 07 Jul 2009 10:29:51 +0200 Manuel Lauss <[email protected]>…

commit 4148df9b0f38bdd362dd91d52076926c11cbe5a9 breaks au1200fb due to fb_info.lock now being uninitialized at the time of the register_frambuffer call:

CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 8038ccd4, ra == 802412d4

Call Trace:
[<8038ccd4>] __mutex_lock_slowpath+0x3c/0xe4
[<802412d4>] lock_fb_info+0x20/0x50
[<80242158>] register_framebuffer+0x264/0x2a4
[<8024f8c4>] au1200fb_drv_probe+0x308/0x444
[<80273ef8>] driver_probe_device+0xbc/0x184
[<8027402c>] __driver_attach+0x6c/0xa4
[<802736bc>] bus_for_each_dev+0x60/0xb0
[<80272e20>] bus_add_driver+0xc8/0x24c
[<802743f4>] driver_register+0xdc/0x190
[<8047d130>] au1200fb_init+0x39c/0x3cc
[<80100460>] _stext+0x60/0x1c8
[<8046f334>] kernel_init+0xc8/0x134
[<80106f64>] kernel_thread_helper+0x10/0x18
Quoted 4 lines
Quoted 2 lines

This band-aid fixes this oops.

Please wait a little. Currently, I, Paul Mundt and Linus discuss how to fix all drivers broken by the commit 4148df9b0f38bdd362dd91d52076.

Alright, I'll wait. In the meantime I've refined the patch a bit and converted the driver to use the framebuffer_alloc() call.

      Manuel Lauss

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge