Commit 6a4c9ab1 authored by Sai Prakash Ranjan's avatar Sai Prakash Ranjan Committed by Kees Cook

pstore/ram: Fix console ramoops to show the previous boot logs

commit b05c9506 ("pstore/ram: Simplify ramoops_get_next_prz()
arguments") changed update assignment in getting next persistent ram zone
by adding a check for record type. But the check always returns true since
the record type is assigned 0. And this breaks console ramoops by showing
current console log instead of previous log on warm reset and hard reset
(actually hard reset should not be showing any logs).

Fix this by having persistent ram zone type check instead of record type
check. Tested this on SDM845 MTP and dragonboard 410c.

Reproducing this issue is simple as below:

1. Trigger hard reset and mount pstore. Will see console-ramoops
   record in the mounted location which is the current log.

2. Trigger warm reset and mount pstore. Will see the current
   console-ramoops record instead of previous record.

Fixes: b05c9506 ("pstore/ram: Simplify ramoops_get_next_prz() arguments")
Signed-off-by: default avatarSai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Acked-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
[kees: dropped local variable usage]
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent 1c7fc5cb
...@@ -128,7 +128,6 @@ ramoops_get_next_prz(struct persistent_ram_zone *przs[], int id, ...@@ -128,7 +128,6 @@ ramoops_get_next_prz(struct persistent_ram_zone *przs[], int id,
struct pstore_record *record) struct pstore_record *record)
{ {
struct persistent_ram_zone *prz; struct persistent_ram_zone *prz;
bool update = (record->type == PSTORE_TYPE_DMESG);
/* Give up if we never existed or have hit the end. */ /* Give up if we never existed or have hit the end. */
if (!przs) if (!przs)
...@@ -139,7 +138,7 @@ ramoops_get_next_prz(struct persistent_ram_zone *przs[], int id, ...@@ -139,7 +138,7 @@ ramoops_get_next_prz(struct persistent_ram_zone *przs[], int id,
return NULL; return NULL;
/* Update old/shadowed buffer. */ /* Update old/shadowed buffer. */
if (update) if (prz->type == PSTORE_TYPE_DMESG)
persistent_ram_save_old(prz); persistent_ram_save_old(prz);
if (!persistent_ram_old_size(prz)) if (!persistent_ram_old_size(prz))
......
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