Messages in this thread Patch in this message | | | Date | Sat, 20 Sep 2008 11:11:13 -0700 | From | Arjan van de Ven <> | Subject | Re: [PATCH] debug: Introduce a dev_WARN() function |
| |
On Fri, 19 Sep 2008 21:26:30 -0700 Greg KH <greg@kroah.com> wrote:
> On Fri, Sep 19, 2008 at 09:07:33PM -0700, Arjan van de Ven wrote: > > > > From: Arjan van de Ven <arjan@linux.intel.com> > > Date: Fri, 19 Sep 2008 21:03:06 -0700 > > Subject: [PATCH] debug: Introduce a dev_WARN() function > > > > in the line of dev_printk(), this patch introduces a dev_WARN() > > macro, that takes a struct device and then a printk format/args set > > of arguments. Unlike dev_printk(), the effect is that of WARN() in > > that a full warning message (including filename/line, module list, > > versions and a backtrace) is printed in addition to the device name > > and the arguments. > > I like the idea, but we already have dev_warn(), so dev_WARN() might > be a bit confusing for people. > > Perhaps just documenting it with a docbook tag would suffice? >
I added a set of comments, and also ended up doing the below USB change
From 8a2fde5066bed00906df2fff1121d361e9e552f7 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven <arjan@linux.intel.com> Date: Sat, 20 Sep 2008 10:35:51 -0700 Subject: [PATCH] usb: turn dev_warn+WARN_ON combos into dev_WARN
dev_WARN is both compacter and gives better debug information than just a WARN_ON, since people and tools will copy the device information message together with the WARN_ON in bug reports.
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> --- drivers/usb/host/uhci-q.c | 24 ++++++++---------------- 1 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/drivers/usb/host/uhci-q.c b/drivers/usb/host/uhci-q.c index db64593..1f0c2cf 100644 --- a/drivers/usb/host/uhci-q.c +++ b/drivers/usb/host/uhci-q.c @@ -123,14 +123,10 @@ static struct uhci_td *uhci_alloc_td(struct uhci_hcd *uhci) static void uhci_free_td(struct uhci_hcd *uhci, struct uhci_td *td) { - if (!list_empty(&td->list)) { - dev_warn(uhci_dev(uhci), "td %p still in list!\n", td); - WARN_ON(1); - } - if (!list_empty(&td->fl_list)) { - dev_warn(uhci_dev(uhci), "td %p still in fl_list!\n", td); - WARN_ON(1); - } + if (!list_empty(&td->list)) + dev_WARN(uhci_dev(uhci), "td %p still in list!\n", td); + if (!list_empty(&td->fl_list)) + dev_WARN(uhci_dev(uhci), "td %p still in fl_list!\n", td); dma_pool_free(uhci->td_pool, td, td->dma_handle); } @@ -295,10 +291,8 @@ static struct uhci_qh *uhci_alloc_qh(struct uhci_hcd *uhci, static void uhci_free_qh(struct uhci_hcd *uhci, struct uhci_qh *qh) { WARN_ON(qh->state != QH_STATE_IDLE && qh->udev); - if (!list_empty(&qh->queue)) { - dev_warn(uhci_dev(uhci), "qh %p list not empty!\n", qh); - WARN_ON(1); - } + if (!list_empty(&qh->queue)) + dev_WARN(uhci_dev(uhci), "qh %p list not empty!\n", qh); list_del(&qh->node); if (qh->udev) { @@ -746,11 +740,9 @@ static void uhci_free_urb_priv(struct uhci_hcd *uhci, { struct uhci_td *td, *tmp; - if (!list_empty(&urbp->node)) { - dev_warn(uhci_dev(uhci), "urb %p still on QH's list!\n", + if (!list_empty(&urbp->node)) + dev_WARN(uhci_dev(uhci), "urb %p still on QH's list!\n", urbp->urb); - WARN_ON(1); - } list_for_each_entry_safe(td, tmp, &urbp->td_list, list) { uhci_remove_td_from_urbp(td); -- 1.5.5.1
-- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org
| |