From: Kees Cook <keesc...@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 <keesc...@chromium.org>
Reviewed-by: Joel Fernandes (Google) <j...@joelfernandes.org>
Signed-off-by: Greg Kroah-Hartman <gre...@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 = {


Reply via email to