2871edb32f
kvaser_usb uses completions to signal when a response event is received
for outgoing commands.
However, it uses init_completion() to reinitialize the start_comp and
stop_comp completions before sending the start/stop commands.
In case the device sends the corresponding response just before the
actual command is sent, complete() may be called concurrently with
init_completion() which is not safe.
This might be triggerable even with a properly functioning device by
stopping the interface (CMD_STOP_CHIP) just after it goes bus-off (which
also causes the driver to send CMD_STOP_CHIP when restart-ms is off),
but that was not tested.
Fix the issue by using reinit_completion() instead.
Fixes:
|
||
---|---|---|
.. | ||
etas_es58x | ||
kvaser_usb | ||
peak_usb | ||
Kconfig | ||
Makefile | ||
ems_usb.c | ||
esd_usb.c | ||
gs_usb.c | ||
mcba_usb.c | ||
ucan.c | ||
usb_8dev.c |