]> git.karo-electronics.de Git - linux-beck.git/blob - kernel/printk/printk.c
printk: release lockbuf_lock before calling console_trylock_for_printk()
[linux-beck.git] / kernel / printk / printk.c
1 /*
2  *  linux/kernel/printk.c
3  *
4  *  Copyright (C) 1991, 1992  Linus Torvalds
5  *
6  * Modified to make sys_syslog() more flexible: added commands to
7  * return the last 4k of kernel messages, regardless of whether
8  * they've been read or not.  Added option to suppress kernel printk's
9  * to the console.  Added hook for sending the console messages
10  * elsewhere, in preparation for a serial line console (someday).
11  * Ted Ts'o, 2/11/93.
12  * Modified for sysctl support, 1/8/97, Chris Horn.
13  * Fixed SMP synchronization, 08/08/99, Manfred Spraul
14  *     manfred@colorfullife.com
15  * Rewrote bits to get rid of console_lock
16  *      01Mar01 Andrew Morton
17  */
18
19 #include <linux/kernel.h>
20 #include <linux/mm.h>
21 #include <linux/tty.h>
22 #include <linux/tty_driver.h>
23 #include <linux/console.h>
24 #include <linux/init.h>
25 #include <linux/jiffies.h>
26 #include <linux/nmi.h>
27 #include <linux/module.h>
28 #include <linux/moduleparam.h>
29 #include <linux/interrupt.h>                    /* For in_interrupt() */
30 #include <linux/delay.h>
31 #include <linux/smp.h>
32 #include <linux/security.h>
33 #include <linux/bootmem.h>
34 #include <linux/memblock.h>
35 #include <linux/aio.h>
36 #include <linux/syscalls.h>
37 #include <linux/kexec.h>
38 #include <linux/kdb.h>
39 #include <linux/ratelimit.h>
40 #include <linux/kmsg_dump.h>
41 #include <linux/syslog.h>
42 #include <linux/cpu.h>
43 #include <linux/notifier.h>
44 #include <linux/rculist.h>
45 #include <linux/poll.h>
46 #include <linux/irq_work.h>
47 #include <linux/utsname.h>
48
49 #include <asm/uaccess.h>
50
51 #define CREATE_TRACE_POINTS
52 #include <trace/events/printk.h>
53
54 #include "console_cmdline.h"
55 #include "braille.h"
56
57 /* printk's without a loglevel use this.. */
58 #define DEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL
59
60 /* We show everything that is MORE important than this.. */
61 #define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
62 #define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */
63
64 int console_printk[4] = {
65         DEFAULT_CONSOLE_LOGLEVEL,       /* console_loglevel */
66         DEFAULT_MESSAGE_LOGLEVEL,       /* default_message_loglevel */
67         MINIMUM_CONSOLE_LOGLEVEL,       /* minimum_console_loglevel */
68         DEFAULT_CONSOLE_LOGLEVEL,       /* default_console_loglevel */
69 };
70
71 /*
72  * Low level drivers may need that to know if they can schedule in
73  * their unblank() callback or not. So let's export it.
74  */
75 int oops_in_progress;
76 EXPORT_SYMBOL(oops_in_progress);
77
78 /*
79  * console_sem protects the console_drivers list, and also
80  * provides serialisation for access to the entire console
81  * driver system.
82  */
83 static DEFINE_SEMAPHORE(console_sem);
84 struct console *console_drivers;
85 EXPORT_SYMBOL_GPL(console_drivers);
86
87 #ifdef CONFIG_LOCKDEP
88 static struct lockdep_map console_lock_dep_map = {
89         .name = "console_lock"
90 };
91 #endif
92
93 /*
94  * This is used for debugging the mess that is the VT code by
95  * keeping track if we have the console semaphore held. It's
96  * definitely not the perfect debug tool (we don't know if _WE_
97  * hold it are racing, but it helps tracking those weird code
98  * path in the console code where we end up in places I want
99  * locked without the console sempahore held
100  */
101 static int console_locked, console_suspended;
102
103 /*
104  * If exclusive_console is non-NULL then only this console is to be printed to.
105  */
106 static struct console *exclusive_console;
107
108 /*
109  *      Array of consoles built from command line options (console=)
110  */
111
112 #define MAX_CMDLINECONSOLES 8
113
114 static struct console_cmdline console_cmdline[MAX_CMDLINECONSOLES];
115
116 static int selected_console = -1;
117 static int preferred_console = -1;
118 int console_set_on_cmdline;
119 EXPORT_SYMBOL(console_set_on_cmdline);
120
121 /* Flag: console code may call schedule() */
122 static int console_may_schedule;
123
124 /*
125  * The printk log buffer consists of a chain of concatenated variable
126  * length records. Every record starts with a record header, containing
127  * the overall length of the record.
128  *
129  * The heads to the first and last entry in the buffer, as well as the
130  * sequence numbers of these both entries are maintained when messages
131  * are stored..
132  *
133  * If the heads indicate available messages, the length in the header
134  * tells the start next message. A length == 0 for the next message
135  * indicates a wrap-around to the beginning of the buffer.
136  *
137  * Every record carries the monotonic timestamp in microseconds, as well as
138  * the standard userspace syslog level and syslog facility. The usual
139  * kernel messages use LOG_KERN; userspace-injected messages always carry
140  * a matching syslog facility, by default LOG_USER. The origin of every
141  * message can be reliably determined that way.
142  *
143  * The human readable log message directly follows the message header. The
144  * length of the message text is stored in the header, the stored message
145  * is not terminated.
146  *
147  * Optionally, a message can carry a dictionary of properties (key/value pairs),
148  * to provide userspace with a machine-readable message context.
149  *
150  * Examples for well-defined, commonly used property names are:
151  *   DEVICE=b12:8               device identifier
152  *                                b12:8         block dev_t
153  *                                c127:3        char dev_t
154  *                                n8            netdev ifindex
155  *                                +sound:card0  subsystem:devname
156  *   SUBSYSTEM=pci              driver-core subsystem name
157  *
158  * Valid characters in property names are [a-zA-Z0-9.-_]. The plain text value
159  * follows directly after a '=' character. Every property is terminated by
160  * a '\0' character. The last property is not terminated.
161  *
162  * Example of a message structure:
163  *   0000  ff 8f 00 00 00 00 00 00      monotonic time in nsec
164  *   0008  34 00                        record is 52 bytes long
165  *   000a        0b 00                  text is 11 bytes long
166  *   000c              1f 00            dictionary is 23 bytes long
167  *   000e                    03 00      LOG_KERN (facility) LOG_ERR (level)
168  *   0010  69 74 27 73 20 61 20 6c      "it's a l"
169  *         69 6e 65                     "ine"
170  *   001b           44 45 56 49 43      "DEVIC"
171  *         45 3d 62 38 3a 32 00 44      "E=b8:2\0D"
172  *         52 49 56 45 52 3d 62 75      "RIVER=bu"
173  *         67                           "g"
174  *   0032     00 00 00                  padding to next message header
175  *
176  * The 'struct printk_log' buffer header must never be directly exported to
177  * userspace, it is a kernel-private implementation detail that might
178  * need to be changed in the future, when the requirements change.
179  *
180  * /dev/kmsg exports the structured data in the following line format:
181  *   "level,sequnum,timestamp;<message text>\n"
182  *
183  * The optional key/value pairs are attached as continuation lines starting
184  * with a space character and terminated by a newline. All possible
185  * non-prinatable characters are escaped in the "\xff" notation.
186  *
187  * Users of the export format should ignore possible additional values
188  * separated by ',', and find the message after the ';' character.
189  */
190
191 enum log_flags {
192         LOG_NOCONS      = 1,    /* already flushed, do not print to console */
193         LOG_NEWLINE     = 2,    /* text ended with a newline */
194         LOG_PREFIX      = 4,    /* text started with a prefix */
195         LOG_CONT        = 8,    /* text is a fragment of a continuation line */
196 };
197
198 struct printk_log {
199         u64 ts_nsec;            /* timestamp in nanoseconds */
200         u16 len;                /* length of entire record */
201         u16 text_len;           /* length of text buffer */
202         u16 dict_len;           /* length of dictionary buffer */
203         u8 facility;            /* syslog facility */
204         u8 flags:5;             /* internal record flags */
205         u8 level:3;             /* syslog level */
206 };
207
208 /*
209  * The logbuf_lock protects kmsg buffer, indices, counters.
210  */
211 static DEFINE_RAW_SPINLOCK(logbuf_lock);
212
213 #ifdef CONFIG_PRINTK
214 DECLARE_WAIT_QUEUE_HEAD(log_wait);
215 /* the next printk record to read by syslog(READ) or /proc/kmsg */
216 static u64 syslog_seq;
217 static u32 syslog_idx;
218 static enum log_flags syslog_prev;
219 static size_t syslog_partial;
220
221 /* index and sequence number of the first record stored in the buffer */
222 static u64 log_first_seq;
223 static u32 log_first_idx;
224
225 /* index and sequence number of the next record to store in the buffer */
226 static u64 log_next_seq;
227 static u32 log_next_idx;
228
229 /* the next printk record to write to the console */
230 static u64 console_seq;
231 static u32 console_idx;
232 static enum log_flags console_prev;
233
234 /* the next printk record to read after the last 'clear' command */
235 static u64 clear_seq;
236 static u32 clear_idx;
237
238 #define PREFIX_MAX              32
239 #define LOG_LINE_MAX            1024 - PREFIX_MAX
240
241 /* record buffer */
242 #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
243 #define LOG_ALIGN 4
244 #else
245 #define LOG_ALIGN __alignof__(struct printk_log)
246 #endif
247 #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
248 static char __log_buf[__LOG_BUF_LEN] __aligned(LOG_ALIGN);
249 static char *log_buf = __log_buf;
250 static u32 log_buf_len = __LOG_BUF_LEN;
251
252 /* human readable text of the record */
253 static char *log_text(const struct printk_log *msg)
254 {
255         return (char *)msg + sizeof(struct printk_log);
256 }
257
258 /* optional key/value pair dictionary attached to the record */
259 static char *log_dict(const struct printk_log *msg)
260 {
261         return (char *)msg + sizeof(struct printk_log) + msg->text_len;
262 }
263
264 /* get record by index; idx must point to valid msg */
265 static struct printk_log *log_from_idx(u32 idx)
266 {
267         struct printk_log *msg = (struct printk_log *)(log_buf + idx);
268
269         /*
270          * A length == 0 record is the end of buffer marker. Wrap around and
271          * read the message at the start of the buffer.
272          */
273         if (!msg->len)
274                 return (struct printk_log *)log_buf;
275         return msg;
276 }
277
278 /* get next record; idx must point to valid msg */
279 static u32 log_next(u32 idx)
280 {
281         struct printk_log *msg = (struct printk_log *)(log_buf + idx);
282
283         /* length == 0 indicates the end of the buffer; wrap */
284         /*
285          * A length == 0 record is the end of buffer marker. Wrap around and
286          * read the message at the start of the buffer as *this* one, and
287          * return the one after that.
288          */
289         if (!msg->len) {
290                 msg = (struct printk_log *)log_buf;
291                 return msg->len;
292         }
293         return idx + msg->len;
294 }
295
296 /*
297  * Check whether there is enough free space for the given message.
298  *
299  * The same values of first_idx and next_idx mean that the buffer
300  * is either empty or full.
301  *
302  * If the buffer is empty, we must respect the position of the indexes.
303  * They cannot be reset to the beginning of the buffer.
304  */
305 static int logbuf_has_space(u32 msg_size, bool empty)
306 {
307         u32 free;
308
309         if (log_next_idx > log_first_idx || empty)
310                 free = max(log_buf_len - log_next_idx, log_first_idx);
311         else
312                 free = log_first_idx - log_next_idx;
313
314         /*
315          * We need space also for an empty header that signalizes wrapping
316          * of the buffer.
317          */
318         return free >= msg_size + sizeof(struct printk_log);
319 }
320
321 static int log_make_free_space(u32 msg_size)
322 {
323         while (log_first_seq < log_next_seq) {
324                 if (logbuf_has_space(msg_size, false))
325                         return 0;
326                 /* drop old messages until we have enough continuous space */
327                 log_first_idx = log_next(log_first_idx);
328                 log_first_seq++;
329         }
330
331         /* sequence numbers are equal, so the log buffer is empty */
332         if (logbuf_has_space(msg_size, true))
333                 return 0;
334
335         return -ENOMEM;
336 }
337
338 /* compute the message size including the padding bytes */
339 static u32 msg_used_size(u16 text_len, u16 dict_len, u32 *pad_len)
340 {
341         u32 size;
342
343         size = sizeof(struct printk_log) + text_len + dict_len;
344         *pad_len = (-size) & (LOG_ALIGN - 1);
345         size += *pad_len;
346
347         return size;
348 }
349
350 /*
351  * Define how much of the log buffer we could take at maximum. The value
352  * must be greater than two. Note that only half of the buffer is available
353  * when the index points to the middle.
354  */
355 #define MAX_LOG_TAKE_PART 4
356 static const char trunc_msg[] = "<truncated>";
357
358 static u32 truncate_msg(u16 *text_len, u16 *trunc_msg_len,
359                         u16 *dict_len, u32 *pad_len)
360 {
361         /*
362          * The message should not take the whole buffer. Otherwise, it might
363          * get removed too soon.
364          */
365         u32 max_text_len = log_buf_len / MAX_LOG_TAKE_PART;
366         if (*text_len > max_text_len)
367                 *text_len = max_text_len;
368         /* enable the warning message */
369         *trunc_msg_len = strlen(trunc_msg);
370         /* disable the "dict" completely */
371         *dict_len = 0;
372         /* compute the size again, count also the warning message */
373         return msg_used_size(*text_len + *trunc_msg_len, 0, pad_len);
374 }
375
376 /* insert record into the buffer, discard old ones, update heads */
377 static int log_store(int facility, int level,
378                      enum log_flags flags, u64 ts_nsec,
379                      const char *dict, u16 dict_len,
380                      const char *text, u16 text_len)
381 {
382         struct printk_log *msg;
383         u32 size, pad_len;
384         u16 trunc_msg_len = 0;
385
386         /* number of '\0' padding bytes to next message */
387         size = msg_used_size(text_len, dict_len, &pad_len);
388
389         if (log_make_free_space(size)) {
390                 /* truncate the message if it is too long for empty buffer */
391                 size = truncate_msg(&text_len, &trunc_msg_len,
392                                     &dict_len, &pad_len);
393                 /* survive when the log buffer is too small for trunc_msg */
394                 if (log_make_free_space(size))
395                         return 0;
396         }
397
398         if (log_next_idx + size + sizeof(struct printk_log) > log_buf_len) {
399                 /*
400                  * This message + an additional empty header does not fit
401                  * at the end of the buffer. Add an empty header with len == 0
402                  * to signify a wrap around.
403                  */
404                 memset(log_buf + log_next_idx, 0, sizeof(struct printk_log));
405                 log_next_idx = 0;
406         }
407
408         /* fill message */
409         msg = (struct printk_log *)(log_buf + log_next_idx);
410         memcpy(log_text(msg), text, text_len);
411         msg->text_len = text_len;
412         if (trunc_msg_len) {
413                 memcpy(log_text(msg) + text_len, trunc_msg, trunc_msg_len);
414                 msg->text_len += trunc_msg_len;
415         }
416         memcpy(log_dict(msg), dict, dict_len);
417         msg->dict_len = dict_len;
418         msg->facility = facility;
419         msg->level = level & 7;
420         msg->flags = flags & 0x1f;
421         if (ts_nsec > 0)
422                 msg->ts_nsec = ts_nsec;
423         else
424                 msg->ts_nsec = local_clock();
425         memset(log_dict(msg) + dict_len, 0, pad_len);
426         msg->len = size;
427
428         /* insert message */
429         log_next_idx += msg->len;
430         log_next_seq++;
431
432         return msg->text_len;
433 }
434
435 #ifdef CONFIG_SECURITY_DMESG_RESTRICT
436 int dmesg_restrict = 1;
437 #else
438 int dmesg_restrict;
439 #endif
440
441 static int syslog_action_restricted(int type)
442 {
443         if (dmesg_restrict)
444                 return 1;
445         /*
446          * Unless restricted, we allow "read all" and "get buffer size"
447          * for everybody.
448          */
449         return type != SYSLOG_ACTION_READ_ALL &&
450                type != SYSLOG_ACTION_SIZE_BUFFER;
451 }
452
453 static int check_syslog_permissions(int type, bool from_file)
454 {
455         /*
456          * If this is from /proc/kmsg and we've already opened it, then we've
457          * already done the capabilities checks at open time.
458          */
459         if (from_file && type != SYSLOG_ACTION_OPEN)
460                 return 0;
461
462         if (syslog_action_restricted(type)) {
463                 if (capable(CAP_SYSLOG))
464                         return 0;
465                 /*
466                  * For historical reasons, accept CAP_SYS_ADMIN too, with
467                  * a warning.
468                  */
469                 if (capable(CAP_SYS_ADMIN)) {
470                         pr_warn_once("%s (%d): Attempt to access syslog with "
471                                      "CAP_SYS_ADMIN but no CAP_SYSLOG "
472                                      "(deprecated).\n",
473                                  current->comm, task_pid_nr(current));
474                         return 0;
475                 }
476                 return -EPERM;
477         }
478         return security_syslog(type);
479 }
480
481
482 /* /dev/kmsg - userspace message inject/listen interface */
483 struct devkmsg_user {
484         u64 seq;
485         u32 idx;
486         enum log_flags prev;
487         struct mutex lock;
488         char buf[8192];
489 };
490
491 static ssize_t devkmsg_writev(struct kiocb *iocb, const struct iovec *iv,
492                               unsigned long count, loff_t pos)
493 {
494         char *buf, *line;
495         int i;
496         int level = default_message_loglevel;
497         int facility = 1;       /* LOG_USER */
498         size_t len = iov_length(iv, count);
499         ssize_t ret = len;
500
501         if (len > LOG_LINE_MAX)
502                 return -EINVAL;
503         buf = kmalloc(len+1, GFP_KERNEL);
504         if (buf == NULL)
505                 return -ENOMEM;
506
507         line = buf;
508         for (i = 0; i < count; i++) {
509                 if (copy_from_user(line, iv[i].iov_base, iv[i].iov_len)) {
510                         ret = -EFAULT;
511                         goto out;
512                 }
513                 line += iv[i].iov_len;
514         }
515
516         /*
517          * Extract and skip the syslog prefix <[0-9]*>. Coming from userspace
518          * the decimal value represents 32bit, the lower 3 bit are the log
519          * level, the rest are the log facility.
520          *
521          * If no prefix or no userspace facility is specified, we
522          * enforce LOG_USER, to be able to reliably distinguish
523          * kernel-generated messages from userspace-injected ones.
524          */
525         line = buf;
526         if (line[0] == '<') {
527                 char *endp = NULL;
528
529                 i = simple_strtoul(line+1, &endp, 10);
530                 if (endp && endp[0] == '>') {
531                         level = i & 7;
532                         if (i >> 3)
533                                 facility = i >> 3;
534                         endp++;
535                         len -= endp - line;
536                         line = endp;
537                 }
538         }
539         line[len] = '\0';
540
541         printk_emit(facility, level, NULL, 0, "%s", line);
542 out:
543         kfree(buf);
544         return ret;
545 }
546
547 static ssize_t devkmsg_read(struct file *file, char __user *buf,
548                             size_t count, loff_t *ppos)
549 {
550         struct devkmsg_user *user = file->private_data;
551         struct printk_log *msg;
552         u64 ts_usec;
553         size_t i;
554         char cont = '-';
555         size_t len;
556         ssize_t ret;
557
558         if (!user)
559                 return -EBADF;
560
561         ret = mutex_lock_interruptible(&user->lock);
562         if (ret)
563                 return ret;
564         raw_spin_lock_irq(&logbuf_lock);
565         while (user->seq == log_next_seq) {
566                 if (file->f_flags & O_NONBLOCK) {
567                         ret = -EAGAIN;
568                         raw_spin_unlock_irq(&logbuf_lock);
569                         goto out;
570                 }
571
572                 raw_spin_unlock_irq(&logbuf_lock);
573                 ret = wait_event_interruptible(log_wait,
574                                                user->seq != log_next_seq);
575                 if (ret)
576                         goto out;
577                 raw_spin_lock_irq(&logbuf_lock);
578         }
579
580         if (user->seq < log_first_seq) {
581                 /* our last seen message is gone, return error and reset */
582                 user->idx = log_first_idx;
583                 user->seq = log_first_seq;
584                 ret = -EPIPE;
585                 raw_spin_unlock_irq(&logbuf_lock);
586                 goto out;
587         }
588
589         msg = log_from_idx(user->idx);
590         ts_usec = msg->ts_nsec;
591         do_div(ts_usec, 1000);
592
593         /*
594          * If we couldn't merge continuation line fragments during the print,
595          * export the stored flags to allow an optional external merge of the
596          * records. Merging the records isn't always neccessarily correct, like
597          * when we hit a race during printing. In most cases though, it produces
598          * better readable output. 'c' in the record flags mark the first
599          * fragment of a line, '+' the following.
600          */
601         if (msg->flags & LOG_CONT && !(user->prev & LOG_CONT))
602                 cont = 'c';
603         else if ((msg->flags & LOG_CONT) ||
604                  ((user->prev & LOG_CONT) && !(msg->flags & LOG_PREFIX)))
605                 cont = '+';
606
607         len = sprintf(user->buf, "%u,%llu,%llu,%c;",
608                       (msg->facility << 3) | msg->level,
609                       user->seq, ts_usec, cont);
610         user->prev = msg->flags;
611
612         /* escape non-printable characters */
613         for (i = 0; i < msg->text_len; i++) {
614                 unsigned char c = log_text(msg)[i];
615
616                 if (c < ' ' || c >= 127 || c == '\\')
617                         len += sprintf(user->buf + len, "\\x%02x", c);
618                 else
619                         user->buf[len++] = c;
620         }
621         user->buf[len++] = '\n';
622
623         if (msg->dict_len) {
624                 bool line = true;
625
626                 for (i = 0; i < msg->dict_len; i++) {
627                         unsigned char c = log_dict(msg)[i];
628
629                         if (line) {
630                                 user->buf[len++] = ' ';
631                                 line = false;
632                         }
633
634                         if (c == '\0') {
635                                 user->buf[len++] = '\n';
636                                 line = true;
637                                 continue;
638                         }
639
640                         if (c < ' ' || c >= 127 || c == '\\') {
641                                 len += sprintf(user->buf + len, "\\x%02x", c);
642                                 continue;
643                         }
644
645                         user->buf[len++] = c;
646                 }
647                 user->buf[len++] = '\n';
648         }
649
650         user->idx = log_next(user->idx);
651         user->seq++;
652         raw_spin_unlock_irq(&logbuf_lock);
653
654         if (len > count) {
655                 ret = -EINVAL;
656                 goto out;
657         }
658
659         if (copy_to_user(buf, user->buf, len)) {
660                 ret = -EFAULT;
661                 goto out;
662         }
663         ret = len;
664 out:
665         mutex_unlock(&user->lock);
666         return ret;
667 }
668
669 static loff_t devkmsg_llseek(struct file *file, loff_t offset, int whence)
670 {
671         struct devkmsg_user *user = file->private_data;
672         loff_t ret = 0;
673
674         if (!user)
675                 return -EBADF;
676         if (offset)
677                 return -ESPIPE;
678
679         raw_spin_lock_irq(&logbuf_lock);
680         switch (whence) {
681         case SEEK_SET:
682                 /* the first record */
683                 user->idx = log_first_idx;
684                 user->seq = log_first_seq;
685                 break;
686         case SEEK_DATA:
687                 /*
688                  * The first record after the last SYSLOG_ACTION_CLEAR,
689                  * like issued by 'dmesg -c'. Reading /dev/kmsg itself
690                  * changes no global state, and does not clear anything.
691                  */
692                 user->idx = clear_idx;
693                 user->seq = clear_seq;
694                 break;
695         case SEEK_END:
696                 /* after the last record */
697                 user->idx = log_next_idx;
698                 user->seq = log_next_seq;
699                 break;
700         default:
701                 ret = -EINVAL;
702         }
703         raw_spin_unlock_irq(&logbuf_lock);
704         return ret;
705 }
706
707 static unsigned int devkmsg_poll(struct file *file, poll_table *wait)
708 {
709         struct devkmsg_user *user = file->private_data;
710         int ret = 0;
711
712         if (!user)
713                 return POLLERR|POLLNVAL;
714
715         poll_wait(file, &log_wait, wait);
716
717         raw_spin_lock_irq(&logbuf_lock);
718         if (user->seq < log_next_seq) {
719                 /* return error when data has vanished underneath us */
720                 if (user->seq < log_first_seq)
721                         ret = POLLIN|POLLRDNORM|POLLERR|POLLPRI;
722                 else
723                         ret = POLLIN|POLLRDNORM;
724         }
725         raw_spin_unlock_irq(&logbuf_lock);
726
727         return ret;
728 }
729
730 static int devkmsg_open(struct inode *inode, struct file *file)
731 {
732         struct devkmsg_user *user;
733         int err;
734
735         /* write-only does not need any file context */
736         if ((file->f_flags & O_ACCMODE) == O_WRONLY)
737                 return 0;
738
739         err = check_syslog_permissions(SYSLOG_ACTION_READ_ALL,
740                                        SYSLOG_FROM_READER);
741         if (err)
742                 return err;
743
744         user = kmalloc(sizeof(struct devkmsg_user), GFP_KERNEL);
745         if (!user)
746                 return -ENOMEM;
747
748         mutex_init(&user->lock);
749
750         raw_spin_lock_irq(&logbuf_lock);
751         user->idx = log_first_idx;
752         user->seq = log_first_seq;
753         raw_spin_unlock_irq(&logbuf_lock);
754
755         file->private_data = user;
756         return 0;
757 }
758
759 static int devkmsg_release(struct inode *inode, struct file *file)
760 {
761         struct devkmsg_user *user = file->private_data;
762
763         if (!user)
764                 return 0;
765
766         mutex_destroy(&user->lock);
767         kfree(user);
768         return 0;
769 }
770
771 const struct file_operations kmsg_fops = {
772         .open = devkmsg_open,
773         .read = devkmsg_read,
774         .aio_write = devkmsg_writev,
775         .llseek = devkmsg_llseek,
776         .poll = devkmsg_poll,
777         .release = devkmsg_release,
778 };
779
780 #ifdef CONFIG_KEXEC
781 /*
782  * This appends the listed symbols to /proc/vmcore
783  *
784  * /proc/vmcore is used by various utilities, like crash and makedumpfile to
785  * obtain access to symbols that are otherwise very difficult to locate.  These
786  * symbols are specifically used so that utilities can access and extract the
787  * dmesg log from a vmcore file after a crash.
788  */
789 void log_buf_kexec_setup(void)
790 {
791         VMCOREINFO_SYMBOL(log_buf);
792         VMCOREINFO_SYMBOL(log_buf_len);
793         VMCOREINFO_SYMBOL(log_first_idx);
794         VMCOREINFO_SYMBOL(log_next_idx);
795         /*
796          * Export struct printk_log size and field offsets. User space tools can
797          * parse it and detect any changes to structure down the line.
798          */
799         VMCOREINFO_STRUCT_SIZE(printk_log);
800         VMCOREINFO_OFFSET(printk_log, ts_nsec);
801         VMCOREINFO_OFFSET(printk_log, len);
802         VMCOREINFO_OFFSET(printk_log, text_len);
803         VMCOREINFO_OFFSET(printk_log, dict_len);
804 }
805 #endif
806
807 /* requested log_buf_len from kernel cmdline */
808 static unsigned long __initdata new_log_buf_len;
809
810 /* save requested log_buf_len since it's too early to process it */
811 static int __init log_buf_len_setup(char *str)
812 {
813         unsigned size = memparse(str, &str);
814
815         if (size)
816                 size = roundup_pow_of_two(size);
817         if (size > log_buf_len)
818                 new_log_buf_len = size;
819
820         return 0;
821 }
822 early_param("log_buf_len", log_buf_len_setup);
823
824 void __init setup_log_buf(int early)
825 {
826         unsigned long flags;
827         char *new_log_buf;
828         int free;
829
830         if (!new_log_buf_len)
831                 return;
832
833         if (early) {
834                 new_log_buf =
835                         memblock_virt_alloc(new_log_buf_len, PAGE_SIZE);
836         } else {
837                 new_log_buf = memblock_virt_alloc_nopanic(new_log_buf_len, 0);
838         }
839
840         if (unlikely(!new_log_buf)) {
841                 pr_err("log_buf_len: %ld bytes not available\n",
842                         new_log_buf_len);
843                 return;
844         }
845
846         raw_spin_lock_irqsave(&logbuf_lock, flags);
847         log_buf_len = new_log_buf_len;
848         log_buf = new_log_buf;
849         new_log_buf_len = 0;
850         free = __LOG_BUF_LEN - log_next_idx;
851         memcpy(log_buf, __log_buf, __LOG_BUF_LEN);
852         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
853
854         pr_info("log_buf_len: %d\n", log_buf_len);
855         pr_info("early log buf free: %d(%d%%)\n",
856                 free, (free * 100) / __LOG_BUF_LEN);
857 }
858
859 static bool __read_mostly ignore_loglevel;
860
861 static int __init ignore_loglevel_setup(char *str)
862 {
863         ignore_loglevel = 1;
864         pr_info("debug: ignoring loglevel setting.\n");
865
866         return 0;
867 }
868
869 early_param("ignore_loglevel", ignore_loglevel_setup);
870 module_param(ignore_loglevel, bool, S_IRUGO | S_IWUSR);
871 MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to"
872         "print all kernel messages to the console.");
873
874 #ifdef CONFIG_BOOT_PRINTK_DELAY
875
876 static int boot_delay; /* msecs delay after each printk during bootup */
877 static unsigned long long loops_per_msec;       /* based on boot_delay */
878
879 static int __init boot_delay_setup(char *str)
880 {
881         unsigned long lpj;
882
883         lpj = preset_lpj ? preset_lpj : 1000000;        /* some guess */
884         loops_per_msec = (unsigned long long)lpj / 1000 * HZ;
885
886         get_option(&str, &boot_delay);
887         if (boot_delay > 10 * 1000)
888                 boot_delay = 0;
889
890         pr_debug("boot_delay: %u, preset_lpj: %ld, lpj: %lu, "
891                 "HZ: %d, loops_per_msec: %llu\n",
892                 boot_delay, preset_lpj, lpj, HZ, loops_per_msec);
893         return 0;
894 }
895 early_param("boot_delay", boot_delay_setup);
896
897 static void boot_delay_msec(int level)
898 {
899         unsigned long long k;
900         unsigned long timeout;
901
902         if ((boot_delay == 0 || system_state != SYSTEM_BOOTING)
903                 || (level >= console_loglevel && !ignore_loglevel)) {
904                 return;
905         }
906
907         k = (unsigned long long)loops_per_msec * boot_delay;
908
909         timeout = jiffies + msecs_to_jiffies(boot_delay);
910         while (k) {
911                 k--;
912                 cpu_relax();
913                 /*
914                  * use (volatile) jiffies to prevent
915                  * compiler reduction; loop termination via jiffies
916                  * is secondary and may or may not happen.
917                  */
918                 if (time_after(jiffies, timeout))
919                         break;
920                 touch_nmi_watchdog();
921         }
922 }
923 #else
924 static inline void boot_delay_msec(int level)
925 {
926 }
927 #endif
928
929 #if defined(CONFIG_PRINTK_TIME)
930 static bool printk_time = 1;
931 #else
932 static bool printk_time;
933 #endif
934 module_param_named(time, printk_time, bool, S_IRUGO | S_IWUSR);
935
936 static size_t print_time(u64 ts, char *buf)
937 {
938         unsigned long rem_nsec;
939
940         if (!printk_time)
941                 return 0;
942
943         rem_nsec = do_div(ts, 1000000000);
944
945         if (!buf)
946                 return snprintf(NULL, 0, "[%5lu.000000] ", (unsigned long)ts);
947
948         return sprintf(buf, "[%5lu.%06lu] ",
949                        (unsigned long)ts, rem_nsec / 1000);
950 }
951
952 static size_t print_prefix(const struct printk_log *msg, bool syslog, char *buf)
953 {
954         size_t len = 0;
955         unsigned int prefix = (msg->facility << 3) | msg->level;
956
957         if (syslog) {
958                 if (buf) {
959                         len += sprintf(buf, "<%u>", prefix);
960                 } else {
961                         len += 3;
962                         if (prefix > 999)
963                                 len += 3;
964                         else if (prefix > 99)
965                                 len += 2;
966                         else if (prefix > 9)
967                                 len++;
968                 }
969         }
970
971         len += print_time(msg->ts_nsec, buf ? buf + len : NULL);
972         return len;
973 }
974
975 static size_t msg_print_text(const struct printk_log *msg, enum log_flags prev,
976                              bool syslog, char *buf, size_t size)
977 {
978         const char *text = log_text(msg);
979         size_t text_size = msg->text_len;
980         bool prefix = true;
981         bool newline = true;
982         size_t len = 0;
983
984         if ((prev & LOG_CONT) && !(msg->flags & LOG_PREFIX))
985                 prefix = false;
986
987         if (msg->flags & LOG_CONT) {
988                 if ((prev & LOG_CONT) && !(prev & LOG_NEWLINE))
989                         prefix = false;
990
991                 if (!(msg->flags & LOG_NEWLINE))
992                         newline = false;
993         }
994
995         do {
996                 const char *next = memchr(text, '\n', text_size);
997                 size_t text_len;
998
999                 if (next) {
1000                         text_len = next - text;
1001                         next++;
1002                         text_size -= next - text;
1003                 } else {
1004                         text_len = text_size;
1005                 }
1006
1007                 if (buf) {
1008                         if (print_prefix(msg, syslog, NULL) +
1009                             text_len + 1 >= size - len)
1010                                 break;
1011
1012                         if (prefix)
1013                                 len += print_prefix(msg, syslog, buf + len);
1014                         memcpy(buf + len, text, text_len);
1015                         len += text_len;
1016                         if (next || newline)
1017                                 buf[len++] = '\n';
1018                 } else {
1019                         /* SYSLOG_ACTION_* buffer size only calculation */
1020                         if (prefix)
1021                                 len += print_prefix(msg, syslog, NULL);
1022                         len += text_len;
1023                         if (next || newline)
1024                                 len++;
1025                 }
1026
1027                 prefix = true;
1028                 text = next;
1029         } while (text);
1030
1031         return len;
1032 }
1033
1034 static int syslog_print(char __user *buf, int size)
1035 {
1036         char *text;
1037         struct printk_log *msg;
1038         int len = 0;
1039
1040         text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL);
1041         if (!text)
1042                 return -ENOMEM;
1043
1044         while (size > 0) {
1045                 size_t n;
1046                 size_t skip;
1047
1048                 raw_spin_lock_irq(&logbuf_lock);
1049                 if (syslog_seq < log_first_seq) {
1050                         /* messages are gone, move to first one */
1051                         syslog_seq = log_first_seq;
1052                         syslog_idx = log_first_idx;
1053                         syslog_prev = 0;
1054                         syslog_partial = 0;
1055                 }
1056                 if (syslog_seq == log_next_seq) {
1057                         raw_spin_unlock_irq(&logbuf_lock);
1058                         break;
1059                 }
1060
1061                 skip = syslog_partial;
1062                 msg = log_from_idx(syslog_idx);
1063                 n = msg_print_text(msg, syslog_prev, true, text,
1064                                    LOG_LINE_MAX + PREFIX_MAX);
1065                 if (n - syslog_partial <= size) {
1066                         /* message fits into buffer, move forward */
1067                         syslog_idx = log_next(syslog_idx);
1068                         syslog_seq++;
1069                         syslog_prev = msg->flags;
1070                         n -= syslog_partial;
1071                         syslog_partial = 0;
1072                 } else if (!len){
1073                         /* partial read(), remember position */
1074                         n = size;
1075                         syslog_partial += n;
1076                 } else
1077                         n = 0;
1078                 raw_spin_unlock_irq(&logbuf_lock);
1079
1080                 if (!n)
1081                         break;
1082
1083                 if (copy_to_user(buf, text + skip, n)) {
1084                         if (!len)
1085                                 len = -EFAULT;
1086                         break;
1087                 }
1088
1089                 len += n;
1090                 size -= n;
1091                 buf += n;
1092         }
1093
1094         kfree(text);
1095         return len;
1096 }
1097
1098 static int syslog_print_all(char __user *buf, int size, bool clear)
1099 {
1100         char *text;
1101         int len = 0;
1102
1103         text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL);
1104         if (!text)
1105                 return -ENOMEM;
1106
1107         raw_spin_lock_irq(&logbuf_lock);
1108         if (buf) {
1109                 u64 next_seq;
1110                 u64 seq;
1111                 u32 idx;
1112                 enum log_flags prev;
1113
1114                 if (clear_seq < log_first_seq) {
1115                         /* messages are gone, move to first available one */
1116                         clear_seq = log_first_seq;
1117                         clear_idx = log_first_idx;
1118                 }
1119
1120                 /*
1121                  * Find first record that fits, including all following records,
1122                  * into the user-provided buffer for this dump.
1123                  */
1124                 seq = clear_seq;
1125                 idx = clear_idx;
1126                 prev = 0;
1127                 while (seq < log_next_seq) {
1128                         struct printk_log *msg = log_from_idx(idx);
1129
1130                         len += msg_print_text(msg, prev, true, NULL, 0);
1131                         prev = msg->flags;
1132                         idx = log_next(idx);
1133                         seq++;
1134                 }
1135
1136                 /* move first record forward until length fits into the buffer */
1137                 seq = clear_seq;
1138                 idx = clear_idx;
1139                 prev = 0;
1140                 while (len > size && seq < log_next_seq) {
1141                         struct printk_log *msg = log_from_idx(idx);
1142
1143                         len -= msg_print_text(msg, prev, true, NULL, 0);
1144                         prev = msg->flags;
1145                         idx = log_next(idx);
1146                         seq++;
1147                 }
1148
1149                 /* last message fitting into this dump */
1150                 next_seq = log_next_seq;
1151
1152                 len = 0;
1153                 while (len >= 0 && seq < next_seq) {
1154                         struct printk_log *msg = log_from_idx(idx);
1155                         int textlen;
1156
1157                         textlen = msg_print_text(msg, prev, true, text,
1158                                                  LOG_LINE_MAX + PREFIX_MAX);
1159                         if (textlen < 0) {
1160                                 len = textlen;
1161                                 break;
1162                         }
1163                         idx = log_next(idx);
1164                         seq++;
1165                         prev = msg->flags;
1166
1167                         raw_spin_unlock_irq(&logbuf_lock);
1168                         if (copy_to_user(buf + len, text, textlen))
1169                                 len = -EFAULT;
1170                         else
1171                                 len += textlen;
1172                         raw_spin_lock_irq(&logbuf_lock);
1173
1174                         if (seq < log_first_seq) {
1175                                 /* messages are gone, move to next one */
1176                                 seq = log_first_seq;
1177                                 idx = log_first_idx;
1178                                 prev = 0;
1179                         }
1180                 }
1181         }
1182
1183         if (clear) {
1184                 clear_seq = log_next_seq;
1185                 clear_idx = log_next_idx;
1186         }
1187         raw_spin_unlock_irq(&logbuf_lock);
1188
1189         kfree(text);
1190         return len;
1191 }
1192
1193 int do_syslog(int type, char __user *buf, int len, bool from_file)
1194 {
1195         bool clear = false;
1196         static int saved_console_loglevel = -1;
1197         int error;
1198
1199         error = check_syslog_permissions(type, from_file);
1200         if (error)
1201                 goto out;
1202
1203         error = security_syslog(type);
1204         if (error)
1205                 return error;
1206
1207         switch (type) {
1208         case SYSLOG_ACTION_CLOSE:       /* Close log */
1209                 break;
1210         case SYSLOG_ACTION_OPEN:        /* Open log */
1211                 break;
1212         case SYSLOG_ACTION_READ:        /* Read from log */
1213                 error = -EINVAL;
1214                 if (!buf || len < 0)
1215                         goto out;
1216                 error = 0;
1217                 if (!len)
1218                         goto out;
1219                 if (!access_ok(VERIFY_WRITE, buf, len)) {
1220                         error = -EFAULT;
1221                         goto out;
1222                 }
1223                 error = wait_event_interruptible(log_wait,
1224                                                  syslog_seq != log_next_seq);
1225                 if (error)
1226                         goto out;
1227                 error = syslog_print(buf, len);
1228                 break;
1229         /* Read/clear last kernel messages */
1230         case SYSLOG_ACTION_READ_CLEAR:
1231                 clear = true;
1232                 /* FALL THRU */
1233         /* Read last kernel messages */
1234         case SYSLOG_ACTION_READ_ALL:
1235                 error = -EINVAL;
1236                 if (!buf || len < 0)
1237                         goto out;
1238                 error = 0;
1239                 if (!len)
1240                         goto out;
1241                 if (!access_ok(VERIFY_WRITE, buf, len)) {
1242                         error = -EFAULT;
1243                         goto out;
1244                 }
1245                 error = syslog_print_all(buf, len, clear);
1246                 break;
1247         /* Clear ring buffer */
1248         case SYSLOG_ACTION_CLEAR:
1249                 syslog_print_all(NULL, 0, true);
1250                 break;
1251         /* Disable logging to console */
1252         case SYSLOG_ACTION_CONSOLE_OFF:
1253                 if (saved_console_loglevel == -1)
1254                         saved_console_loglevel = console_loglevel;
1255                 console_loglevel = minimum_console_loglevel;
1256                 break;
1257         /* Enable logging to console */
1258         case SYSLOG_ACTION_CONSOLE_ON:
1259                 if (saved_console_loglevel != -1) {
1260                         console_loglevel = saved_console_loglevel;
1261                         saved_console_loglevel = -1;
1262                 }
1263                 break;
1264         /* Set level of messages printed to console */
1265         case SYSLOG_ACTION_CONSOLE_LEVEL:
1266                 error = -EINVAL;
1267                 if (len < 1 || len > 8)
1268                         goto out;
1269                 if (len < minimum_console_loglevel)
1270                         len = minimum_console_loglevel;
1271                 console_loglevel = len;
1272                 /* Implicitly re-enable logging to console */
1273                 saved_console_loglevel = -1;
1274                 error = 0;
1275                 break;
1276         /* Number of chars in the log buffer */
1277         case SYSLOG_ACTION_SIZE_UNREAD:
1278                 raw_spin_lock_irq(&logbuf_lock);
1279                 if (syslog_seq < log_first_seq) {
1280                         /* messages are gone, move to first one */
1281                         syslog_seq = log_first_seq;
1282                         syslog_idx = log_first_idx;
1283                         syslog_prev = 0;
1284                         syslog_partial = 0;
1285                 }
1286                 if (from_file) {
1287                         /*
1288                          * Short-cut for poll(/"proc/kmsg") which simply checks
1289                          * for pending data, not the size; return the count of
1290                          * records, not the length.
1291                          */
1292                         error = log_next_idx - syslog_idx;
1293                 } else {
1294                         u64 seq = syslog_seq;
1295                         u32 idx = syslog_idx;
1296                         enum log_flags prev = syslog_prev;
1297
1298                         error = 0;
1299                         while (seq < log_next_seq) {
1300                                 struct printk_log *msg = log_from_idx(idx);
1301
1302                                 error += msg_print_text(msg, prev, true, NULL, 0);
1303                                 idx = log_next(idx);
1304                                 seq++;
1305                                 prev = msg->flags;
1306                         }
1307                         error -= syslog_partial;
1308                 }
1309                 raw_spin_unlock_irq(&logbuf_lock);
1310                 break;
1311         /* Size of the log buffer */
1312         case SYSLOG_ACTION_SIZE_BUFFER:
1313                 error = log_buf_len;
1314                 break;
1315         default:
1316                 error = -EINVAL;
1317                 break;
1318         }
1319 out:
1320         return error;
1321 }
1322
1323 SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len)
1324 {
1325         return do_syslog(type, buf, len, SYSLOG_FROM_READER);
1326 }
1327
1328 /*
1329  * Call the console drivers, asking them to write out
1330  * log_buf[start] to log_buf[end - 1].
1331  * The console_lock must be held.
1332  */
1333 static void call_console_drivers(int level, const char *text, size_t len)
1334 {
1335         struct console *con;
1336
1337         trace_console(text, len);
1338
1339         if (level >= console_loglevel && !ignore_loglevel)
1340                 return;
1341         if (!console_drivers)
1342                 return;
1343
1344         for_each_console(con) {
1345                 if (exclusive_console && con != exclusive_console)
1346                         continue;
1347                 if (!(con->flags & CON_ENABLED))
1348                         continue;
1349                 if (!con->write)
1350                         continue;
1351                 if (!cpu_online(smp_processor_id()) &&
1352                     !(con->flags & CON_ANYTIME))
1353                         continue;
1354                 con->write(con, text, len);
1355         }
1356 }
1357
1358 /*
1359  * Zap console related locks when oopsing. Only zap at most once
1360  * every 10 seconds, to leave time for slow consoles to print a
1361  * full oops.
1362  */
1363 static void zap_locks(void)
1364 {
1365         static unsigned long oops_timestamp;
1366
1367         if (time_after_eq(jiffies, oops_timestamp) &&
1368                         !time_after(jiffies, oops_timestamp + 30 * HZ))
1369                 return;
1370
1371         oops_timestamp = jiffies;
1372
1373         debug_locks_off();
1374         /* If a crash is occurring, make sure we can't deadlock */
1375         raw_spin_lock_init(&logbuf_lock);
1376         /* And make sure that we print immediately */
1377         sema_init(&console_sem, 1);
1378 }
1379
1380 /*
1381  * Check if we have any console that is capable of printing while cpu is
1382  * booting or shutting down. Requires console_sem.
1383  */
1384 static int have_callable_console(void)
1385 {
1386         struct console *con;
1387
1388         for_each_console(con)
1389                 if (con->flags & CON_ANYTIME)
1390                         return 1;
1391
1392         return 0;
1393 }
1394
1395 /*
1396  * Can we actually use the console at this time on this cpu?
1397  *
1398  * Console drivers may assume that per-cpu resources have
1399  * been allocated. So unless they're explicitly marked as
1400  * being able to cope (CON_ANYTIME) don't call them until
1401  * this CPU is officially up.
1402  */
1403 static inline int can_use_console(unsigned int cpu)
1404 {
1405         return cpu_online(cpu) || have_callable_console();
1406 }
1407
1408 /*
1409  * Try to get console ownership to actually show the kernel
1410  * messages from a 'printk'. Return true (and with the
1411  * console_lock held, and 'console_locked' set) if it
1412  * is successful, false otherwise.
1413  */
1414 static int console_trylock_for_printk(unsigned int cpu)
1415 {
1416         if (!console_trylock())
1417                 return 0;
1418         /*
1419          * If we can't use the console, we need to release the console
1420          * semaphore by hand to avoid flushing the buffer. We need to hold the
1421          * console semaphore in order to do this test safely.
1422          */
1423         if (!can_use_console(cpu)) {
1424                 console_locked = 0;
1425                 up(&console_sem);
1426                 return 0;
1427         }
1428         return 1;
1429 }
1430
1431 int printk_delay_msec __read_mostly;
1432
1433 static inline void printk_delay(void)
1434 {
1435         if (unlikely(printk_delay_msec)) {
1436                 int m = printk_delay_msec;
1437
1438                 while (m--) {
1439                         mdelay(1);
1440                         touch_nmi_watchdog();
1441                 }
1442         }
1443 }
1444
1445 /*
1446  * Continuation lines are buffered, and not committed to the record buffer
1447  * until the line is complete, or a race forces it. The line fragments
1448  * though, are printed immediately to the consoles to ensure everything has
1449  * reached the console in case of a kernel crash.
1450  */
1451 static struct cont {
1452         char buf[LOG_LINE_MAX];
1453         size_t len;                     /* length == 0 means unused buffer */
1454         size_t cons;                    /* bytes written to console */
1455         struct task_struct *owner;      /* task of first print*/
1456         u64 ts_nsec;                    /* time of first print */
1457         u8 level;                       /* log level of first message */
1458         u8 facility;                    /* log level of first message */
1459         enum log_flags flags;           /* prefix, newline flags */
1460         bool flushed:1;                 /* buffer sealed and committed */
1461 } cont;
1462
1463 static void cont_flush(enum log_flags flags)
1464 {
1465         if (cont.flushed)
1466                 return;
1467         if (cont.len == 0)
1468                 return;
1469
1470         if (cont.cons) {
1471                 /*
1472                  * If a fragment of this line was directly flushed to the
1473                  * console; wait for the console to pick up the rest of the
1474                  * line. LOG_NOCONS suppresses a duplicated output.
1475                  */
1476                 log_store(cont.facility, cont.level, flags | LOG_NOCONS,
1477                           cont.ts_nsec, NULL, 0, cont.buf, cont.len);
1478                 cont.flags = flags;
1479                 cont.flushed = true;
1480         } else {
1481                 /*
1482                  * If no fragment of this line ever reached the console,
1483                  * just submit it to the store and free the buffer.
1484                  */
1485                 log_store(cont.facility, cont.level, flags, 0,
1486                           NULL, 0, cont.buf, cont.len);
1487                 cont.len = 0;
1488         }
1489 }
1490
1491 static bool cont_add(int facility, int level, const char *text, size_t len)
1492 {
1493         if (cont.len && cont.flushed)
1494                 return false;
1495
1496         if (cont.len + len > sizeof(cont.buf)) {
1497                 /* the line gets too long, split it up in separate records */
1498                 cont_flush(LOG_CONT);
1499                 return false;
1500         }
1501
1502         if (!cont.len) {
1503                 cont.facility = facility;
1504                 cont.level = level;
1505                 cont.owner = current;
1506                 cont.ts_nsec = local_clock();
1507                 cont.flags = 0;
1508                 cont.cons = 0;
1509                 cont.flushed = false;
1510         }
1511
1512         memcpy(cont.buf + cont.len, text, len);
1513         cont.len += len;
1514
1515         if (cont.len > (sizeof(cont.buf) * 80) / 100)
1516                 cont_flush(LOG_CONT);
1517
1518         return true;
1519 }
1520
1521 static size_t cont_print_text(char *text, size_t size)
1522 {
1523         size_t textlen = 0;
1524         size_t len;
1525
1526         if (cont.cons == 0 && (console_prev & LOG_NEWLINE)) {
1527                 textlen += print_time(cont.ts_nsec, text);
1528                 size -= textlen;
1529         }
1530
1531         len = cont.len - cont.cons;
1532         if (len > 0) {
1533                 if (len+1 > size)
1534                         len = size-1;
1535                 memcpy(text + textlen, cont.buf + cont.cons, len);
1536                 textlen += len;
1537                 cont.cons = cont.len;
1538         }
1539
1540         if (cont.flushed) {
1541                 if (cont.flags & LOG_NEWLINE)
1542                         text[textlen++] = '\n';
1543                 /* got everything, release buffer */
1544                 cont.len = 0;
1545         }
1546         return textlen;
1547 }
1548
1549 asmlinkage int vprintk_emit(int facility, int level,
1550                             const char *dict, size_t dictlen,
1551                             const char *fmt, va_list args)
1552 {
1553         static int recursion_bug;
1554         static char textbuf[LOG_LINE_MAX];
1555         char *text = textbuf;
1556         size_t text_len;
1557         enum log_flags lflags = 0;
1558         unsigned long flags;
1559         int this_cpu;
1560         int printed_len = 0;
1561         /* cpu currently holding logbuf_lock in this function */
1562         static volatile unsigned int logbuf_cpu = UINT_MAX;
1563
1564
1565         boot_delay_msec(level);
1566         printk_delay();
1567
1568         /* This stops the holder of console_sem just where we want him */
1569         local_irq_save(flags);
1570         this_cpu = smp_processor_id();
1571
1572         /*
1573          * Ouch, printk recursed into itself!
1574          */
1575         if (unlikely(logbuf_cpu == this_cpu)) {
1576                 /*
1577                  * If a crash is occurring during printk() on this CPU,
1578                  * then try to get the crash message out but make sure
1579                  * we can't deadlock. Otherwise just return to avoid the
1580                  * recursion and return - but flag the recursion so that
1581                  * it can be printed at the next appropriate moment:
1582                  */
1583                 if (!oops_in_progress && !lockdep_recursing(current)) {
1584                         recursion_bug = 1;
1585                         goto out_restore_irqs;
1586                 }
1587                 zap_locks();
1588         }
1589
1590         lockdep_off();
1591         raw_spin_lock(&logbuf_lock);
1592         logbuf_cpu = this_cpu;
1593
1594         if (recursion_bug) {
1595                 static const char recursion_msg[] =
1596                         "BUG: recent printk recursion!";
1597
1598                 recursion_bug = 0;
1599                 text_len = strlen(recursion_msg);
1600                 /* emit KERN_CRIT message */
1601                 printed_len += log_store(0, 2, LOG_PREFIX|LOG_NEWLINE, 0,
1602                                          NULL, 0, recursion_msg, text_len);
1603         }
1604
1605         /*
1606          * The printf needs to come first; we need the syslog
1607          * prefix which might be passed-in as a parameter.
1608          */
1609         text_len = vscnprintf(text, sizeof(textbuf), fmt, args);
1610
1611         /* mark and strip a trailing newline */
1612         if (text_len && text[text_len-1] == '\n') {
1613                 text_len--;
1614                 lflags |= LOG_NEWLINE;
1615         }
1616
1617         /* strip kernel syslog prefix and extract log level or control flags */
1618         if (facility == 0) {
1619                 int kern_level = printk_get_level(text);
1620
1621                 if (kern_level) {
1622                         const char *end_of_header = printk_skip_level(text);
1623                         switch (kern_level) {
1624                         case '0' ... '7':
1625                                 if (level == -1)
1626                                         level = kern_level - '0';
1627                         case 'd':       /* KERN_DEFAULT */
1628                                 lflags |= LOG_PREFIX;
1629                         }
1630                         /*
1631                          * No need to check length here because vscnprintf
1632                          * put '\0' at the end of the string. Only valid and
1633                          * newly printed level is detected.
1634                          */
1635                         text_len -= end_of_header - text;
1636                         text = (char *)end_of_header;
1637                 }
1638         }
1639
1640         if (level == -1)
1641                 level = default_message_loglevel;
1642
1643         if (dict)
1644                 lflags |= LOG_PREFIX|LOG_NEWLINE;
1645
1646         if (!(lflags & LOG_NEWLINE)) {
1647                 /*
1648                  * Flush the conflicting buffer. An earlier newline was missing,
1649                  * or another task also prints continuation lines.
1650                  */
1651                 if (cont.len && (lflags & LOG_PREFIX || cont.owner != current))
1652                         cont_flush(LOG_NEWLINE);
1653
1654                 /* buffer line if possible, otherwise store it right away */
1655                 if (cont_add(facility, level, text, text_len))
1656                         printed_len += text_len;
1657                 else
1658                         printed_len += log_store(facility, level,
1659                                                  lflags | LOG_CONT, 0,
1660                                                  dict, dictlen, text, text_len);
1661         } else {
1662                 bool stored = false;
1663
1664                 /*
1665                  * If an earlier newline was missing and it was the same task,
1666                  * either merge it with the current buffer and flush, or if
1667                  * there was a race with interrupts (prefix == true) then just
1668                  * flush it out and store this line separately.
1669                  * If the preceding printk was from a different task and missed
1670                  * a newline, flush and append the newline.
1671                  */
1672                 if (cont.len) {
1673                         if (cont.owner == current && !(lflags & LOG_PREFIX))
1674                                 stored = cont_add(facility, level, text,
1675                                                   text_len);
1676                         cont_flush(LOG_NEWLINE);
1677                 }
1678
1679                 if (stored)
1680                         printed_len += text_len;
1681                 else
1682                         printed_len += log_store(facility, level, lflags, 0,
1683                                                  dict, dictlen, text, text_len);
1684         }
1685
1686         logbuf_cpu = UINT_MAX;
1687         raw_spin_unlock(&logbuf_lock);
1688         /*
1689          * Try to acquire and then immediately release the console semaphore.
1690          * The release will print out buffers and wake up /dev/kmsg and syslog()
1691          * users.
1692          */
1693         if (console_trylock_for_printk(this_cpu))
1694                 console_unlock();
1695
1696         lockdep_on();
1697 out_restore_irqs:
1698         local_irq_restore(flags);
1699
1700         return printed_len;
1701 }
1702 EXPORT_SYMBOL(vprintk_emit);
1703
1704 asmlinkage int vprintk(const char *fmt, va_list args)
1705 {
1706         return vprintk_emit(0, -1, NULL, 0, fmt, args);
1707 }
1708 EXPORT_SYMBOL(vprintk);
1709
1710 asmlinkage int printk_emit(int facility, int level,
1711                            const char *dict, size_t dictlen,
1712                            const char *fmt, ...)
1713 {
1714         va_list args;
1715         int r;
1716
1717         va_start(args, fmt);
1718         r = vprintk_emit(facility, level, dict, dictlen, fmt, args);
1719         va_end(args);
1720
1721         return r;
1722 }
1723 EXPORT_SYMBOL(printk_emit);
1724
1725 /**
1726  * printk - print a kernel message
1727  * @fmt: format string
1728  *
1729  * This is printk(). It can be called from any context. We want it to work.
1730  *
1731  * We try to grab the console_lock. If we succeed, it's easy - we log the
1732  * output and call the console drivers.  If we fail to get the semaphore, we
1733  * place the output into the log buffer and return. The current holder of
1734  * the console_sem will notice the new output in console_unlock(); and will
1735  * send it to the consoles before releasing the lock.
1736  *
1737  * One effect of this deferred printing is that code which calls printk() and
1738  * then changes console_loglevel may break. This is because console_loglevel
1739  * is inspected when the actual printing occurs.
1740  *
1741  * See also:
1742  * printf(3)
1743  *
1744  * See the vsnprintf() documentation for format string extensions over C99.
1745  */
1746 asmlinkage __visible int printk(const char *fmt, ...)
1747 {
1748         va_list args;
1749         int r;
1750
1751 #ifdef CONFIG_KGDB_KDB
1752         if (unlikely(kdb_trap_printk)) {
1753                 va_start(args, fmt);
1754                 r = vkdb_printf(fmt, args);
1755                 va_end(args);
1756                 return r;
1757         }
1758 #endif
1759         va_start(args, fmt);
1760         r = vprintk_emit(0, -1, NULL, 0, fmt, args);
1761         va_end(args);
1762
1763         return r;
1764 }
1765 EXPORT_SYMBOL(printk);
1766
1767 #else /* CONFIG_PRINTK */
1768
1769 #define LOG_LINE_MAX            0
1770 #define PREFIX_MAX              0
1771 #define LOG_LINE_MAX 0
1772 static u64 syslog_seq;
1773 static u32 syslog_idx;
1774 static u64 console_seq;
1775 static u32 console_idx;
1776 static enum log_flags syslog_prev;
1777 static u64 log_first_seq;
1778 static u32 log_first_idx;
1779 static u64 log_next_seq;
1780 static enum log_flags console_prev;
1781 static struct cont {
1782         size_t len;
1783         size_t cons;
1784         u8 level;
1785         bool flushed:1;
1786 } cont;
1787 static struct printk_log *log_from_idx(u32 idx) { return NULL; }
1788 static u32 log_next(u32 idx) { return 0; }
1789 static void call_console_drivers(int level, const char *text, size_t len) {}
1790 static size_t msg_print_text(const struct printk_log *msg, enum log_flags prev,
1791                              bool syslog, char *buf, size_t size) { return 0; }
1792 static size_t cont_print_text(char *text, size_t size) { return 0; }
1793
1794 #endif /* CONFIG_PRINTK */
1795
1796 #ifdef CONFIG_EARLY_PRINTK
1797 struct console *early_console;
1798
1799 void early_vprintk(const char *fmt, va_list ap)
1800 {
1801         if (early_console) {
1802                 char buf[512];
1803                 int n = vscnprintf(buf, sizeof(buf), fmt, ap);
1804
1805                 early_console->write(early_console, buf, n);
1806         }
1807 }
1808
1809 asmlinkage __visible void early_printk(const char *fmt, ...)
1810 {
1811         va_list ap;
1812
1813         va_start(ap, fmt);
1814         early_vprintk(fmt, ap);
1815         va_end(ap);
1816 }
1817 #endif
1818
1819 static int __add_preferred_console(char *name, int idx, char *options,
1820                                    char *brl_options)
1821 {
1822         struct console_cmdline *c;
1823         int i;
1824
1825         /*
1826          *      See if this tty is not yet registered, and
1827          *      if we have a slot free.
1828          */
1829         for (i = 0, c = console_cmdline;
1830              i < MAX_CMDLINECONSOLES && c->name[0];
1831              i++, c++) {
1832                 if (strcmp(c->name, name) == 0 && c->index == idx) {
1833                         if (!brl_options)
1834                                 selected_console = i;
1835                         return 0;
1836                 }
1837         }
1838         if (i == MAX_CMDLINECONSOLES)
1839                 return -E2BIG;
1840         if (!brl_options)
1841                 selected_console = i;
1842         strlcpy(c->name, name, sizeof(c->name));
1843         c->options = options;
1844         braille_set_options(c, brl_options);
1845
1846         c->index = idx;
1847         return 0;
1848 }
1849 /*
1850  * Set up a list of consoles.  Called from init/main.c
1851  */
1852 static int __init console_setup(char *str)
1853 {
1854         char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for index */
1855         char *s, *options, *brl_options = NULL;
1856         int idx;
1857
1858         if (_braille_console_setup(&str, &brl_options))
1859                 return 1;
1860
1861         /*
1862          * Decode str into name, index, options.
1863          */
1864         if (str[0] >= '0' && str[0] <= '9') {
1865                 strcpy(buf, "ttyS");
1866                 strncpy(buf + 4, str, sizeof(buf) - 5);
1867         } else {
1868                 strncpy(buf, str, sizeof(buf) - 1);
1869         }
1870         buf[sizeof(buf) - 1] = 0;
1871         if ((options = strchr(str, ',')) != NULL)
1872                 *(options++) = 0;
1873 #ifdef __sparc__
1874         if (!strcmp(str, "ttya"))
1875                 strcpy(buf, "ttyS0");
1876         if (!strcmp(str, "ttyb"))
1877                 strcpy(buf, "ttyS1");
1878 #endif
1879         for (s = buf; *s; s++)
1880                 if ((*s >= '0' && *s <= '9') || *s == ',')
1881                         break;
1882         idx = simple_strtoul(s, NULL, 10);
1883         *s = 0;
1884
1885         __add_preferred_console(buf, idx, options, brl_options);
1886         console_set_on_cmdline = 1;
1887         return 1;
1888 }
1889 __setup("console=", console_setup);
1890
1891 /**
1892  * add_preferred_console - add a device to the list of preferred consoles.
1893  * @name: device name
1894  * @idx: device index
1895  * @options: options for this console
1896  *
1897  * The last preferred console added will be used for kernel messages
1898  * and stdin/out/err for init.  Normally this is used by console_setup
1899  * above to handle user-supplied console arguments; however it can also
1900  * be used by arch-specific code either to override the user or more
1901  * commonly to provide a default console (ie from PROM variables) when
1902  * the user has not supplied one.
1903  */
1904 int add_preferred_console(char *name, int idx, char *options)
1905 {
1906         return __add_preferred_console(name, idx, options, NULL);
1907 }
1908
1909 int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options)
1910 {
1911         struct console_cmdline *c;
1912         int i;
1913
1914         for (i = 0, c = console_cmdline;
1915              i < MAX_CMDLINECONSOLES && c->name[0];
1916              i++, c++)
1917                 if (strcmp(c->name, name) == 0 && c->index == idx) {
1918                         strlcpy(c->name, name_new, sizeof(c->name));
1919                         c->name[sizeof(c->name) - 1] = 0;
1920                         c->options = options;
1921                         c->index = idx_new;
1922                         return i;
1923                 }
1924         /* not found */
1925         return -1;
1926 }
1927
1928 bool console_suspend_enabled = 1;
1929 EXPORT_SYMBOL(console_suspend_enabled);
1930
1931 static int __init console_suspend_disable(char *str)
1932 {
1933         console_suspend_enabled = 0;
1934         return 1;
1935 }
1936 __setup("no_console_suspend", console_suspend_disable);
1937 module_param_named(console_suspend, console_suspend_enabled,
1938                 bool, S_IRUGO | S_IWUSR);
1939 MODULE_PARM_DESC(console_suspend, "suspend console during suspend"
1940         " and hibernate operations");
1941
1942 /**
1943  * suspend_console - suspend the console subsystem
1944  *
1945  * This disables printk() while we go into suspend states
1946  */
1947 void suspend_console(void)
1948 {
1949         if (!console_suspend_enabled)
1950                 return;
1951         printk("Suspending console(s) (use no_console_suspend to debug)\n");
1952         console_lock();
1953         console_suspended = 1;
1954         up(&console_sem);
1955         mutex_release(&console_lock_dep_map, 1, _RET_IP_);
1956 }
1957
1958 void resume_console(void)
1959 {
1960         if (!console_suspend_enabled)
1961                 return;
1962         down(&console_sem);
1963         mutex_acquire(&console_lock_dep_map, 0, 0, _RET_IP_);
1964         console_suspended = 0;
1965         console_unlock();
1966 }
1967
1968 /**
1969  * console_cpu_notify - print deferred console messages after CPU hotplug
1970  * @self: notifier struct
1971  * @action: CPU hotplug event
1972  * @hcpu: unused
1973  *
1974  * If printk() is called from a CPU that is not online yet, the messages
1975  * will be spooled but will not show up on the console.  This function is
1976  * called when a new CPU comes online (or fails to come up), and ensures
1977  * that any such output gets printed.
1978  */
1979 static int console_cpu_notify(struct notifier_block *self,
1980         unsigned long action, void *hcpu)
1981 {
1982         switch (action) {
1983         case CPU_ONLINE:
1984         case CPU_DEAD:
1985         case CPU_DOWN_FAILED:
1986         case CPU_UP_CANCELED:
1987                 console_lock();
1988                 console_unlock();
1989         }
1990         return NOTIFY_OK;
1991 }
1992
1993 /**
1994  * console_lock - lock the console system for exclusive use.
1995  *
1996  * Acquires a lock which guarantees that the caller has
1997  * exclusive access to the console system and the console_drivers list.
1998  *
1999  * Can sleep, returns nothing.
2000  */
2001 void console_lock(void)
2002 {
2003         might_sleep();
2004
2005         down(&console_sem);
2006         if (console_suspended)
2007                 return;
2008         console_locked = 1;
2009         console_may_schedule = 1;
2010         mutex_acquire(&console_lock_dep_map, 0, 0, _RET_IP_);
2011 }
2012 EXPORT_SYMBOL(console_lock);
2013
2014 /**
2015  * console_trylock - try to lock the console system for exclusive use.
2016  *
2017  * Tried to acquire a lock which guarantees that the caller has
2018  * exclusive access to the console system and the console_drivers list.
2019  *
2020  * returns 1 on success, and 0 on failure to acquire the lock.
2021  */
2022 int console_trylock(void)
2023 {
2024         if (down_trylock(&console_sem))
2025                 return 0;
2026         if (console_suspended) {
2027                 up(&console_sem);
2028                 return 0;
2029         }
2030         console_locked = 1;
2031         console_may_schedule = 0;
2032         mutex_acquire(&console_lock_dep_map, 0, 1, _RET_IP_);
2033         return 1;
2034 }
2035 EXPORT_SYMBOL(console_trylock);
2036
2037 int is_console_locked(void)
2038 {
2039         return console_locked;
2040 }
2041
2042 static void console_cont_flush(char *text, size_t size)
2043 {
2044         unsigned long flags;
2045         size_t len;
2046
2047         raw_spin_lock_irqsave(&logbuf_lock, flags);
2048
2049         if (!cont.len)
2050                 goto out;
2051
2052         /*
2053          * We still queue earlier records, likely because the console was
2054          * busy. The earlier ones need to be printed before this one, we
2055          * did not flush any fragment so far, so just let it queue up.
2056          */
2057         if (console_seq < log_next_seq && !cont.cons)
2058                 goto out;
2059
2060         len = cont_print_text(text, size);
2061         raw_spin_unlock(&logbuf_lock);
2062         stop_critical_timings();
2063         call_console_drivers(cont.level, text, len);
2064         start_critical_timings();
2065         local_irq_restore(flags);
2066         return;
2067 out:
2068         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2069 }
2070
2071 /**
2072  * console_unlock - unlock the console system
2073  *
2074  * Releases the console_lock which the caller holds on the console system
2075  * and the console driver list.
2076  *
2077  * While the console_lock was held, console output may have been buffered
2078  * by printk().  If this is the case, console_unlock(); emits
2079  * the output prior to releasing the lock.
2080  *
2081  * If there is output waiting, we wake /dev/kmsg and syslog() users.
2082  *
2083  * console_unlock(); may be called from any context.
2084  */
2085 void console_unlock(void)
2086 {
2087         static char text[LOG_LINE_MAX + PREFIX_MAX];
2088         static u64 seen_seq;
2089         unsigned long flags;
2090         bool wake_klogd = false;
2091         bool retry;
2092
2093         if (console_suspended) {
2094                 up(&console_sem);
2095                 return;
2096         }
2097
2098         console_may_schedule = 0;
2099
2100         /* flush buffered message fragment immediately to console */
2101         console_cont_flush(text, sizeof(text));
2102 again:
2103         for (;;) {
2104                 struct printk_log *msg;
2105                 size_t len;
2106                 int level;
2107
2108                 raw_spin_lock_irqsave(&logbuf_lock, flags);
2109                 if (seen_seq != log_next_seq) {
2110                         wake_klogd = true;
2111                         seen_seq = log_next_seq;
2112                 }
2113
2114                 if (console_seq < log_first_seq) {
2115                         /* messages are gone, move to first one */
2116                         console_seq = log_first_seq;
2117                         console_idx = log_first_idx;
2118                         console_prev = 0;
2119                 }
2120 skip:
2121                 if (console_seq == log_next_seq)
2122                         break;
2123
2124                 msg = log_from_idx(console_idx);
2125                 if (msg->flags & LOG_NOCONS) {
2126                         /*
2127                          * Skip record we have buffered and already printed
2128                          * directly to the console when we received it.
2129                          */
2130                         console_idx = log_next(console_idx);
2131                         console_seq++;
2132                         /*
2133                          * We will get here again when we register a new
2134                          * CON_PRINTBUFFER console. Clear the flag so we
2135                          * will properly dump everything later.
2136                          */
2137                         msg->flags &= ~LOG_NOCONS;
2138                         console_prev = msg->flags;
2139                         goto skip;
2140                 }
2141
2142                 level = msg->level;
2143                 len = msg_print_text(msg, console_prev, false,
2144                                      text, sizeof(text));
2145                 console_idx = log_next(console_idx);
2146                 console_seq++;
2147                 console_prev = msg->flags;
2148                 raw_spin_unlock(&logbuf_lock);
2149
2150                 stop_critical_timings();        /* don't trace print latency */
2151                 call_console_drivers(level, text, len);
2152                 start_critical_timings();
2153                 local_irq_restore(flags);
2154         }
2155         console_locked = 0;
2156         mutex_release(&console_lock_dep_map, 1, _RET_IP_);
2157
2158         /* Release the exclusive_console once it is used */
2159         if (unlikely(exclusive_console))
2160                 exclusive_console = NULL;
2161
2162         raw_spin_unlock(&logbuf_lock);
2163
2164         up(&console_sem);
2165
2166         /*
2167          * Someone could have filled up the buffer again, so re-check if there's
2168          * something to flush. In case we cannot trylock the console_sem again,
2169          * there's a new owner and the console_unlock() from them will do the
2170          * flush, no worries.
2171          */
2172         raw_spin_lock(&logbuf_lock);
2173         retry = console_seq != log_next_seq;
2174         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2175
2176         if (retry && console_trylock())
2177                 goto again;
2178
2179         if (wake_klogd)
2180                 wake_up_klogd();
2181 }
2182 EXPORT_SYMBOL(console_unlock);
2183
2184 /**
2185  * console_conditional_schedule - yield the CPU if required
2186  *
2187  * If the console code is currently allowed to sleep, and
2188  * if this CPU should yield the CPU to another task, do
2189  * so here.
2190  *
2191  * Must be called within console_lock();.
2192  */
2193 void __sched console_conditional_schedule(void)
2194 {
2195         if (console_may_schedule)
2196                 cond_resched();
2197 }
2198 EXPORT_SYMBOL(console_conditional_schedule);
2199
2200 void console_unblank(void)
2201 {
2202         struct console *c;
2203
2204         /*
2205          * console_unblank can no longer be called in interrupt context unless
2206          * oops_in_progress is set to 1..
2207          */
2208         if (oops_in_progress) {
2209                 if (down_trylock(&console_sem) != 0)
2210                         return;
2211         } else
2212                 console_lock();
2213
2214         console_locked = 1;
2215         console_may_schedule = 0;
2216         for_each_console(c)
2217                 if ((c->flags & CON_ENABLED) && c->unblank)
2218                         c->unblank();
2219         console_unlock();
2220 }
2221
2222 /*
2223  * Return the console tty driver structure and its associated index
2224  */
2225 struct tty_driver *console_device(int *index)
2226 {
2227         struct console *c;
2228         struct tty_driver *driver = NULL;
2229
2230         console_lock();
2231         for_each_console(c) {
2232                 if (!c->device)
2233                         continue;
2234                 driver = c->device(c, index);
2235                 if (driver)
2236                         break;
2237         }
2238         console_unlock();
2239         return driver;
2240 }
2241
2242 /*
2243  * Prevent further output on the passed console device so that (for example)
2244  * serial drivers can disable console output before suspending a port, and can
2245  * re-enable output afterwards.
2246  */
2247 void console_stop(struct console *console)
2248 {
2249         console_lock();
2250         console->flags &= ~CON_ENABLED;
2251         console_unlock();
2252 }
2253 EXPORT_SYMBOL(console_stop);
2254
2255 void console_start(struct console *console)
2256 {
2257         console_lock();
2258         console->flags |= CON_ENABLED;
2259         console_unlock();
2260 }
2261 EXPORT_SYMBOL(console_start);
2262
2263 static int __read_mostly keep_bootcon;
2264
2265 static int __init keep_bootcon_setup(char *str)
2266 {
2267         keep_bootcon = 1;
2268         pr_info("debug: skip boot console de-registration.\n");
2269
2270         return 0;
2271 }
2272
2273 early_param("keep_bootcon", keep_bootcon_setup);
2274
2275 /*
2276  * The console driver calls this routine during kernel initialization
2277  * to register the console printing procedure with printk() and to
2278  * print any messages that were printed by the kernel before the
2279  * console driver was initialized.
2280  *
2281  * This can happen pretty early during the boot process (because of
2282  * early_printk) - sometimes before setup_arch() completes - be careful
2283  * of what kernel features are used - they may not be initialised yet.
2284  *
2285  * There are two types of consoles - bootconsoles (early_printk) and
2286  * "real" consoles (everything which is not a bootconsole) which are
2287  * handled differently.
2288  *  - Any number of bootconsoles can be registered at any time.
2289  *  - As soon as a "real" console is registered, all bootconsoles
2290  *    will be unregistered automatically.
2291  *  - Once a "real" console is registered, any attempt to register a
2292  *    bootconsoles will be rejected
2293  */
2294 void register_console(struct console *newcon)
2295 {
2296         int i;
2297         unsigned long flags;
2298         struct console *bcon = NULL;
2299         struct console_cmdline *c;
2300
2301         if (console_drivers)
2302                 for_each_console(bcon)
2303                         if (WARN(bcon == newcon,
2304                                         "console '%s%d' already registered\n",
2305                                         bcon->name, bcon->index))
2306                                 return;
2307
2308         /*
2309          * before we register a new CON_BOOT console, make sure we don't
2310          * already have a valid console
2311          */
2312         if (console_drivers && newcon->flags & CON_BOOT) {
2313                 /* find the last or real console */
2314                 for_each_console(bcon) {
2315                         if (!(bcon->flags & CON_BOOT)) {
2316                                 pr_info("Too late to register bootconsole %s%d\n",
2317                                         newcon->name, newcon->index);
2318                                 return;
2319                         }
2320                 }
2321         }
2322
2323         if (console_drivers && console_drivers->flags & CON_BOOT)
2324                 bcon = console_drivers;
2325
2326         if (preferred_console < 0 || bcon || !console_drivers)
2327                 preferred_console = selected_console;
2328
2329         if (newcon->early_setup)
2330                 newcon->early_setup();
2331
2332         /*
2333          *      See if we want to use this console driver. If we
2334          *      didn't select a console we take the first one
2335          *      that registers here.
2336          */
2337         if (preferred_console < 0) {
2338                 if (newcon->index < 0)
2339                         newcon->index = 0;
2340                 if (newcon->setup == NULL ||
2341                     newcon->setup(newcon, NULL) == 0) {
2342                         newcon->flags |= CON_ENABLED;
2343                         if (newcon->device) {
2344                                 newcon->flags |= CON_CONSDEV;
2345                                 preferred_console = 0;
2346                         }
2347                 }
2348         }
2349
2350         /*
2351          *      See if this console matches one we selected on
2352          *      the command line.
2353          */
2354         for (i = 0, c = console_cmdline;
2355              i < MAX_CMDLINECONSOLES && c->name[0];
2356              i++, c++) {
2357                 if (strcmp(c->name, newcon->name) != 0)
2358                         continue;
2359                 if (newcon->index >= 0 &&
2360                     newcon->index != c->index)
2361                         continue;
2362                 if (newcon->index < 0)
2363                         newcon->index = c->index;
2364
2365                 if (_braille_register_console(newcon, c))
2366                         return;
2367
2368                 if (newcon->setup &&
2369                     newcon->setup(newcon, console_cmdline[i].options) != 0)
2370                         break;
2371                 newcon->flags |= CON_ENABLED;
2372                 newcon->index = c->index;
2373                 if (i == selected_console) {
2374                         newcon->flags |= CON_CONSDEV;
2375                         preferred_console = selected_console;
2376                 }
2377                 break;
2378         }
2379
2380         if (!(newcon->flags & CON_ENABLED))
2381                 return;
2382
2383         /*
2384          * If we have a bootconsole, and are switching to a real console,
2385          * don't print everything out again, since when the boot console, and
2386          * the real console are the same physical device, it's annoying to
2387          * see the beginning boot messages twice
2388          */
2389         if (bcon && ((newcon->flags & (CON_CONSDEV | CON_BOOT)) == CON_CONSDEV))
2390                 newcon->flags &= ~CON_PRINTBUFFER;
2391
2392         /*
2393          *      Put this console in the list - keep the
2394          *      preferred driver at the head of the list.
2395          */
2396         console_lock();
2397         if ((newcon->flags & CON_CONSDEV) || console_drivers == NULL) {
2398                 newcon->next = console_drivers;
2399                 console_drivers = newcon;
2400                 if (newcon->next)
2401                         newcon->next->flags &= ~CON_CONSDEV;
2402         } else {
2403                 newcon->next = console_drivers->next;
2404                 console_drivers->next = newcon;
2405         }
2406         if (newcon->flags & CON_PRINTBUFFER) {
2407                 /*
2408                  * console_unlock(); will print out the buffered messages
2409                  * for us.
2410                  */
2411                 raw_spin_lock_irqsave(&logbuf_lock, flags);
2412                 console_seq = syslog_seq;
2413                 console_idx = syslog_idx;
2414                 console_prev = syslog_prev;
2415                 raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2416                 /*
2417                  * We're about to replay the log buffer.  Only do this to the
2418                  * just-registered console to avoid excessive message spam to
2419                  * the already-registered consoles.
2420                  */
2421                 exclusive_console = newcon;
2422         }
2423         console_unlock();
2424         console_sysfs_notify();
2425
2426         /*
2427          * By unregistering the bootconsoles after we enable the real console
2428          * we get the "console xxx enabled" message on all the consoles -
2429          * boot consoles, real consoles, etc - this is to ensure that end
2430          * users know there might be something in the kernel's log buffer that
2431          * went to the bootconsole (that they do not see on the real console)
2432          */
2433         pr_info("%sconsole [%s%d] enabled\n",
2434                 (newcon->flags & CON_BOOT) ? "boot" : "" ,
2435                 newcon->name, newcon->index);
2436         if (bcon &&
2437             ((newcon->flags & (CON_CONSDEV | CON_BOOT)) == CON_CONSDEV) &&
2438             !keep_bootcon) {
2439                 /* We need to iterate through all boot consoles, to make
2440                  * sure we print everything out, before we unregister them.
2441                  */
2442                 for_each_console(bcon)
2443                         if (bcon->flags & CON_BOOT)
2444                                 unregister_console(bcon);
2445         }
2446 }
2447 EXPORT_SYMBOL(register_console);
2448
2449 int unregister_console(struct console *console)
2450 {
2451         struct console *a, *b;
2452         int res;
2453
2454         pr_info("%sconsole [%s%d] disabled\n",
2455                 (console->flags & CON_BOOT) ? "boot" : "" ,
2456                 console->name, console->index);
2457
2458         res = _braille_unregister_console(console);
2459         if (res)
2460                 return res;
2461
2462         res = 1;
2463         console_lock();
2464         if (console_drivers == console) {
2465                 console_drivers=console->next;
2466                 res = 0;
2467         } else if (console_drivers) {
2468                 for (a=console_drivers->next, b=console_drivers ;
2469                      a; b=a, a=b->next) {
2470                         if (a == console) {
2471                                 b->next = a->next;
2472                                 res = 0;
2473                                 break;
2474                         }
2475                 }
2476         }
2477
2478         /*
2479          * If this isn't the last console and it has CON_CONSDEV set, we
2480          * need to set it on the next preferred console.
2481          */
2482         if (console_drivers != NULL && console->flags & CON_CONSDEV)
2483                 console_drivers->flags |= CON_CONSDEV;
2484
2485         console->flags &= ~CON_ENABLED;
2486         console_unlock();
2487         console_sysfs_notify();
2488         return res;
2489 }
2490 EXPORT_SYMBOL(unregister_console);
2491
2492 static int __init printk_late_init(void)
2493 {
2494         struct console *con;
2495
2496         for_each_console(con) {
2497                 if (!keep_bootcon && con->flags & CON_BOOT) {
2498                         unregister_console(con);
2499                 }
2500         }
2501         hotcpu_notifier(console_cpu_notify, 0);
2502         return 0;
2503 }
2504 late_initcall(printk_late_init);
2505
2506 #if defined CONFIG_PRINTK
2507 /*
2508  * Delayed printk version, for scheduler-internal messages:
2509  */
2510 #define PRINTK_BUF_SIZE         512
2511
2512 #define PRINTK_PENDING_WAKEUP   0x01
2513 #define PRINTK_PENDING_SCHED    0x02
2514
2515 static DEFINE_PER_CPU(int, printk_pending);
2516 static DEFINE_PER_CPU(char [PRINTK_BUF_SIZE], printk_sched_buf);
2517
2518 static void wake_up_klogd_work_func(struct irq_work *irq_work)
2519 {
2520         int pending = __this_cpu_xchg(printk_pending, 0);
2521
2522         if (pending & PRINTK_PENDING_SCHED) {
2523                 char *buf = __get_cpu_var(printk_sched_buf);
2524                 pr_warn("[sched_delayed] %s", buf);
2525         }
2526
2527         if (pending & PRINTK_PENDING_WAKEUP)
2528                 wake_up_interruptible(&log_wait);
2529 }
2530
2531 static DEFINE_PER_CPU(struct irq_work, wake_up_klogd_work) = {
2532         .func = wake_up_klogd_work_func,
2533         .flags = IRQ_WORK_LAZY,
2534 };
2535
2536 void wake_up_klogd(void)
2537 {
2538         preempt_disable();
2539         if (waitqueue_active(&log_wait)) {
2540                 this_cpu_or(printk_pending, PRINTK_PENDING_WAKEUP);
2541                 irq_work_queue(&__get_cpu_var(wake_up_klogd_work));
2542         }
2543         preempt_enable();
2544 }
2545
2546 int printk_sched(const char *fmt, ...)
2547 {
2548         unsigned long flags;
2549         va_list args;
2550         char *buf;
2551         int r;
2552
2553         local_irq_save(flags);
2554         buf = __get_cpu_var(printk_sched_buf);
2555
2556         va_start(args, fmt);
2557         r = vsnprintf(buf, PRINTK_BUF_SIZE, fmt, args);
2558         va_end(args);
2559
2560         __this_cpu_or(printk_pending, PRINTK_PENDING_SCHED);
2561         irq_work_queue(&__get_cpu_var(wake_up_klogd_work));
2562         local_irq_restore(flags);
2563
2564         return r;
2565 }
2566
2567 /*
2568  * printk rate limiting, lifted from the networking subsystem.
2569  *
2570  * This enforces a rate limit: not more than 10 kernel messages
2571  * every 5s to make a denial-of-service attack impossible.
2572  */
2573 DEFINE_RATELIMIT_STATE(printk_ratelimit_state, 5 * HZ, 10);
2574
2575 int __printk_ratelimit(const char *func)
2576 {
2577         return ___ratelimit(&printk_ratelimit_state, func);
2578 }
2579 EXPORT_SYMBOL(__printk_ratelimit);
2580
2581 /**
2582  * printk_timed_ratelimit - caller-controlled printk ratelimiting
2583  * @caller_jiffies: pointer to caller's state
2584  * @interval_msecs: minimum interval between prints
2585  *
2586  * printk_timed_ratelimit() returns true if more than @interval_msecs
2587  * milliseconds have elapsed since the last time printk_timed_ratelimit()
2588  * returned true.
2589  */
2590 bool printk_timed_ratelimit(unsigned long *caller_jiffies,
2591                         unsigned int interval_msecs)
2592 {
2593         if (*caller_jiffies == 0
2594                         || !time_in_range(jiffies, *caller_jiffies,
2595                                         *caller_jiffies
2596                                         + msecs_to_jiffies(interval_msecs))) {
2597                 *caller_jiffies = jiffies;
2598                 return true;
2599         }
2600         return false;
2601 }
2602 EXPORT_SYMBOL(printk_timed_ratelimit);
2603
2604 static DEFINE_SPINLOCK(dump_list_lock);
2605 static LIST_HEAD(dump_list);
2606
2607 /**
2608  * kmsg_dump_register - register a kernel log dumper.
2609  * @dumper: pointer to the kmsg_dumper structure
2610  *
2611  * Adds a kernel log dumper to the system. The dump callback in the
2612  * structure will be called when the kernel oopses or panics and must be
2613  * set. Returns zero on success and %-EINVAL or %-EBUSY otherwise.
2614  */
2615 int kmsg_dump_register(struct kmsg_dumper *dumper)
2616 {
2617         unsigned long flags;
2618         int err = -EBUSY;
2619
2620         /* The dump callback needs to be set */
2621         if (!dumper->dump)
2622                 return -EINVAL;
2623
2624         spin_lock_irqsave(&dump_list_lock, flags);
2625         /* Don't allow registering multiple times */
2626         if (!dumper->registered) {
2627                 dumper->registered = 1;
2628                 list_add_tail_rcu(&dumper->list, &dump_list);
2629                 err = 0;
2630         }
2631         spin_unlock_irqrestore(&dump_list_lock, flags);
2632
2633         return err;
2634 }
2635 EXPORT_SYMBOL_GPL(kmsg_dump_register);
2636
2637 /**
2638  * kmsg_dump_unregister - unregister a kmsg dumper.
2639  * @dumper: pointer to the kmsg_dumper structure
2640  *
2641  * Removes a dump device from the system. Returns zero on success and
2642  * %-EINVAL otherwise.
2643  */
2644 int kmsg_dump_unregister(struct kmsg_dumper *dumper)
2645 {
2646         unsigned long flags;
2647         int err = -EINVAL;
2648
2649         spin_lock_irqsave(&dump_list_lock, flags);
2650         if (dumper->registered) {
2651                 dumper->registered = 0;
2652                 list_del_rcu(&dumper->list);
2653                 err = 0;
2654         }
2655         spin_unlock_irqrestore(&dump_list_lock, flags);
2656         synchronize_rcu();
2657
2658         return err;
2659 }
2660 EXPORT_SYMBOL_GPL(kmsg_dump_unregister);
2661
2662 static bool always_kmsg_dump;
2663 module_param_named(always_kmsg_dump, always_kmsg_dump, bool, S_IRUGO | S_IWUSR);
2664
2665 /**
2666  * kmsg_dump - dump kernel log to kernel message dumpers.
2667  * @reason: the reason (oops, panic etc) for dumping
2668  *
2669  * Call each of the registered dumper's dump() callback, which can
2670  * retrieve the kmsg records with kmsg_dump_get_line() or
2671  * kmsg_dump_get_buffer().
2672  */
2673 void kmsg_dump(enum kmsg_dump_reason reason)
2674 {
2675         struct kmsg_dumper *dumper;
2676         unsigned long flags;
2677
2678         if ((reason > KMSG_DUMP_OOPS) && !always_kmsg_dump)
2679                 return;
2680
2681         rcu_read_lock();
2682         list_for_each_entry_rcu(dumper, &dump_list, list) {
2683                 if (dumper->max_reason && reason > dumper->max_reason)
2684                         continue;
2685
2686                 /* initialize iterator with data about the stored records */
2687                 dumper->active = true;
2688
2689                 raw_spin_lock_irqsave(&logbuf_lock, flags);
2690                 dumper->cur_seq = clear_seq;
2691                 dumper->cur_idx = clear_idx;
2692                 dumper->next_seq = log_next_seq;
2693                 dumper->next_idx = log_next_idx;
2694                 raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2695
2696                 /* invoke dumper which will iterate over records */
2697                 dumper->dump(dumper, reason);
2698
2699                 /* reset iterator */
2700                 dumper->active = false;
2701         }
2702         rcu_read_unlock();
2703 }
2704
2705 /**
2706  * kmsg_dump_get_line_nolock - retrieve one kmsg log line (unlocked version)
2707  * @dumper: registered kmsg dumper
2708  * @syslog: include the "<4>" prefixes
2709  * @line: buffer to copy the line to
2710  * @size: maximum size of the buffer
2711  * @len: length of line placed into buffer
2712  *
2713  * Start at the beginning of the kmsg buffer, with the oldest kmsg
2714  * record, and copy one record into the provided buffer.
2715  *
2716  * Consecutive calls will return the next available record moving
2717  * towards the end of the buffer with the youngest messages.
2718  *
2719  * A return value of FALSE indicates that there are no more records to
2720  * read.
2721  *
2722  * The function is similar to kmsg_dump_get_line(), but grabs no locks.
2723  */
2724 bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog,
2725                                char *line, size_t size, size_t *len)
2726 {
2727         struct printk_log *msg;
2728         size_t l = 0;
2729         bool ret = false;
2730
2731         if (!dumper->active)
2732                 goto out;
2733
2734         if (dumper->cur_seq < log_first_seq) {
2735                 /* messages are gone, move to first available one */
2736                 dumper->cur_seq = log_first_seq;
2737                 dumper->cur_idx = log_first_idx;
2738         }
2739
2740         /* last entry */
2741         if (dumper->cur_seq >= log_next_seq)
2742                 goto out;
2743
2744         msg = log_from_idx(dumper->cur_idx);
2745         l = msg_print_text(msg, 0, syslog, line, size);
2746
2747         dumper->cur_idx = log_next(dumper->cur_idx);
2748         dumper->cur_seq++;
2749         ret = true;
2750 out:
2751         if (len)
2752                 *len = l;
2753         return ret;
2754 }
2755
2756 /**
2757  * kmsg_dump_get_line - retrieve one kmsg log line
2758  * @dumper: registered kmsg dumper
2759  * @syslog: include the "<4>" prefixes
2760  * @line: buffer to copy the line to
2761  * @size: maximum size of the buffer
2762  * @len: length of line placed into buffer
2763  *
2764  * Start at the beginning of the kmsg buffer, with the oldest kmsg
2765  * record, and copy one record into the provided buffer.
2766  *
2767  * Consecutive calls will return the next available record moving
2768  * towards the end of the buffer with the youngest messages.
2769  *
2770  * A return value of FALSE indicates that there are no more records to
2771  * read.
2772  */
2773 bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog,
2774                         char *line, size_t size, size_t *len)
2775 {
2776         unsigned long flags;
2777         bool ret;
2778
2779         raw_spin_lock_irqsave(&logbuf_lock, flags);
2780         ret = kmsg_dump_get_line_nolock(dumper, syslog, line, size, len);
2781         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2782
2783         return ret;
2784 }
2785 EXPORT_SYMBOL_GPL(kmsg_dump_get_line);
2786
2787 /**
2788  * kmsg_dump_get_buffer - copy kmsg log lines
2789  * @dumper: registered kmsg dumper
2790  * @syslog: include the "<4>" prefixes
2791  * @buf: buffer to copy the line to
2792  * @size: maximum size of the buffer
2793  * @len: length of line placed into buffer
2794  *
2795  * Start at the end of the kmsg buffer and fill the provided buffer
2796  * with as many of the the *youngest* kmsg records that fit into it.
2797  * If the buffer is large enough, all available kmsg records will be
2798  * copied with a single call.
2799  *
2800  * Consecutive calls will fill the buffer with the next block of
2801  * available older records, not including the earlier retrieved ones.
2802  *
2803  * A return value of FALSE indicates that there are no more records to
2804  * read.
2805  */
2806 bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
2807                           char *buf, size_t size, size_t *len)
2808 {
2809         unsigned long flags;
2810         u64 seq;
2811         u32 idx;
2812         u64 next_seq;
2813         u32 next_idx;
2814         enum log_flags prev;
2815         size_t l = 0;
2816         bool ret = false;
2817
2818         if (!dumper->active)
2819                 goto out;
2820
2821         raw_spin_lock_irqsave(&logbuf_lock, flags);
2822         if (dumper->cur_seq < log_first_seq) {
2823                 /* messages are gone, move to first available one */
2824                 dumper->cur_seq = log_first_seq;
2825                 dumper->cur_idx = log_first_idx;
2826         }
2827
2828         /* last entry */
2829         if (dumper->cur_seq >= dumper->next_seq) {
2830                 raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2831                 goto out;
2832         }
2833
2834         /* calculate length of entire buffer */
2835         seq = dumper->cur_seq;
2836         idx = dumper->cur_idx;
2837         prev = 0;
2838         while (seq < dumper->next_seq) {
2839                 struct printk_log *msg = log_from_idx(idx);
2840
2841                 l += msg_print_text(msg, prev, true, NULL, 0);
2842                 idx = log_next(idx);
2843                 seq++;
2844                 prev = msg->flags;
2845         }
2846
2847         /* move first record forward until length fits into the buffer */
2848         seq = dumper->cur_seq;
2849         idx = dumper->cur_idx;
2850         prev = 0;
2851         while (l > size && seq < dumper->next_seq) {
2852                 struct printk_log *msg = log_from_idx(idx);
2853
2854                 l -= msg_print_text(msg, prev, true, NULL, 0);
2855                 idx = log_next(idx);
2856                 seq++;
2857                 prev = msg->flags;
2858         }
2859
2860         /* last message in next interation */
2861         next_seq = seq;
2862         next_idx = idx;
2863
2864         l = 0;
2865         while (seq < dumper->next_seq) {
2866                 struct printk_log *msg = log_from_idx(idx);
2867
2868                 l += msg_print_text(msg, prev, syslog, buf + l, size - l);
2869                 idx = log_next(idx);
2870                 seq++;
2871                 prev = msg->flags;
2872         }
2873
2874         dumper->next_seq = next_seq;
2875         dumper->next_idx = next_idx;
2876         ret = true;
2877         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2878 out:
2879         if (len)
2880                 *len = l;
2881         return ret;
2882 }
2883 EXPORT_SYMBOL_GPL(kmsg_dump_get_buffer);
2884
2885 /**
2886  * kmsg_dump_rewind_nolock - reset the interator (unlocked version)
2887  * @dumper: registered kmsg dumper
2888  *
2889  * Reset the dumper's iterator so that kmsg_dump_get_line() and
2890  * kmsg_dump_get_buffer() can be called again and used multiple
2891  * times within the same dumper.dump() callback.
2892  *
2893  * The function is similar to kmsg_dump_rewind(), but grabs no locks.
2894  */
2895 void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper)
2896 {
2897         dumper->cur_seq = clear_seq;
2898         dumper->cur_idx = clear_idx;
2899         dumper->next_seq = log_next_seq;
2900         dumper->next_idx = log_next_idx;
2901 }
2902
2903 /**
2904  * kmsg_dump_rewind - reset the interator
2905  * @dumper: registered kmsg dumper
2906  *
2907  * Reset the dumper's iterator so that kmsg_dump_get_line() and
2908  * kmsg_dump_get_buffer() can be called again and used multiple
2909  * times within the same dumper.dump() callback.
2910  */
2911 void kmsg_dump_rewind(struct kmsg_dumper *dumper)
2912 {
2913         unsigned long flags;
2914
2915         raw_spin_lock_irqsave(&logbuf_lock, flags);
2916         kmsg_dump_rewind_nolock(dumper);
2917         raw_spin_unlock_irqrestore(&logbuf_lock, flags);
2918 }
2919 EXPORT_SYMBOL_GPL(kmsg_dump_rewind);
2920
2921 static char dump_stack_arch_desc_str[128];
2922
2923 /**
2924  * dump_stack_set_arch_desc - set arch-specific str to show with task dumps
2925  * @fmt: printf-style format string
2926  * @...: arguments for the format string
2927  *
2928  * The configured string will be printed right after utsname during task
2929  * dumps.  Usually used to add arch-specific system identifiers.  If an
2930  * arch wants to make use of such an ID string, it should initialize this
2931  * as soon as possible during boot.
2932  */
2933 void __init dump_stack_set_arch_desc(const char *fmt, ...)
2934 {
2935         va_list args;
2936
2937         va_start(args, fmt);
2938         vsnprintf(dump_stack_arch_desc_str, sizeof(dump_stack_arch_desc_str),
2939                   fmt, args);
2940         va_end(args);
2941 }
2942
2943 /**
2944  * dump_stack_print_info - print generic debug info for dump_stack()
2945  * @log_lvl: log level
2946  *
2947  * Arch-specific dump_stack() implementations can use this function to
2948  * print out the same debug information as the generic dump_stack().
2949  */
2950 void dump_stack_print_info(const char *log_lvl)
2951 {
2952         printk("%sCPU: %d PID: %d Comm: %.20s %s %s %.*s\n",
2953                log_lvl, raw_smp_processor_id(), current->pid, current->comm,
2954                print_tainted(), init_utsname()->release,
2955                (int)strcspn(init_utsname()->version, " "),
2956                init_utsname()->version);
2957
2958         if (dump_stack_arch_desc_str[0] != '\0')
2959                 printk("%sHardware name: %s\n",
2960                        log_lvl, dump_stack_arch_desc_str);
2961
2962         print_worker_info(log_lvl, current);
2963 }
2964
2965 /**
2966  * show_regs_print_info - print generic debug info for show_regs()
2967  * @log_lvl: log level
2968  *
2969  * show_regs() implementations can use this function to print out generic
2970  * debug information.
2971  */
2972 void show_regs_print_info(const char *log_lvl)
2973 {
2974         dump_stack_print_info(log_lvl);
2975
2976         printk("%stask: %p ti: %p task.ti: %p\n",
2977                log_lvl, current, current_thread_info(),
2978                task_thread_info(current));
2979 }
2980
2981 #endif