All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Prevent NULL pointer dereference in ftrace_raw_event_block_bio_bounce
@ 2009-09-11 22:05 Carsten Emde
  2009-09-11 22:15 ` Steven Rostedt
  2009-09-13 15:01 ` [tip:tracing/core] tracing: prevent " tip-bot for Carsten Emde
  0 siblings, 2 replies; 3+ messages in thread
From: Carsten Emde @ 2009-09-11 22:05 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Thomas Gleixner, Arnaldo Carvalho de Melo, Ingo Molnar, Li Zefan,
	LKML

Booting 2.6.31 and executing
   echo 1 >/sys/kernel/debug/tracing/events/enable
leads to
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<c032a583>] ftrace_raw_event_block_bio_bounce+0x4b/0xb9

Apparently,
   bio = bio_map_user(q, NULL, uaddr, len, reading, gfp_mask);
is called in block/blk-map.c:58 where bio->bi_bdev in set to NULL and 
still is NULL when an attempt is made to evaluate bio->bi_bdev->bd_dev 
in include/trace/events/block.h:189.

The tracepoint should ensure bio->bi_bdev is not dereferenced, if NULL.

Signed-Off-By: Carsten Emde <C.Emde@osadl.org>

--- a/include/trace/events/block.h 2009-09-11 21:20:56.000000000 +0200
+++ b/include/trace/events/block.h 2009-09-11 22:01:52.000000000 +0200
@@ -186,7 +186,8 @@
  	),

  	TP_fast_assign(
-		__entry->dev		= bio->bi_bdev->bd_dev;
+		__entry->dev		= bio->bi_bdev ?
+					  bio->bi_bdev->bd_dev : 0;
  		__entry->sector		= bio->bi_sector;
  		__entry->nr_sector	= bio->bi_size >> 9;
  		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size);


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

end of thread, other threads:[~2009-09-13 15:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-11 22:05 [PATCH] Prevent NULL pointer dereference in ftrace_raw_event_block_bio_bounce Carsten Emde
2009-09-11 22:15 ` Steven Rostedt
2009-09-13 15:01 ` [tip:tracing/core] tracing: prevent " tip-bot for Carsten Emde

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.