| From b77fa617a2ff4d6beccad3d3d4b3a1f2d10368aa Mon Sep 17 00:00:00 2001 |
| From: Kees Cook <keescook@chromium.org> |
| Date: Thu, 1 Nov 2018 14:08:07 -0700 |
| Subject: pstore: Remove needless lock during console writes |
| |
| From: Kees Cook <keescook@chromium.org> |
| |
| commit b77fa617a2ff4d6beccad3d3d4b3a1f2d10368aa upstream. |
| |
| Since the console writer does not use the preallocated crash dump buffer |
| any more, there is no reason to perform locking around it. |
| |
| Fixes: 70ad35db3321 ("pstore: Convert console write to use ->write_buf") |
| Signed-off-by: Kees Cook <keescook@chromium.org> |
| Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/pstore/platform.c | 29 ++++++----------------------- |
| 1 file changed, 6 insertions(+), 23 deletions(-) |
| |
| --- a/fs/pstore/platform.c |
| +++ b/fs/pstore/platform.c |
| @@ -476,31 +476,14 @@ static void pstore_unregister_kmsg(void) |
| #ifdef CONFIG_PSTORE_CONSOLE |
| static void pstore_console_write(struct console *con, const char *s, unsigned c) |
| { |
| - const char *e = s + c; |
| + struct pstore_record record; |
| |
| - while (s < e) { |
| - struct pstore_record record; |
| - unsigned long flags; |
| + pstore_record_init(&record, psinfo); |
| + record.type = PSTORE_TYPE_CONSOLE; |
| |
| - pstore_record_init(&record, psinfo); |
| - record.type = PSTORE_TYPE_CONSOLE; |
| - |
| - if (c > psinfo->bufsize) |
| - c = psinfo->bufsize; |
| - |
| - if (oops_in_progress) { |
| - if (!spin_trylock_irqsave(&psinfo->buf_lock, flags)) |
| - break; |
| - } else { |
| - spin_lock_irqsave(&psinfo->buf_lock, flags); |
| - } |
| - record.buf = (char *)s; |
| - record.size = c; |
| - psinfo->write(&record); |
| - spin_unlock_irqrestore(&psinfo->buf_lock, flags); |
| - s += c; |
| - c = e - s; |
| - } |
| + record.buf = (char *)s; |
| + record.size = c; |
| + psinfo->write(&record); |
| } |
| |
| static struct console pstore_console = { |