diff options
author | Yue Hu <huyue2@yulong.com> | 2019-02-01 11:27:32 +0800 |
---|---|---|
committer | Kees Cook <keescook@chromium.org> | 2019-02-12 12:38:54 -0800 |
commit | 47afd7ae65c737bfef67e9eb1424723d13b06787 (patch) | |
tree | 11a20edce466b8bbe77ecfc9fedd7bb19110dc85 /fs/pstore | |
parent | 1e0f67a96aedd0b5fbd3ae743e68a26606ea98e8 (diff) | |
download | linux-47afd7ae65c737bfef67e9eb1424723d13b06787.tar.gz linux-47afd7ae65c737bfef67e9eb1424723d13b06787.tar.bz2 linux-47afd7ae65c737bfef67e9eb1424723d13b06787.zip |
pstore/ram: Add kmsg hlen zero check to ramoops_pstore_write()
If zero-length header happened in ramoops_write_kmsg_hdr(), that means
we will not be able to read back dmesg record later, since it will be
treated as invalid header in ramoops_pstore_read(). So we should not
execute the following code but return the error.
Signed-off-by: Yue Hu <huyue2@yulong.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'fs/pstore')
-rw-r--r-- | fs/pstore/ram.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index d06e2f3e3bec..ec0e1da0596a 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -425,6 +425,9 @@ static int notrace ramoops_pstore_write(struct pstore_record *record) /* Build header and append record contents. */ hlen = ramoops_write_kmsg_hdr(prz, record); + if (!hlen) + return -ENOMEM; + size = record->size; if (size + hlen > prz->buffer_size) size = prz->buffer_size - hlen; |