summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/marvell/libertas/cmd.c
diff options
context:
space:
mode:
authorAndreas Kemnade <andreas@kemnade.info>2016-01-30 18:01:51 +0100
committerKalle Valo <kvalo@codeaurora.org>2016-02-06 14:02:09 +0200
commit0a7701b4defcebc7ce461355e6d9478df313b084 (patch)
tree27b3f3d83ae209774037d244d4725965ead92ea7 /drivers/net/wireless/marvell/libertas/cmd.c
parentefdf0e393e76aa18e9c2ec0ca9b3a71ad410994b (diff)
downloadlinux-stable-0a7701b4defcebc7ce461355e6d9478df313b084.tar.gz
linux-stable-0a7701b4defcebc7ce461355e6d9478df313b084.tar.bz2
linux-stable-0a7701b4defcebc7ce461355e6d9478df313b084.zip
libertas: fix pointer bugs for PS_MODE commands
struct cmd_ds_802_11_ps_mode contains the command header and a pointer to it was initialized with data points to the body which leads to mis-interpretation of the cmd_ds_802_11_ps_mode.action member. cmd[0] contains the header, &cmd[1] points beyond that. cmdnode->cmdbuf is a pointer to the command buffer This piece of code was unused since power saving was not enabled. Signed-off-by: Andreas Kemnade <andreas@kemnade.info> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/marvell/libertas/cmd.c')
-rw-r--r--drivers/net/wireless/marvell/libertas/cmd.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/marvell/libertas/cmd.c b/drivers/net/wireless/marvell/libertas/cmd.c
index 0387a5b380c8..40467d646270 100644
--- a/drivers/net/wireless/marvell/libertas/cmd.c
+++ b/drivers/net/wireless/marvell/libertas/cmd.c
@@ -957,7 +957,7 @@ static void lbs_queue_cmd(struct lbs_private *priv,
/* Exit_PS command needs to be queued in the header always. */
if (le16_to_cpu(cmdnode->cmdbuf->command) == CMD_802_11_PS_MODE) {
- struct cmd_ds_802_11_ps_mode *psm = (void *) &cmdnode->cmdbuf;
+ struct cmd_ds_802_11_ps_mode *psm = (void *)cmdnode->cmdbuf;
if (psm->action == cpu_to_le16(PS_MODE_ACTION_EXIT_PS)) {
if (priv->psstate != PS_STATE_FULL_POWER)
@@ -1387,7 +1387,7 @@ int lbs_execute_next_command(struct lbs_private *priv)
* PS command. Ignore it if it is not Exit_PS.
* otherwise send it down immediately.
*/
- struct cmd_ds_802_11_ps_mode *psm = (void *)&cmd[1];
+ struct cmd_ds_802_11_ps_mode *psm = (void *)cmd;
lbs_deb_host(
"EXEC_NEXT_CMD: PS cmd, action 0x%02x\n",