pstore: Enable compression on normal path (again)
The commit f0e2efcfd2
("pstore: do not use message compression
without lock") added a check to 'is_locked' to avoid breakage in
concurrent accesses. But it has a side-effect of disabling compression
on normal path since 'is_locked' variable is not set. As normal path
always takes the lock, it should be initialized to 1.
This also makes the unlock code a bit simpler.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
parent
a1db8060f5
commit
98e44fda2e
|
@ -284,7 +284,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
|||
u64 id;
|
||||
unsigned int part = 1;
|
||||
unsigned long flags = 0;
|
||||
int is_locked = 0;
|
||||
int is_locked;
|
||||
int ret;
|
||||
|
||||
why = get_reason_str(reason);
|
||||
|
@ -295,8 +295,10 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
|||
pr_err("pstore dump routine blocked in %s path, may corrupt error record\n"
|
||||
, in_nmi() ? "NMI" : why);
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
spin_lock_irqsave(&psinfo->buf_lock, flags);
|
||||
is_locked = 1;
|
||||
}
|
||||
oopscount++;
|
||||
while (total < kmsg_bytes) {
|
||||
char *dst;
|
||||
|
@ -350,10 +352,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
|||
total += total_len;
|
||||
part++;
|
||||
}
|
||||
if (pstore_cannot_block_path(reason)) {
|
||||
if (is_locked)
|
||||
spin_unlock_irqrestore(&psinfo->buf_lock, flags);
|
||||
} else
|
||||
if (is_locked)
|
||||
spin_unlock_irqrestore(&psinfo->buf_lock, flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue