`kdb_msg_write` operates on a global `struct kgdb_io *` called `dbg_io_ops`. It's initialized in `debug_core.c` and checked throughout the debug flow. There's a null check in `kdb_msg_write` which triggers static analyzers and gives the (almost entirely wrong) impression that it can be null. Coverity scanner caught this as CID 1465042. I have removed the unnecessary null check and eliminated false-positive forward null dereference warning.
Showing the changes to kernel/debug (1 of 1 file). Show all
Unified · Split
| @@ -545,18 +545,18 @@ static int kdb_search_string(char *searched, char *searchfor) · 544 unmodified lines | ||
| 545 | 545 | static void kdb_msg_write(const char *msg, int msg_len) |
| 546 | 546 | { |
| 547 | 547 | struct console *c; |
| 548 | + const char *cp; | |
| 549 | + int len; | |
| 548 | 550 | |
| 549 | 551 | if (msg_len == 0) |
| 550 | 552 | return; |
| 551 | 553 | |
| 552 | − if (dbg_io_ops) { | |
| 553 | − const char *cp = msg; | |
| 554 | − int len = msg_len; | |
| 554 | + cp = msg; | |
| 555 | + len = msg_len; | |
| 555 | 556 | |
| 556 | − while (len--) { | |
| 557 | − dbg_io_ops->write_char(*cp); | |
| 558 | − cp++; | |
| 559 | − } | |
| 557 | + while (len--) { | |
| 558 | + dbg_io_ops->write_char(*cp); | |
| 559 | + cp++; | |
| 560 | 560 | } |
| 561 | 561 | |
| 562 | 562 | for_each_console(c) { |