Commit e9eaf72e authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'pstore-v4.20-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

Pull pstore fix from Kees Cook:
 "Fix corrupted compression due to unlucky size choice with ECC"

* tag 'pstore-v4.20-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  pstore/ram: Correctly calculate usable PRZ bytes
parents 2b17992f 89d328f6
...@@ -816,17 +816,14 @@ static int ramoops_probe(struct platform_device *pdev) ...@@ -816,17 +816,14 @@ static int ramoops_probe(struct platform_device *pdev)
cxt->pstore.data = cxt; cxt->pstore.data = cxt;
/* /*
* Console can handle any buffer size, so prefer LOG_LINE_MAX. If we * Since bufsize is only used for dmesg crash dumps, it
* have to handle dumps, we must have at least record_size buffer. And * must match the size of the dprz record (after PRZ header
* for ftrace, bufsize is irrelevant (if bufsize is 0, buf will be * and ECC bytes have been accounted for).
* ZERO_SIZE_PTR).
*/ */
if (cxt->console_size) cxt->pstore.bufsize = cxt->dprzs[0]->buffer_size;
cxt->pstore.bufsize = 1024; /* LOG_LINE_MAX */ cxt->pstore.buf = kzalloc(cxt->pstore.bufsize, GFP_KERNEL);
cxt->pstore.bufsize = max(cxt->record_size, cxt->pstore.bufsize);
cxt->pstore.buf = kmalloc(cxt->pstore.bufsize, GFP_KERNEL);
if (!cxt->pstore.buf) { if (!cxt->pstore.buf) {
pr_err("cannot allocate pstore buffer\n"); pr_err("cannot allocate pstore crash dump buffer\n");
err = -ENOMEM; err = -ENOMEM;
goto fail_clear; goto fail_clear;
} }
......
...@@ -90,7 +90,10 @@ struct pstore_record { ...@@ -90,7 +90,10 @@ struct pstore_record {
* *
* @buf_lock: spinlock to serialize access to @buf * @buf_lock: spinlock to serialize access to @buf
* @buf: preallocated crash dump buffer * @buf: preallocated crash dump buffer
* @bufsize: size of @buf available for crash dump writes * @bufsize: size of @buf available for crash dump bytes (must match
* smallest number of bytes available for writing to a
* backend entry, since compressed bytes don't take kindly
* to being truncated)
* *
* @read_mutex: serializes @open, @read, @close, and @erase callbacks * @read_mutex: serializes @open, @read, @close, and @erase callbacks
* @flags: bitfield of frontends the backend can accept writes for * @flags: bitfield of frontends the backend can accept writes for
......
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