Re: WARNING: at drivers/base/sys.c:183 sysdev_driver_register+0x7a

Mike Galbraith
2008-05-07T06:16:41Z

On Wed, 2008-05-07 at 00:39 +0200, Rafael J. Wysocki wrote:
> On Tuesday, 22 of April 2008, Mike Galbraith wrote:
> >
> > On Tue, 2008-04-22 at 09:53 +0200, Ingo Molnar wrote:
> > > hi Len,
> > >
> > > randconfig boot testing found this new debug warning message in the
> > > syslog:
> >
> > Ditto with Q6600 and v2.6.25-3410-g8075014.
>
> Does it still happen with the current -git?

No, it was fixed by:

commit db176c6ed8974fae94328ad5ac9e70b094ff22fd
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date: Wed May 7 04:02:53 2008 +0900

Fix bogus warning in sysdev_driver_register()

if ((drv->entry.next != drv->entry.prev) ||
(drv->entry.next != NULL)) {

warns list_empty(&drv->entry).

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Greg KH <gregkh@suse.de>
Cc: Len Brown <lenb@kernel.org>
[ Version 2 totally redone based on suggestions from Linus & Greg ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

diff --git a/drivers/base/sys.c b/drivers/base/sys.c
index 4fbb56b..358bb0b 100644
--- a/drivers/base/sys.c
+++ b/drivers/base/sys.c
@@ -175,8 +175,7 @@ int sysdev_driver_register(struct sysdev_class *cls, struct sysdev_driver *drv)
}

/* Check whether this driver has already been added to a class. */
- if ((drv->entry.next != drv->entry.prev) ||
- (drv->entry.next != NULL)) {
+ if (drv->entry.next && !list_empty(&drv->entry)) {
printk(KERN_WARNING "sysdev: class %s: driver (%p) has already"
" been registered to a class, something is wrong, but "
"will forge on!\n", cls->name, drv);