lkml.org 
[lkml]   [2006]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Patch -mm 2/2] driver core: Introduce device_move(): move a device
On Wed, 22 Nov 2006 10:32:47 -0500 (EST),
Alan Stern <stern@rowland.harvard.edu> 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: cornelia.huck@de.ibm.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-11-22 17:49    [W:0.026 / U:1.436 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site