Message ID | alpine.LNX.2.00.1201082338350.24030@swampdragon.chaosbits.net |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
On 01/08/2012 11:41 PM, Jesper Juhl wrote: > If the memory allocation 'nvram_ularray = kmalloc(varsize, > GFP_ATOMIC);' fails we'll leak the memory allocated to 'vbuffer' when > we return -ENOMEM from the function. > > This patch resolves the leak by kfree()'ing the allocated memory > before the return. > > Signed-off-by: Jesper Juhl <jj@chaosbits.net> Nice catch. Thanks. Acked-by: Arend van Spriel <arend@broadcom.com> Gr. AvS -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 5a002a2..f7eeee1 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c @@ -3119,8 +3119,10 @@ static int brcmf_sdbrcm_write_vars(struct brcmf_sdio *bus) /* Verify NVRAM bytes */ brcmf_dbg(INFO, "Compare NVRAM dl & ul; varsize=%d\n", varsize); nvram_ularray = kmalloc(varsize, GFP_ATOMIC); - if (!nvram_ularray) + if (!nvram_ularray) { + kfree(vbuffer); return -ENOMEM; + } /* Upload image to verify downloaded contents. */ memset(nvram_ularray, 0xaa, varsize);
If the memory allocation 'nvram_ularray = kmalloc(varsize, GFP_ATOMIC);' fails we'll leak the memory allocated to 'vbuffer' when we return -ENOMEM from the function. This patch resolves the leak by kfree()'ing the allocated memory before the return. Signed-off-by: Jesper Juhl <jj@chaosbits.net> --- drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) compile tested only.