From: Roland Dreier Date: Wed, 26 Sep 2012 04:24:07 +0000 (-0700) Subject: mlx4_core: Fix crash on uninitialized priv->cmd.slave_sem X-Git-Tag: omap-for-v3.7-rc1/fixes-cpufreq-signed~42^2^5~3 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3d4c89ee4a8c993cc334a67f84a3fb724a1dd35;p=pandora-kernel.git 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 --- Reading git-diff-tree failed