]> git.baikalelectronics.ru Git - kernel.git/commit
mwifiex: fix memory corruption when unsetting multicast list
authorDaniel Drake <dsd@laptop.org>
Fri, 14 Jun 2013 19:24:24 +0000 (15:24 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 17 Jun 2013 18:38:51 +0000 (14:38 -0400)
commit69e17dcb44341a7b61036d90c0088f37279e4d01
tree0761f683f4a31ff7cdba5c1e1ed9cfd9d1422e4e
parent37b3c76a095463be0b49db5614b99f22a81aea1a
mwifiex: fix memory corruption when unsetting multicast list

When trying to unset a previously-set multicast list (i.e. the new list
has 0 entries), mwifiex_set_multicast_list() was calling down to
mwifiex_request_set_multicast_list() while leaving
mcast_list.num_multicast_addr as an uninitialized value.

We were arriving at mwifiex_cmd_mac_multicast_adr() which would then
proceed to do an often huge memcpy of
mcast_list.num_multicast_addr*ETH_ALEN bytes, causing memory corruption
and hard to debug crashes.

Fix this by setting mcast_list.num_multicast_addr to 0 when no multicast
list is provided. Similarly, fix up the logic in
mwifiex_request_set_multicast_list() to unset the multicast list that
was previously sent to the hardware in such cases.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/main.c
drivers/net/wireless/mwifiex/sta_ioctl.c