PHYLIB: Spinlock fixes for softirqs
authorMaciej W. Rozycki <macro@linux-mips.org>
Sat, 29 Sep 2007 05:42:12 +0000 (22:42 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:53:54 +0000 (16:53 -0700)
commit9ff8c68b3c722f732c7a13d6631b149cca8c7091
treeec0dd0762f9652d30fff30228406bcd0417f6063
parent1f8f4559f8c5829348a010a9e0bbb423310060d1
PHYLIB: Spinlock fixes for softirqs

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: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/phy/phy.c
drivers/net/phy/phy_device.c