• Maciej W. Rozycki's avatar
    PHYLIB: Spinlock fixes for softirqs · 9ff8c68b
    Maciej W. Rozycki authored
    Use spin_lock_bh()/spin_unlock_bh() for the phydev lock throughout as it
    is used in phy_timer() that is called as a softirq and all the other
    operations may happen in the user context.
    
    There has been a change recently that did such a conversion for some of the
    operations on the lock, but some have been left intact.  Many of them,
    perhaps all, may be called in the user context and I was able to trigger
    recursive spinlock acquisition indeed, so I think for the sake of long-term
    maintenance it is best to convert them all, even if unnecessarily for one
    or two -- better safe than sorry.
    
    Perhaps one in phy_timer() could actually be skipped as only called as a
    softirq -- I can send an update if that sounds like a good idea.
    
    Checked with checkpatch.pl and at the runtime.
    Signed-off-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    9ff8c68b
phy_device.c 17.3 KB