diff options
author | Douglas Anderson <dianders@chromium.org> | 2017-05-30 18:50:38 -0400 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2017-05-31 13:10:09 -0400 |
commit | f6525b96dd9f68efe374e5aef864975e628de991 (patch) | |
tree | 24c125fe9c2db7712df9427715c2ec537cc22449 | |
parent | 4a16d1cb245c56e72fd40a28f3cdb394cde4b341 (diff) |
pstore: Fix leaked pstore_record in pstore_get_backend_records()
When the "if (record->size <= 0)" test is true in
pstore_get_backend_records() it's pretty clear that nobody holds a
reference to the allocated pstore_record, yet we don't free it.
Let's free it.
Fixes: 2a2b0acf768c ("pstore: Allocate records on heap instead of stack")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: stable@vger.kernel.org
-rw-r--r-- | fs/pstore/platform.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index b3045530dd4e..4c5cd9368460 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c | |||
@@ -849,8 +849,10 @@ void pstore_get_backend_records(struct pstore_info *psi, | |||
849 | record->size = psi->read(record); | 849 | record->size = psi->read(record); |
850 | 850 | ||
851 | /* No more records left in backend? */ | 851 | /* No more records left in backend? */ |
852 | if (record->size <= 0) | 852 | if (record->size <= 0) { |
853 | kfree(record); | ||
853 | break; | 854 | break; |
855 | } | ||
854 | 856 | ||
855 | decompress_record(record); | 857 | decompress_record(record); |
856 | rc = pstore_mkfile(root, record); | 858 | rc = pstore_mkfile(root, record); |