projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
22982a5
)
Memory leak in tpm_ascii_bios_measurements_open()
author
Jesper Juhl
<
[email protected]
>
Fri, 20 Jul 2007 07:31:48 +0000
(
00:31
-0700)
committer
Linus Torvalds
<
[email protected]
>
Fri, 20 Jul 2007 15:44:20 +0000
(08:44 -0700)
Coverity found a memory leak in tpm_ascii_bios_measurements_open().
If "read_log(log)" fails, then we may leak 'log' and
'log->bios_event_log'.
Signed-off-by: Jesper Juhl <
[email protected]
>
Cc: Seiji Munetoh <
[email protected]
>
Cc: Stefan Berger <
[email protected]
>
Cc: Reiner Sailer <
[email protected]
>
Cc: Kylene Hall <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
drivers/char/tpm/tpm_bios.c
patch
|
blob
|
history
diff --git
a/drivers/char/tpm/tpm_bios.c
b/drivers/char/tpm/tpm_bios.c
index 4eba32b23b297c2f15bd942292c754bcc4d7708b..4b26ce48189b73368685bb5de4ae53549ed5feda 100644
(file)
--- a/
drivers/char/tpm/tpm_bios.c
+++ b/
drivers/char/tpm/tpm_bios.c
@@
-427,7
+427,7
@@
static int tpm_ascii_bios_measurements_open(struct inode *inode,
return -ENOMEM;
if ((err = read_log(log)))
-
return err
;
+
goto out_free
;
/* now register seq file */
err = seq_open(file, &tpm_ascii_b_measurments_seqops);
@@
-435,10
+435,15
@@
static int tpm_ascii_bios_measurements_open(struct inode *inode,
seq = file->private_data;
seq->private = log;
} else {
- kfree(log->bios_event_log);
- kfree(log);
+ goto out_free;
}
+
+out:
return err;
+out_free:
+ kfree(log->bios_event_log);
+ kfree(log);
+ goto out;
}
const struct file_operations tpm_ascii_bios_measurements_ops = {