linux/drivers/net
Roland Dreier f3d4c89ee4 mlx4_core: Fix crash on uninitialized priv->cmd.slave_sem
On an SR-IOV master device, __mlx4_init_one() calls mlx4_init_hca()
before mlx4_multi_func_init().  However, for unlucky configurations,
mlx4_init_hca() might call mlx4_SENSE_PORT() (via mlx4_dev_cap()), and
that calls mlx4_cmd_imm() with MLX4_CMD_WRAPPED set.

However, on a multifunction device with MLX4_CMD_WRAPPED, __mlx4_cmd()
calls into mlx4_slave_cmd(), and that immediately tries to do

	down(&priv->cmd.slave_sem);

but priv->cmd.slave_sem isn't initialized until mlx4_multi_func_init()
(which we haven't called yet).  The next thing it tries to do is access
priv->mfunc.vhcr, but that hasn't been allocated yet.

Fix this by moving the initialization of slave_sem and vhcr up into
mlx4_cmd_init(). Also, since slave_sem is really just being used as a
mutex, convert it into a slave_cmd_mutex.

Signed-off-by: Roland Dreier <roland@purestorage.com>
2012-09-30 20:33:46 -07:00
..
appletalk net: Use PTR_RET rather than if(IS_ERR(.. [1] 2012-08-06 13:30:02 -07:00
arcnet
bonding netpoll: check netpoll tx status on the right device 2012-08-14 14:33:32 -07:00
caif caif: fix NULL pointer check 2012-07-24 13:54:16 -07:00
can can: ti_hecc: fix oops during rmmod 2012-09-21 12:54:53 +02:00
cris cris: fix eth_v10.c build error 2012-08-03 20:32:31 -07:00
dsa
ethernet mlx4_core: Fix crash on uninitialized priv->cmd.slave_sem 2012-09-30 20:33:46 -07:00
fddi fddi: 64 bit bug in smt_add_para() 2012-09-01 22:44:13 -04:00
hamradio
hippi
hyperv hyperv: Move wait completion msg code into rndis_filter_halt_device() 2012-08-03 16:51:11 -07:00
irda net/irda: sh_sir: fix return value check in sh_sir_set_baudrate() 2012-09-21 13:47:24 -04:00
phy netdev/phy: skip disabled mdio-mux nodes 2012-08-20 02:16:00 -07:00
plip
ppp pptp: lookup route with the proper net namespace 2012-08-08 15:57:10 -07:00
slip
team netpoll: use GFP_ATOMIC in slave_enable_netpoll() and __netpoll_setup() 2012-08-14 14:33:30 -07:00
usb net: qmi_wwan: adding Huawei E367, ZTE MF683 and Pantech P4200 2012-09-20 17:54:28 -04:00
vmxnet3 vmxnet3: Fix race between dev_open() and register_netdev() 2012-08-15 15:10:42 -07:00
wan ixp4xx_hss: fix build failure due to missing linux/module.h inclusion 2012-09-10 16:15:05 -04:00
wimax drivers/net/wimax/i2400m/fw.c: fix error return code 2012-08-20 02:33:21 -07:00
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem 2012-09-14 11:39:39 -04:00
xen-netback
dummy.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
eql.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
macvlan.c
macvtap.c macvtap: rcu_dereference outside read-lock section 2012-08-12 13:40:48 -07:00
Makefile
mdio.c
mii.c
netconsole.c netconsole: remove a redundant netconsole_target_put() 2012-08-20 02:59:49 -07:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tun: don't zeroize sock->file on detach 2012-08-09 16:16:14 -07:00
veth.c
virtio_net.c net: fix race condition in several drivers when reading stats 2012-07-22 12:12:32 -07:00
xen-netfront.c xen-netfront: use __pskb_pull_tail to ensure linear area is big enough on RX 2012-08-30 12:24:04 -04:00