Re: 2.6.24-rc2-mm1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 14, 2007 at 10:19:48AM -0800, Greg KH wrote:
> On Wed, Nov 14, 2007 at 06:02:07PM +0100, Jiri Kosina wrote:
> > On Wed, 14 Nov 2007, Jiri Kosina wrote:
> > 
> > > > I'd suspect the driver tree.  I think I'll need to do a quick -mm2 
> > > > without that tree present.
> > > I am just verifying whether reverting kset changes fixes this, will let 
> > > you know soon.
> > 
> > OK, so I reverted 
> > gregkh-driver-kset-convert-block_subsys-to-use-kset_create (which made me 
> > also revert gregkh-driver-kobject-remove-subsystem_register-functions and 
> > gregkh-driver-kset-remove-decl_subsys-macro so that we compile). Both the 
> > error message from lockdep and more importantly the spinlock lockup have 
> > gone, and the system with these patches reverted boots for me fine.
> > 
> > Well not that fine, I still see (which is the same backtrace that caused 
> > the lockup with plain -rc2-mm1, but doesn't make the machine hang):
> > 
> > floppy0: Floppy io-port 0x03f2 in use
> > WARNING: at lib/kref.c:33 kref_get()
> > 
> > Call Trace:
> >  [<ffffffff8035bd43>] kobject_add+0x9b/0x197
> >  [<ffffffff8035c6e1>] kref_get+0x2f/0x36
> >  [<ffffffff8035b82f>] kobject_get+0x12/0x17
> >  [<ffffffff8035bd55>] kobject_add+0xad/0x197
> >  [<ffffffff802c9a36>] register_disk+0x48/0x205
> >  [<ffffffff80355cf3>] add_disk+0x34/0x3d
> >  [<ffffffff8083cd99>] rd_init+0x172/0x1e1
> >  [<ffffffff8082063a>] kernel_init+0x175/0x2e6
> >  [<ffffffff8025193c>] trace_hardirqs_on+0x115/0x139
> >  [<ffffffff80598769>] trace_hardirqs_on_thunk+0x35/0x3a
> >  [<ffffffff8025193c>] trace_hardirqs_on+0x115/0x139
> >  [<ffffffff8020c628>] child_rip+0xa/0x12
> >  [<ffffffff8020bd3f>] restore_args+0x0/0x30
> >  [<ffffffff808204c5>] kernel_init+0x0/0x2e6
> >  [<ffffffff8020c61e>] child_rip+0x0/0x12
> 
> someone is trying to call kref_get on a kobject that has not been
> initialized yet, which could be the reason the newer patches break
> something, as the pointers are not set up properly with a call to
> kobject_init() first.
> 
> But, alloc_disk() should have been called on this gendisk for it to work
> properly at all, unless something is trashing that structure?
> 
> I'm way confused...

This patch, as found by Dave Young, should fix the issue:

I'll roll it into my larger patchset so that Andrew will get it
automatically next release, but here it is for people to use now.

thanks,

greg k-h

--------------

From: Greg Kroah-Hartman <[email protected]>
Subject: fix bug with adding new block devices in -mm

need to set the kset before initializing the kobject.


---
 block/genhd.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/block/genhd.c
+++ b/block/genhd.c
@@ -718,9 +718,9 @@ struct gendisk *alloc_disk_node(int mino
 			}
 		}
 		disk->minors = minors;
-		kobject_init(&disk->kobj);
 		disk->kobj.kset = block_kset;
 		disk->kobj.ktype = &ktype_block;
+		kobject_init(&disk->kobj);
 		rand_initialize_disk(disk);
 		INIT_WORK(&disk->async_notify,
 			media_change_notify_thread);
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux