All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kdb: prevent possible null deref in kdb_msg_write
@ 2020-06-29 13:59 Cengiz Can
  2020-06-29 14:27 ` Daniel Thompson
  2020-06-29 14:50 ` Petr Mladek
  0 siblings, 2 replies; 15+ messages in thread
From: Cengiz Can @ 2020-06-29 13:59 UTC (permalink / raw)
  To: Jason Wessel, Daniel Thompson, Douglas Anderson
  Cc: kgdb-bugreport, linux-kernel, Sumit Garg, Petr Mladek,
	Andy Shevchenko, Cengiz Can

`kdb_msg_write` operates on a global `struct kgdb_io *` called
`dbg_io_ops`.

Although it is initialized in `debug_core.c`, there's a null check in
`kdb_msg_write` which implies that it can be null whenever we dereference
it in this function call.

Coverity scanner caught this as CID 1465042.

I have modified the function to bail out if `dbg_io_ops` is not properly
initialized.

Signed-off-by: Cengiz Can <cengiz@kernel.wtf>
---
 kernel/debug/kdb/kdb_io.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
index 683a799618ad..85e579812458 100644
--- a/kernel/debug/kdb/kdb_io.c
+++ b/kernel/debug/kdb/kdb_io.c
@@ -549,14 +549,15 @@ static void kdb_msg_write(const char *msg, int msg_len)
 	if (msg_len == 0)
 		return;
 
-	if (dbg_io_ops) {
-		const char *cp = msg;
-		int len = msg_len;
+	if (!dbg_io_ops)
+		return;
 
-		while (len--) {
-			dbg_io_ops->write_char(*cp);
-			cp++;
-		}
+	const char *cp = msg;
+	int len = msg_len;
+
+	while (len--) {
+		dbg_io_ops->write_char(*cp);
+		cp++;
 	}
 
 	for_each_console(c) {
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-07-10 13:41 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-29 13:59 [PATCH] kdb: prevent possible null deref in kdb_msg_write Cengiz Can
2020-06-29 14:27 ` Daniel Thompson
2020-06-29 14:50 ` Petr Mladek
2020-06-29 14:53   ` Petr Mladek
2020-06-29 15:37   ` Daniel Thompson
2020-06-29 20:50     ` [PATCH v2] kdb: remove unnecessary null check of dbg_io_ops Cengiz Can
2020-06-29 21:16       ` Doug Anderson
2020-06-29 22:10         ` Cengiz Can
2020-06-30  5:55     ` [PATCH] kdb: prevent possible null deref in kdb_msg_write Sumit Garg
2020-06-30  8:29       ` [PATCH v3] kdb: remove unnecessary null check of dbg_io_ops Cengiz Can
2020-06-30 11:36         ` Sumit Garg
2020-06-30 11:48           ` Andy Shevchenko
2020-06-30 22:32         ` Doug Anderson
2020-07-10 12:15           ` Cengiz Can
2020-07-10 13:41             ` Daniel Thompson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.