diff options
| -rw-r--r-- | fs/pstore/platform.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 6c23eab7f76c..a40da07e93d6 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c | |||
| @@ -164,7 +164,13 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c) | |||
| 164 | 164 | ||
| 165 | if (c > psinfo->bufsize) | 165 | if (c > psinfo->bufsize) |
| 166 | c = psinfo->bufsize; | 166 | c = psinfo->bufsize; |
| 167 | spin_lock_irqsave(&psinfo->buf_lock, flags); | 167 | |
| 168 | if (oops_in_progress) { | ||
| 169 | if (!spin_trylock_irqsave(&psinfo->buf_lock, flags)) | ||
| 170 | break; | ||
| 171 | } else { | ||
| 172 | spin_lock_irqsave(&psinfo->buf_lock, flags); | ||
| 173 | } | ||
| 168 | memcpy(psinfo->buf, s, c); | 174 | memcpy(psinfo->buf, s, c); |
| 169 | psinfo->write(PSTORE_TYPE_CONSOLE, 0, NULL, 0, c, psinfo); | 175 | psinfo->write(PSTORE_TYPE_CONSOLE, 0, NULL, 0, c, psinfo); |
| 170 | spin_unlock_irqrestore(&psinfo->buf_lock, flags); | 176 | spin_unlock_irqrestore(&psinfo->buf_lock, flags); |
