Browse Source

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
Douglas Anderson 8 years ago
parent
commit
f6525b96dd
1 changed files with 3 additions and 1 deletions
  1. 3 1
      fs/pstore/platform.c

+ 3 - 1
fs/pstore/platform.c

@@ -849,8 +849,10 @@ void pstore_get_backend_records(struct pstore_info *psi,
 		record->size = psi->read(record);
 		record->size = psi->read(record);
 
 
 		/* No more records left in backend? */
 		/* No more records left in backend? */
-		if (record->size <= 0)
+		if (record->size <= 0) {
+			kfree(record);
 			break;
 			break;
+		}
 
 
 		decompress_record(record);
 		decompress_record(record);
 		rc = pstore_mkfile(root, record);
 		rc = pstore_mkfile(root, record);