• Dave Jiang's avatar
    dmaengine: move channel device_node deletion to driver · e5944431
    Dave Jiang authored
    Channel device_node deletion is managed by the device driver rather than
    the dmaengine core. The deletion was accidentally introduced when making
    channel unregister dynamic. It causes xilinx_dma module to crash on unload
    as reported by Radhey. Remove chan->device_node delete in dmaengine and
    also fix up idxd driver.
    
    [   42.142705] Internal error: Oops: 96000044 [#1] SMP
    [   42.147566] Modules linked in: xilinx_dma(-) clk_xlnx_clock_wizard uio_pdrv_genirq
    [   42.155139] CPU: 1 PID: 2075 Comm: rmmod Not tainted 5.10.1-00026-g3a2e6dd7a05-dirty #192
    [   42.163302] Hardware name: Enclustra XU5 SOM (DT)
    [   42.167992] pstate: 40000005 (nZcv daif -PAN -UAO -TCO BTYPE=--)
    [   42.173996] pc : xilinx_dma_chan_remove+0x74/0xa0 [xilinx_dma]
    [   42.179815] lr : xilinx_dma_chan_remove+0x70/0xa0 [xilinx_dma]
    [   42.185636] sp : ffffffc01112bca0
    [   42.188935] x29: ffffffc01112bca0 x28: ffffff80402ea640
    
    xilinx_dma_chan_remove+0x74/0xa0:
    __list_del at ./include/linux/list.h:112 (inlined by)
    __list_del_entry at./include/linux/list.h:135 (inlined by)
    list_del at ./include/linux/list.h:146 (inlined by)
    xilinx_dma_chan_remove at drivers/dma/xilinx/xilinx_dma.c:2546
    
    Fixes: e81274cd ("dmaengine: add support to dynamic register/unregister of channels")
    Reported-by: default avatarRadhey Shyam Pandey <radheys@xilinx.com>
    Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    Tested-by: default avatarRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
    Link: https://lore.kernel.org/r/161099092469.2495902.5064826526660062342.stgit@djiang5-desk3.ch.intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    Cc: stable@vger.kernel.org # 5.9+
    e5944431
dmaengine.c 41 KB