diff mbox

fbcon: Fix bit_putcs() call to kmalloc(s, GFP_KERNEL)

Message ID 20120730210949.5ccc5164@neptune.home (mailing list archive)
State New, archived
Headers show

Commit Message

Bruno Prémont July 30, 2012, 7:09 p.m. UTC
Switch to kmalloc(,GFP_ATOMIC) in bit_putcs to fix below trace:

[    9.771812] BUG: sleeping function called from invalid context at /usr/src/linux-git/mm/slub.c:943
[    9.771814] in_atomic(): 1, irqs_disabled(): 1, pid: 1063, name: mount
[    9.771818] Pid: 1063, comm: mount Not tainted 3.5.0-jupiter-00003-g8d858b1-dirty #2
[    9.771819] Call Trace:
[    9.771838]  [<c104f79b>] __might_sleep+0xcb/0xe0
[    9.771844]  [<c10c00d4>] __kmalloc+0xb4/0x1c0
[    9.771851]  [<c1041d4a>] ? queue_work+0x1a/0x30
[    9.771854]  [<c1041dcf>] ? queue_delayed_work+0xf/0x30
[    9.771862]  [<c1205832>] ? bit_putcs+0xf2/0x3e0
[    9.771865]  [<c1041e01>] ? schedule_delayed_work+0x11/0x20
[    9.771868]  [<c1205832>] bit_putcs+0xf2/0x3e0
[    9.771875]  [<c12002b8>] ? get_color.clone.14+0x28/0x100
[    9.771878]  [<c1200d2f>] fbcon_putcs+0x11f/0x130
[    9.771882]  [<c1205740>] ? bit_clear+0xe0/0xe0
[    9.771885]  [<c1200f6d>] fbcon_redraw.clone.21+0x11d/0x160
[    9.771889]  [<c120383d>] fbcon_scroll+0x79d/0xe10
[    9.771892]  [<c12002b8>] ? get_color.clone.14+0x28/0x100
[    9.771897]  [<c124c0b4>] scrup+0x64/0xd0
[    9.771900]  [<c124c22b>] lf+0x2b/0x60
[    9.771903]  [<c124cc95>] vt_console_print+0x1d5/0x2f0
[    9.771907]  [<c124cac0>] ? register_vt_notifier+0x20/0x20
[    9.771913]  [<c102b335>] call_console_drivers.clone.5+0xa5/0xc0
[    9.771916]  [<c102c58e>] console_unlock+0x2fe/0x3c0
[    9.771920]  [<c102ca16>] vprintk_emit+0x2e6/0x300
[    9.771924]  [<c13f01ae>] printk+0x38/0x3a
[    9.771931]  [<c112e8fe>] reiserfs_remount+0x2ae/0x3e0
[    9.771934]  [<c112e650>] ? reiserfs_fill_super+0xb00/0xb00
[    9.771939]  [<c10ca0ab>] do_remount_sb+0xab/0x150
[    9.771943]  [<c1034476>] ? ns_capable+0x46/0x70
[    9.771948]  [<c10e059c>] do_mount+0x20c/0x6b0
[    9.771955]  [<c10a7044>] ? strndup_user+0x34/0x50
[    9.771958]  [<c10e0acc>] sys_mount+0x6c/0xa0
[    9.771964]  [<c13f2557>] sysenter_do_call+0x12/0x26

According to comment in bit_putcs() that kammloc() call only happens
when fbcon is drawing to a monochrome framebuffer (which is my case with
hid-picolcd).

Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
---
 drivers/video/console/bitblit.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Florian Tobias Schandinat Aug. 23, 2012, 8:29 p.m. UTC | #1
On 07/30/2012 07:09 PM, Bruno Prémont wrote:
> Switch to kmalloc(,GFP_ATOMIC) in bit_putcs to fix below trace:
> 
> [    9.771812] BUG: sleeping function called from invalid context at /usr/src/linux-git/mm/slub.c:943
> [    9.771814] in_atomic(): 1, irqs_disabled(): 1, pid: 1063, name: mount
> [    9.771818] Pid: 1063, comm: mount Not tainted 3.5.0-jupiter-00003-g8d858b1-dirty #2
> [    9.771819] Call Trace:
> [    9.771838]  [<c104f79b>] __might_sleep+0xcb/0xe0
> [    9.771844]  [<c10c00d4>] __kmalloc+0xb4/0x1c0
> [    9.771851]  [<c1041d4a>] ? queue_work+0x1a/0x30
> [    9.771854]  [<c1041dcf>] ? queue_delayed_work+0xf/0x30
> [    9.771862]  [<c1205832>] ? bit_putcs+0xf2/0x3e0
> [    9.771865]  [<c1041e01>] ? schedule_delayed_work+0x11/0x20
> [    9.771868]  [<c1205832>] bit_putcs+0xf2/0x3e0
> [    9.771875]  [<c12002b8>] ? get_color.clone.14+0x28/0x100
> [    9.771878]  [<c1200d2f>] fbcon_putcs+0x11f/0x130
> [    9.771882]  [<c1205740>] ? bit_clear+0xe0/0xe0
> [    9.771885]  [<c1200f6d>] fbcon_redraw.clone.21+0x11d/0x160
> [    9.771889]  [<c120383d>] fbcon_scroll+0x79d/0xe10
> [    9.771892]  [<c12002b8>] ? get_color.clone.14+0x28/0x100
> [    9.771897]  [<c124c0b4>] scrup+0x64/0xd0
> [    9.771900]  [<c124c22b>] lf+0x2b/0x60
> [    9.771903]  [<c124cc95>] vt_console_print+0x1d5/0x2f0
> [    9.771907]  [<c124cac0>] ? register_vt_notifier+0x20/0x20
> [    9.771913]  [<c102b335>] call_console_drivers.clone.5+0xa5/0xc0
> [    9.771916]  [<c102c58e>] console_unlock+0x2fe/0x3c0
> [    9.771920]  [<c102ca16>] vprintk_emit+0x2e6/0x300
> [    9.771924]  [<c13f01ae>] printk+0x38/0x3a
> [    9.771931]  [<c112e8fe>] reiserfs_remount+0x2ae/0x3e0
> [    9.771934]  [<c112e650>] ? reiserfs_fill_super+0xb00/0xb00
> [    9.771939]  [<c10ca0ab>] do_remount_sb+0xab/0x150
> [    9.771943]  [<c1034476>] ? ns_capable+0x46/0x70
> [    9.771948]  [<c10e059c>] do_mount+0x20c/0x6b0
> [    9.771955]  [<c10a7044>] ? strndup_user+0x34/0x50
> [    9.771958]  [<c10e0acc>] sys_mount+0x6c/0xa0
> [    9.771964]  [<c13f2557>] sysenter_do_call+0x12/0x26
> 
> According to comment in bit_putcs() that kammloc() call only happens
> when fbcon is drawing to a monochrome framebuffer (which is my case with
> hid-picolcd).
> 
> Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>

Applied.


Thanks,

Florian Tobias Schandinat

> ---
>  drivers/video/console/bitblit.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c
> index 28b1a83..61b182b 100644
> --- a/drivers/video/console/bitblit.c
> +++ b/drivers/video/console/bitblit.c
> @@ -162,7 +162,7 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info,
>  	image.depth = 1;
>  
>  	if (attribute) {
> -		buf = kmalloc(cellsize, GFP_KERNEL);
> +		buf = kmalloc(cellsize, GFP_ATOMIC);
>  		if (!buf)
>  			return;
>  	}

--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c
index 28b1a83..61b182b 100644
--- a/drivers/video/console/bitblit.c
+++ b/drivers/video/console/bitblit.c
@@ -162,7 +162,7 @@  static void bit_putcs(struct vc_data *vc, struct fb_info *info,
 	image.depth = 1;
 
 	if (attribute) {
-		buf = kmalloc(cellsize, GFP_KERNEL);
+		buf = kmalloc(cellsize, GFP_ATOMIC);
 		if (!buf)
 			return;
 	}