• Junlin Yang's avatar
    ibmvnic: remove excessive irqsave · 69cdb794
    Junlin Yang authored
    ibmvnic_remove locks multiple spinlocks while disabling interrupts:
    spin_lock_irqsave(&adapter->state_lock, flags);
    spin_lock_irqsave(&adapter->rwi_lock, flags);
    
    As reported by coccinelle, the second _irqsave() overwrites the value
    saved in 'flags' by the first _irqsave(),   therefore when the second
    _irqrestore() comes,the value in 'flags' is not valid,the value saved
    by the first _irqsave() has been lost.
    This likely leads to IRQs remaining disabled. So remove the second
    _irqsave():
    spin_lock_irqsave(&adapter->state_lock, flags);
    spin_lock(&adapter->rwi_lock);
    
    Generated by: ./scripts/coccinelle/locks/flags.cocci
    ./drivers/net/ethernet/ibm/ibmvnic.c:5413:1-18:
    ERROR: nested lock+irqsave that reuses flags from line 5404.
    
    Fixes: 4a41c421 ("ibmvnic: serialize access to work queue on remove")
    Signed-off-by: default avatarJunlin Yang <yangjunlin@yulong.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    69cdb794
ibmvnic.c 150 KB