diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2015-11-18 04:48:16 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-11-24 18:25:46 -0500 |
commit | e8c77bda05e5d93cce6f38cfdde4192307951dea (patch) | |
tree | 966ff193f3eb29d69dc31face6da2f37c4191c3e /drivers/fpga/fpga-mgr.c | |
parent | 07687c031d14a1f36613231c0ea13ce3c4025615 (diff) |
fpga manager: Fix firmware resource leak on error
If fpga_mgr_buf_load() fails, the firmware resource previously allocated
by request_firmware() is leaked. Fix it by calling release_firmware()
regardless of the return value of fpga_mgr_buf_load().
Found by the Coverity scanner (CID 1339653).
Fixes: 6a8c3be7ec8e ("add FPGA manager core")
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Acked-by: Alan Tull <atull@opensource.altera.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/fpga/fpga-mgr.c')
-rw-r--r-- | drivers/fpga/fpga-mgr.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c index bfbf8aa2de04..953dc9195937 100644 --- a/drivers/fpga/fpga-mgr.c +++ b/drivers/fpga/fpga-mgr.c | |||
@@ -122,12 +122,10 @@ int fpga_mgr_firmware_load(struct fpga_manager *mgr, u32 flags, | |||
122 | } | 122 | } |
123 | 123 | ||
124 | ret = fpga_mgr_buf_load(mgr, flags, fw->data, fw->size); | 124 | ret = fpga_mgr_buf_load(mgr, flags, fw->data, fw->size); |
125 | if (ret) | ||
126 | return ret; | ||
127 | 125 | ||
128 | release_firmware(fw); | 126 | release_firmware(fw); |
129 | 127 | ||
130 | return 0; | 128 | return ret; |
131 | } | 129 | } |
132 | EXPORT_SYMBOL_GPL(fpga_mgr_firmware_load); | 130 | EXPORT_SYMBOL_GPL(fpga_mgr_firmware_load); |
133 | 131 | ||