Re: BUG: sleeping function called from invalid context in submit_async_request

From: Oliver Neukum

Date: Sat Jun 27 2026 - 04:06:04 EST


Hi,

On 26.06.26 23:26, sanan.hasanou@xxxxxxxxx wrote:

kzalloc_noprof include/linux/slab.h:1200 [inline]
submit_async_request+0xd2/0x9c0 drivers/usb/misc/uss720.c:137
set_1284_register drivers/usb/misc/uss720.c:237 [inline]
parport_uss720_write_data+0x70/0x130 drivers/usb/misc/uss720.c:337
lcd_write_cmd_p8+0x94/0x7f0 drivers/auxdisplay/panel.c:752
hd44780_common_init_display+0x188/0x4f0 drivers/auxdisplay/hd44780_common.c:124
charlcd_init drivers/auxdisplay/charlcd.c:585 [inline]
charlcd_register+0x1e6/0x320 drivers/auxdisplay/charlcd.c:652
panel_attach+0x19f9/0x1f20 drivers/auxdisplay/panel.c:1644
driver_check+0x51/0x60 drivers/parport/share.c:158

Are you connecting an auxdisplay to a USB parport?
It seems the issue is that

static void lcd_write_cmd_p8(struct hd44780_common *hdc, int cmd)
{
spin_lock_irq(&pprt_lock);
/* present the data to the data port */
w_dtr(pprt, cmd);

assumes that you can write to a parport with a spinlock held.
uss720 assumes that the method implementing that can use GFP_KERNEL.

I am not sure whether this was even ever defined.
Adding relevant people.

Regards
Oliver