mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 01:51:53 +00:00
15e4292a2d
This patch fixes an issue that the CFIFOSEL register value is possible
to be changed by usbhsg_ep_enable() wrongly. And then, a data transfer
using CFIFO may not work correctly.
For example:
# modprobe g_multi file=usb-storage.bin
# ifconfig usb0 192.168.1.1 up
(During the USB host is sending file to the mass storage)
# ifconfig usb0 down
In this case, since the u_ether.c may call usb_ep_enable() in
eth_stop(), if the renesas_usbhs driver is also using CFIFO for
mass storage, the mass storage may not work correctly.
So, this patch adds usbhs_lock() and usbhs_unlock() calling in
usbhsg_ep_enable() to protect CFIFOSEL register. This is because:
- CFIFOSEL.CURPIPE = 0 is also needed for the pipe configuration
- The CFIFOSEL (fifo->sel) is already protected by usbhs_lock()
Fixes:
|
||
---|---|---|
.. | ||
common.c | ||
common.h | ||
fifo.c | ||
fifo.h | ||
Kconfig | ||
Makefile | ||
mod_gadget.c | ||
mod_host.c | ||
mod.c | ||
mod.h | ||
pipe.c | ||
pipe.h | ||
rcar2.c | ||
rcar2.h | ||
rcar3.c | ||
rcar3.h |