Commit 99b3b837 authored by Qiujun Huang's avatar Qiujun Huang Committed by Kees Cook

pstore/zone: Use GFP_ATOMIC to allocate zone buffer

There is a case found when triggering a panic_on_oom, pstore fails to dump
kmsg. Because psz_kmsg_write_record can't get the new buffer.

Handle this by using GFP_ATOMIC to allocate a buffer at lower watermark.
Signed-off-by: default avatarQiujun Huang <hqjagain@gmail.com>
Fixes: 335426c6 ("pstore/zone: Provide way to skip "broken" zone for MTD devices")
Cc: WeiXiong Liao <gmpy.liaowx@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/CAJRQjofRCF7wjrYmw3D7zd5QZnwHQq+F8U-mJDJ6NZ4bddYdLA@mail.gmail.com
parent 9abf2313
...@@ -761,7 +761,7 @@ static inline int notrace psz_kmsg_write_record(struct psz_context *cxt, ...@@ -761,7 +761,7 @@ static inline int notrace psz_kmsg_write_record(struct psz_context *cxt,
/* avoid destroying old data, allocate a new one */ /* avoid destroying old data, allocate a new one */
len = zone->buffer_size + sizeof(*zone->buffer); len = zone->buffer_size + sizeof(*zone->buffer);
zone->oldbuf = zone->buffer; zone->oldbuf = zone->buffer;
zone->buffer = kzalloc(len, GFP_KERNEL); zone->buffer = kzalloc(len, GFP_ATOMIC);
if (!zone->buffer) { if (!zone->buffer) {
zone->buffer = zone->oldbuf; zone->buffer = zone->oldbuf;
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment