pstore: Fix NULL pointer dereference in console writes
Passing a NULL id causes a NULL pointer deference in writers such as erst_writer and efi_pstore_write because they expect to update this id. Pass a dummy id instead. This avoids a cascade of oopses caused when the initial pstore_console_write passes a null which in turn causes writes to the console causing further oopses in subsequent pstore_console_write calls. Signed-off-by: Colin Ian King <colin.king@canonical.com> Acked-by: Kees Cook <keescook@chromium.org> Cc: stable@vger.kernel.org Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
This commit is contained in:
parent
77b67063bb
commit
70a6f46d7b
|
@ -161,6 +161,7 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c)
|
|||
|
||||
while (s < e) {
|
||||
unsigned long flags;
|
||||
u64 id;
|
||||
|
||||
if (c > psinfo->bufsize)
|
||||
c = psinfo->bufsize;
|
||||
|
@ -172,7 +173,7 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c)
|
|||
spin_lock_irqsave(&psinfo->buf_lock, flags);
|
||||
}
|
||||
memcpy(psinfo->buf, s, c);
|
||||
psinfo->write(PSTORE_TYPE_CONSOLE, 0, NULL, 0, c, psinfo);
|
||||
psinfo->write(PSTORE_TYPE_CONSOLE, 0, &id, 0, c, psinfo);
|
||||
spin_unlock_irqrestore(&psinfo->buf_lock, flags);
|
||||
s += c;
|
||||
c = e - s;
|
||||
|
|
Loading…
Reference in New Issue