• Brian Norris's avatar
    mwifiex: pcie: disable device DMA before unmapping/freeing buffers · 2f47150a
    Brian Norris authored
    In testing the mwifiex reset code path, I've noticed KASAN complaining
    about some "overwritten poison values" in our RX buffer descriptors.
    Because KASAN didn't notice this at the time of a CPU write, this seems
    to suggest that the device is writing to this memory.
    
    This makes a little sense, because when resetting, we don't necessarily
    expect the device to be responsive, so we don't have a chance to disable
    everything cleanly.
    
    We can at least take the precaution of disabling DMA for the device
    though, and in my testing that seems to clear up this particular issue.
    
    This patch reorders the removal path so that we disable the device
    *before* releasing our last PCIe buffers, and it clears/sets the bus
    master feature from the PCI device when resetting.
    
    Along the way, remove the insufficient (and confusing) error path in
    mwifiex_pcie_up_dev() (it doesn't unwind things well enough, and it
    doesn't propagate its errors upward anyway).
    Signed-off-by: default avatarBrian Norris <briannorris@chromium.org>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    2f47150a
pcie.c 85.1 KB