summaryrefslogtreecommitdiffstats
path: root/drivers/staging/csr
diff options
context:
space:
mode:
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>2012-09-03 18:15:26 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-04 14:14:07 -0700
commitc8be681fad93aac2121efcd1bcff54ffe53403eb (patch)
treec6f79598674d46d6c8b345979ad93f267cd59e28 /drivers/staging/csr
parent37905ae131a728d90515bb9258f195edb6c5d5a2 (diff)
downloadlinux-c8be681fad93aac2121efcd1bcff54ffe53403eb.tar.gz
linux-c8be681fad93aac2121efcd1bcff54ffe53403eb.tar.bz2
linux-c8be681fad93aac2121efcd1bcff54ffe53403eb.zip
staging: csr: fix possible memory leak in do_patch_convert_download()
pfw has been allocated in function xbv_to_patch() and should be freed before leaving from the error handling cases. spatch with a semantic match is used to found this problem. (http://coccinelle.lip6.fr/) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/csr')
-rw-r--r--drivers/staging/csr/csr_wifi_hip_download.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/staging/csr/csr_wifi_hip_download.c b/drivers/staging/csr/csr_wifi_hip_download.c
index 8e4a4608ba5c..6db672caaa02 100644
--- a/drivers/staging/csr/csr_wifi_hip_download.c
+++ b/drivers/staging/csr/csr_wifi_hip_download.c
@@ -250,6 +250,7 @@ static CsrResult do_patch_convert_download(card_t *card, void *dlpriv, xbv1_t *p
if (r != CSR_RESULT_SUCCESS)
{
unifi_error(card->ospriv, "Failed to find BOOT_LOADER_CONTROL\n");
+ kfree(pfw);
return CSR_RESULT_FAILURE;
}
@@ -265,6 +266,7 @@ static CsrResult do_patch_convert_download(card_t *card, void *dlpriv, xbv1_t *p
desc = unifi_fw_open_buffer(card->ospriv, pfw, psize);
if (!desc)
{
+ kfree(pfw);
return CSR_WIFI_HIP_RESULT_NO_MEMORY;
}