On Fri, Dec 7, 2012 at 8:09 AM, Wedson Almeida Filho <wedso...@gmail.com> wrote: > I don't have the setup anymore, I'll give it a shot if I ever get back it > back. > > I have a question though: why do we need to get a reference to the > parent? If the assumption is that the callee can release its reference
Because device_del() will put reference count of the parent, and the patch only focuses on race between probe/release and shutdown. > to the parent, then one may also expect callees to reassign > dev->parent (e.g., by calling device_move), so it wouldn't be safe to > later call device_unlock on the potentially different dev->parent. As far as device_move() concerned, looks it might be a problem. The problem even exits on driver attach vs. device open/release, if device_move is called in open() and open() happens before driver attach completes. > If we expect dev->parent to remain unchanged, then there's no need to > get an extra reference to the parent as the device itself already > holds one (and we hold an extra one on the device). As I said above, device_del() will put reference count of parent, but I forget why the parent's lock has to be held in this patch. > What am I missing? Your concern on device_remove() might be correct. Also, I am wondering if we can walk the 'dpm_list' backwards for device shutdown, which should be simpler and more reasonable. Thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/