Skip to content
  • Stanislaw Gruszka's avatar
    iwlegacy: fix enqueue hcmd race conditions · 81e63263
    Stanislaw Gruszka authored
    
    
    We mark command as huge by using meta->flags from other (non huge) command,
    but flags can be possibly overridden, when non huge command is enqueued,
    what can lead to:
    
    WARNING: at lib/dma-debug.c:696 dma_debug_device_change+0x1a3/0x1f0()
    DMA-API: device driver has pending DMA allocations while released from device [count=1]
    
    To fix introduce additional CMD_MAPPED to mark command as mapped and
    serialize iwl_enqueue_hcmd() with iwl_tx_cmd_complete() using
    hcmd_lock. Serialization will also fix possible race conditions,
    because q->read_ptr, q->write_ptr are modified/used in parallel.
    
    Do not change callback, I did (and fixed) that mistake in iwlagn.
    
    Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    81e63263