linux/drivers/net
Srinivas Kandagatla 989508ba60 stmmac: remove spin_lock in stmmac_ioctl.
This patch removes un-needed spin_lock in stmmac_ioctl while reading and
writing mdio registers. While holding spin_lock the code must be
atomic, which is not true in this case as both mdiobus_read and writes
have mutex locks.

Without this patch reading mdio registers via mii-tool results in below
BUG:
mii-tool -vvv eth0"
Using SIOCGMIIPHY=0x8947
BUG: sleeping function called from invalid context at kernel/mutex.c:287
in_atomic(): 1, irqs_disabled(): 0, pid: 614, name: mii-tool
2 locks held by mii-tool/614:
 #0:  (rtnl_mutex){......}, at: [<c01fd80c>] dev_ioctl+0x550/0x674
 #1:  (&priv->lock){......}, at: [<c01b34ec>] stmmac_ioctl+0x4c/0x78
[<c002ea14>] (unwind_backtrace+0x0/0xcc) from [<c0272c38>]
(mutex_lock_nested+0x24/0x35c)
[<c0272c38>] (mutex_lock_nested+0x24/0x35c) from [<c01b237c>]
(mdiobus_read+0x44/0x70)
[<c01b237c>] (mdiobus_read+0x44/0x70) from [<c01b0c64>]
(phy_mii_ioctl+0x4c/0x138)
[<c01b0c64>] (phy_mii_ioctl+0x4c/0x138) from [<c01b34fc>]
(stmmac_ioctl+0x5c/0x78)
[<c01b34fc>] (stmmac_ioctl+0x5c/0x78) from [<c01fcec8>]
(dev_ifsioc+0x2a4/0x2c8)
[<c01fcec8>] (dev_ifsioc+0x2a4/0x2c8) from [<c01fd81c>]
(dev_ioctl+0x560/0x674)
[<c01fd81c>] (dev_ioctl+0x560/0x674) from [<c00c36e0>]
(vfs_ioctl+0x2c/0x8c)
[<c00c36e0>] (vfs_ioctl+0x2c/0x8c) from [<c00c4130>]
(do_vfs_ioctl+0x530/0x578)
[<c00c4130>] (do_vfs_ioctl+0x530/0x578) from [<c00c41ac>]
(sys_ioctl+0x34/0x54)
[<c00c41ac>] (sys_ioctl+0x34/0x54) from [<c0028aa0>]
(ret_fast_syscall+0x0/0x2c)

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-11-17 03:13:42 -05:00
..
appletalk
arcnet drivers/net: Kconfig & Makefile cleanup 2011-08-27 00:58:49 -07:00
bonding Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2011-11-07 10:55:33 -08:00
caif caif-hsi: Added recovery check of CA wake status. 2011-10-19 03:25:43 -04:00
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2011-10-25 13:25:22 +02:00
cris
ethernet stmmac: remove spin_lock in stmmac_ioctl. 2011-11-17 03:13:42 -05:00
fddi skfp: Fix SysKonnect FDDI driver compile issues 2011-08-27 00:58:23 -07:00
hamradio
hippi net: drivers/net/hippi/Kconfig should be sourced 2011-11-09 15:55:06 -05:00
irda Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2011-11-03 13:28:14 -07:00
phy drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
plip plip: Move the PLIP driver 2011-08-27 00:58:33 -07:00
ppp Merge branch 'master' of ra.kernel.org:/pub/scm/linux/kernel/git/davem/net 2011-10-24 18:18:09 -04:00
slip slip: Move the SLIP drivers 2011-08-27 00:58:36 -07:00
tokenring drivers/net: Kconfig & Makefile cleanup 2011-08-27 00:58:49 -07:00
usb net-next:asix: V2 Update VERSION 2011-11-15 16:26:07 -05:00
vmxnet3 drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
wan wan: make LAPB callbacks const 2011-09-16 19:20:20 -04:00
wimax drivers/net: Add moduleparam.h to drivers as required. 2011-10-31 19:31:09 -04:00
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem 2011-11-11 11:34:47 -05:00
xen-netback Merge branch 'stable/vmalloc-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen 2011-11-06 18:31:36 -08:00
dummy.c
eql.c
ifb.c
Kconfig net: drivers/net/hippi/Kconfig should be sourced 2011-11-09 15:55:06 -05:00
LICENSE.SRC
loopback.c
macvlan.c macvlan: receive multicast with local address 2011-11-04 17:39:32 -04:00
macvtap.c macvtap: Fix the minor device number allocation 2011-10-21 02:53:07 -04:00
Makefile net: Fix duplicate CONFIG_SLIP entry in driver/net/Makefile 2011-08-29 22:55:53 -04:00
mdio.c
mii.c
netconsole.c netconsole: enable netconsole can make net_device refcnt incorrent 2011-10-18 23:55:29 -04:00
rionet.c drivers/net/rionet.c: fix ethernet address macros for LE platforms 2011-11-02 16:07:01 -07:00
sb1000.c
Space.c
sungem_phy.c
tun.c
veth.c drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
virtio_net.c virtio-net: Use virtio_config_val() for retrieving config 2011-11-02 11:40:58 +10:30
xen-netfront.c net: add skb frag size accessors 2011-10-19 03:10:46 -04:00