summaryrefslogtreecommitdiffstats
path: root/fs/pstore
diff options
context:
space:
mode:
authorYue Hu <huyue2@yulong.com>2019-01-31 18:12:46 +0800
committerKees Cook <keescook@chromium.org>2019-02-12 12:09:49 -0800
commit4c6c4d34536744f2c9e171ef5bb548a06a525501 (patch)
treeb796fdf12b0b4b29b9490dd157c6e40a2f8cd92a /fs/pstore
parent182ca6e0ae23550cf98d05daeab8dcb7fdc0a928 (diff)
downloadlinux-4c6c4d34536744f2c9e171ef5bb548a06a525501.tar.gz
linux-4c6c4d34536744f2c9e171ef5bb548a06a525501.tar.bz2
linux-4c6c4d34536744f2c9e171ef5bb548a06a525501.zip
pstore: Avoid writing records with zero size
Sometimes pstore_console_write() will write records with zero size to persistent ram zone, which is unnecessary. It will only increase resource consumption. Also adjust ramoops_write_kmsg_hdr() to have same logic if memory allocation fails. 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/platform.c3
-rw-r--r--fs/pstore/ram.c6
2 files changed, 7 insertions, 2 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index 2d1066ed3c28..75887a269b64 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -501,6 +501,9 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c)
{
struct pstore_record record;
+ if (!c)
+ return;
+
pstore_record_init(&record, psinfo);
record.type = PSTORE_TYPE_CONSOLE;
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index 1adb5e35c004..b2471d430048 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -352,8 +352,10 @@ static size_t ramoops_write_kmsg_hdr(struct persistent_ram_zone *prz,
(time64_t)record->time.tv_sec,
record->time.tv_nsec / 1000,
record->compressed ? 'C' : 'D');
- WARN_ON_ONCE(!hdr);
- len = hdr ? strlen(hdr) : 0;
+ if (WARN_ON_ONCE(!hdr))
+ return 0;
+
+ len = strlen(hdr);
persistent_ram_write(prz, hdr, len);
kfree(hdr);