2017-12-13 08:57:35

by Jia-Ju Bai

[permalink] [raw]
Subject: [BUG] kaweth: a possible sleep-in-atomic bug in kaweth_start_xmit

According to drivers/net/usb/kaweth.c, the driver may sleep under a
spinlock.
The function call path is:
kaweth_start_xmit (acquire the spinlock)
kaweth_async_set_rx_mode
kaweth_control
kaweth_internal_control_msg
usb_start_wait_urb
wait_event_timeout --> may sleep
usb_kill_urb --> may sleep

I do not find a good way to fix it, so I only report.
This possible bug is found by my static analysis tool (DSAC) and checked
by my code review.


Thanks,
Jia-Ju Bai


2017-12-13 09:26:45

by Oliver Neukum

[permalink] [raw]
Subject: Re: [BUG] kaweth: a possible sleep-in-atomic bug in kaweth_start_xmit

Am Mittwoch, den 13.12.2017, 16:57 +0800 schrieb Jia-Ju Bai:
> According to drivers/net/usb/kaweth.c, the driver may sleep under a
> spinlock.
> The function call path is:
> kaweth_start_xmit (acquire the spinlock)
> kaweth_async_set_rx_mode
> kaweth_control
> kaweth_internal_control_msg
> usb_start_wait_urb
> wait_event_timeout --> may sleep
> usb_kill_urb --> may sleep
>
> I do not find a good way to fix it, so I only report.
> This possible bug is found by my static analysis tool (DSAC) and checked
> by my code review.
>

Hi,

thanks for reporting. I need to get out my old test device.
It will take a few days. The obvious fix would be to set this
filter only on initialization. Unfortunately this needs to
be tested.

Regards
Oliver