Re: [Patch -mm 2/2] driver core: Introduce device_move(): move a device

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

 



On Wed, 22 Nov 2006 10:32:47 -0500 (EST),
Alan Stern <[email protected]> wrote:

> Cornelia Huck wrote:
> 
> > +	if (old_parent)
> > +		klist_del(&dev->knode_parent);
> > +	klist_add_tail(&dev->knode_parent, &new_parent->klist_children);
> 
> > +			klist_del(&dev->knode_parent);
> > +			if (old_parent)
> > +				klist_add_tail(&dev->knode_parent,
> > 						&old_parent->klist_children);
> 
> This is wrong.  klist_del() does not wait for the knode to be removed from
> its klist.  You need to use klist_remove().

Hmpf, you're right.

> I don't see any protection against new_parent being removed while dev is
> being transferred under it.  Are you relying on the caller to make sure
> this never happens?

Is there any mechanism in the driver core to avoid such races? The only
locking I can see are klists and dev->sem (which only protects
probing). AFAICS, the caller needs to ensure consistency anyway (like
with the subchannel mutex we introduced in s390 to ensure device
register and unregister cannot be called concurrently).

-- 
Cornelia Huck
Linux for zSeries Developer
Tel.: +49-7031-16-4837, Mail: [email protected]
-
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