[PATCH 3/7] usb: mtu3: fix KE at qmu transfer done irq handler
AngeloGioacchino Del Regno
angelogioacchino.delregno at collabora.com
Mon Apr 3 05:31:34 PDT 2023
Il 03/04/23 04:52, Chunfeng Yun ha scritto:
> When handle qmu transfer irq, it will unlock @mtu->lock before give back
> request, if another thread hanlde disconnect event at the same time, and
> try to disable ep, it may lock @mtu->lock and free qmu ring, then qmu
> irq hanlder may get a NULL gpd, avoid the KE by checking gpd's value before
KE == Kernel Error? I think you wanted to say KP == Kernel Panic instead.
Also, s/hanlder/handler/g.
> handling it.
>
> e.g.
> qmu done irq on cpu0 thread running on cpu1
>
> qmu_done_tx()
> handle gpd [0]
> mtu3_requ_complete() mtu3_gadget_ep_disable()
> unlock @mtu->lock
> give back request lock @mtu->lock
> mtu3_ep_disable()
> mtu3_gpd_ring_free()
> unlock @mtu->lock
> lock @mtu->lock
> get next gpd [1]
>
> [1]: goto [0] to handle next gpd, and next gpd may be NULL.
>
> Signed-off-by: Chunfeng Yun <chunfeng.yun at mediatek.com>
This is a fix and needs a Fixes tag.
Regards,
Angelo
More information about the Linux-mediatek
mailing list