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