On Sun, 05 May 2013 11:32:03 +0200 Jean Delvare <[email protected]> wrote:
> We print a dump stack after idr_remove warning. This is useful to find > the faulty piece of code. Let's do the same for ida_remove, as it > would be equally useful there. > > ... > > --- linux-3.10-rc0.orig/lib/idr.c 2013-05-05 10:17:03.086198024 +0200 > +++ linux-3.10-rc0/lib/idr.c 2013-05-05 10:41:11.939134735 +0200 > @@ -1066,6 +1066,7 @@ void ida_remove(struct ida *ida, int id) > err: > printk(KERN_WARNING > "ida_remove called for id=%d which is not allocated.\n", id); > + dump_stack(); > } > EXPORT_SYMBOL(ida_remove); If we're going to do this, we should make that printk a KERN_EMERG or something, otherwise users might see a stack dump with no explanation why it occurred. We can do all that with plain old WARN(). How does this look? From: Andrew Morton <[email protected]> Subject: idr-print-a-stack-dump-after-ida_remove-warning-fix convert the open-coded printk+dump_stack into WARN() Cc: Jean Delvare <[email protected]> Cc: Takashi Iwai <[email protected]> Cc: Tejun Heo <[email protected]> Signed-off-by: Andrew Morton <[email protected]> --- lib/idr.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff -puN lib/idr.c~idr-print-a-stack-dump-after-ida_remove-warning-fix lib/idr.c --- a/lib/idr.c~idr-print-a-stack-dump-after-ida_remove-warning-fix +++ a/lib/idr.c @@ -524,9 +524,7 @@ EXPORT_SYMBOL(idr_alloc_cyclic); static void idr_remove_warning(int id) { - printk(KERN_WARNING - "idr_remove called for id=%d which is not allocated.\n", id); - dump_stack(); + WARN(1, "idr_remove called for id=%d which is not allocated.\n", id); } static void sub_remove(struct idr *idp, int shift, int id) @@ -1064,9 +1062,7 @@ void ida_remove(struct ida *ida, int id) return; err: - printk(KERN_WARNING - "ida_remove called for id=%d which is not allocated.\n", id); - dump_stack(); + WARN(1, "ida_remove called for id=%d which is not allocated.\n", id); } EXPORT_SYMBOL(ida_remove); _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

