All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] dma-debug: fix check_unmap null pointer dereference
@ 2009-08-20  1:17 Kyle McMartin
  2009-08-21  8:07 ` [tip:core/urgent] dma-debug: Fix " tip-bot for Kyle McMartin
  0 siblings, 1 reply; 2+ messages in thread
From: Kyle McMartin @ 2009-08-20  1:17 UTC (permalink / raw)
  To: Joerg Roedel; +Cc: mingo, linux-kernel, mchehab

From: Kyle McMartin <kyle@redhat.com>

While it's debatable whether or not a NULL device argument to the
DMA API functions is valid... since it certainly isn't valid on devices
with an IOMMU... dma-debug really shouldn't be dereferencing null
pointers either.

Guard against that in err_printk and the driver_filter functions. A
Fedora rawhide user was seeing this in one of the dvb drivers resulting
in an oops on boot.

Signed-off-by: Kyle McMartin <kyle@redhat.com>
---
A patch has been sent for testing to the driver, but I feel the
dma debugging support should be fixed as well. (There's still a pile of
legacy garbage in the kernel passing null pointers to
dma_{alloc,free}_*. :(

regards, Kyle

diff --git a/lib/dma-debug.c b/lib/dma-debug.c
index 65b0d99..58a9f9f 100644
--- a/lib/dma-debug.c
+++ b/lib/dma-debug.c
@@ -156,9 +156,13 @@ static bool driver_filter(struct device *dev)
 		return true;
 
 	/* driver filter on and initialized */
-	if (current_driver && dev->driver == current_driver)
+	if (current_driver && dev && dev->driver == current_driver)
 		return true;
 
+	/* driver filter on, but we can't filter on a NULL device... */
+	if (!dev)
+		return false;
+
 	if (current_driver || !current_driver_name[0])
 		return false;
 
@@ -183,17 +187,17 @@ static bool driver_filter(struct device *dev)
 	return ret;
 }
 
-#define err_printk(dev, entry, format, arg...) do {		\
-		error_count += 1;				\
-		if (driver_filter(dev) &&			\
-		    (show_all_errors || show_num_errors > 0)) {	\
-			WARN(1, "%s %s: " format,		\
-			     dev_driver_string(dev),		\
-			     dev_name(dev) , ## arg);		\
-			dump_entry_trace(entry);		\
-		}						\
-		if (!show_all_errors && show_num_errors > 0)	\
-			show_num_errors -= 1;			\
+#define err_printk(dev, entry, format, arg...) do {			\
+		error_count += 1;					\
+		if (driver_filter(dev) &&				\
+		    (show_all_errors || show_num_errors > 0)) {		\
+			WARN(1, "%s %s: " format,			\
+			     dev ? dev_driver_string(dev) : "NULL",	\
+			     dev ? dev_name(dev) : "NULL", ## arg);	\
+			dump_entry_trace(entry);			\
+		}							\
+		if (!show_all_errors && show_num_errors > 0)		\
+			show_num_errors -= 1;				\
 	} while (0);
 
 /*

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

end of thread, other threads:[~2009-08-21  8:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-20  1:17 [PATCH] dma-debug: fix check_unmap null pointer dereference Kyle McMartin
2009-08-21  8:07 ` [tip:core/urgent] dma-debug: Fix " tip-bot for Kyle McMartin

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.