diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-09-14 21:53:49 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-09-14 21:53:49 +0400 |
commit | 9316f0e3c6ba524d8fa14bfded048b252891931a (patch) | |
tree | 60326e5943997bb72aaf2a375f8a20c61ec7bbcd /drivers/net/wireless/mwifiex/cmdevt.c | |
parent | 7f2e6a5d8608d0353b017a0fe15502307593734e (diff) | |
parent | 7a5f799becc51c842ec1a3aeb8dd82651aea7036 (diff) | |
download | linux-9316f0e3c6ba524d8fa14bfded048b252891931a.tar.xz |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Diffstat (limited to 'drivers/net/wireless/mwifiex/cmdevt.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/cmdevt.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c index c229dddcf1c2..225c1a4feeba 100644 --- a/drivers/net/wireless/mwifiex/cmdevt.c +++ b/drivers/net/wireless/mwifiex/cmdevt.c @@ -170,7 +170,20 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv, cmd_code = le16_to_cpu(host_cmd->command); cmd_size = le16_to_cpu(host_cmd->size); - skb_trim(cmd_node->cmd_skb, cmd_size); + /* Adjust skb length */ + if (cmd_node->cmd_skb->len > cmd_size) + /* + * cmd_size is less than sizeof(struct host_cmd_ds_command). + * Trim off the unused portion. + */ + skb_trim(cmd_node->cmd_skb, cmd_size); + else if (cmd_node->cmd_skb->len < cmd_size) + /* + * cmd_size is larger than sizeof(struct host_cmd_ds_command) + * because we have appended custom IE TLV. Increase skb length + * accordingly. + */ + skb_put(cmd_node->cmd_skb, cmd_size - cmd_node->cmd_skb->len); do_gettimeofday(&tstamp); dev_dbg(adapter->dev, "cmd: DNLD_CMD: (%lu.%lu): %#x, act %#x, len %d," |