diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2018-07-25 09:38:32 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2018-07-25 19:56:17 -0400 |
commit | 502defbb476bca222ddb5a78f2cc19c12c4e42f3 (patch) | |
tree | bca28ddb1ee758fa00fbe9aa828e6768ce71611f /drivers/fsi | |
parent | 375cac70100b58ce8f4737ec530bfbdcb3086964 (diff) |
fsi: master-ast-cf: Fix memory leak
In case memory resources for *fw* were allocated, release them
before return.
Addresses-Coverity-ID: 1472044 ("Resource leak")
Fixes: 6a794a27daca ("fsi: master-ast-cf: Add new FSI master using Aspeed ColdFire")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'drivers/fsi')
-rw-r--r-- | drivers/fsi/fsi-master-ast-cf.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/fsi/fsi-master-ast-cf.c b/drivers/fsi/fsi-master-ast-cf.c index b59abcf3ee32..6a36220e4b40 100644 --- a/drivers/fsi/fsi-master-ast-cf.c +++ b/drivers/fsi/fsi-master-ast-cf.c | |||
@@ -861,7 +861,8 @@ static int load_copro_firmware(struct fsi_master_acf *master) | |||
861 | if (sig != wanted_sig) { | 861 | if (sig != wanted_sig) { |
862 | dev_err(master->dev, "Failed to locate image sig %04x in FW blob\n", | 862 | dev_err(master->dev, "Failed to locate image sig %04x in FW blob\n", |
863 | wanted_sig); | 863 | wanted_sig); |
864 | return -ENODEV; | 864 | rc = -ENODEV; |
865 | goto release_fw; | ||
865 | } | 866 | } |
866 | if (size > master->cf_mem_size) { | 867 | if (size > master->cf_mem_size) { |
867 | dev_err(master->dev, "FW size (%zd) bigger than memory reserve (%zd)\n", | 868 | dev_err(master->dev, "FW size (%zd) bigger than memory reserve (%zd)\n", |
@@ -870,8 +871,9 @@ static int load_copro_firmware(struct fsi_master_acf *master) | |||
870 | } else { | 871 | } else { |
871 | memcpy_toio(master->cf_mem, data, size); | 872 | memcpy_toio(master->cf_mem, data, size); |
872 | } | 873 | } |
873 | release_firmware(fw); | ||
874 | 874 | ||
875 | release_fw: | ||
876 | release_firmware(fw); | ||
875 | return rc; | 877 | return rc; |
876 | } | 878 | } |
877 | 879 | ||