12345678910111213141516171819202122232425262728293031323334353637 |
- From 2b7425f3629b38c438f890c20c5faeca64b144ff Mon Sep 17 00:00:00 2001
- From: Hante Meuleman <hante.meuleman@broadcom.com>
- Date: Mon, 19 Sep 2016 12:09:57 +0100
- Subject: [PATCH] brcmfmac: fix clearing entry IPv6 address
- When IPv6 address is to be cleared there is a possible out of
- bound access. But also the clearing of the last entry and the
- adjustment of total number of stored IPv6 addresses is not
- updated. This patch fixes that bug. Bug was found using coverity.
- Reviewed-by: Arend Van Spriel <arend.vanspriel@broadcom.com>
- Reviewed-by: Franky Lin <franky.lin@broadcom.com>
- Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
- Signed-off-by: Hante Meuleman <hante.meuleman@broadcom.com>
- Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- ---
- drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- @@ -873,9 +873,12 @@ static int brcmf_inet6addr_changed(struc
- }
- break;
- case NETDEV_DOWN:
- - if (i < NDOL_MAX_ENTRIES)
- - for (; i < ifp->ipv6addr_idx; i++)
- + if (i < NDOL_MAX_ENTRIES) {
- + for (; i < ifp->ipv6addr_idx - 1; i++)
- table[i] = table[i + 1];
- + memset(&table[i], 0, sizeof(table[i]));
- + ifp->ipv6addr_idx--;
- + }
- break;
- default:
- break;
|