Driver core: fix SYSF_DEPRECATED breakage for nested classdevs
We should only reparent to a class former class devices that form the base of class hierarchy. Nested devices should still grow from their real parents. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Tested-by: Andrey Borzenkov <arvidjaar@mail.ru> Tested-by: Anssi Hannula <anssi.hannula@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
85923b1246
commit
3eb215de26
1 changed files with 7 additions and 3 deletions
|
@ -586,9 +586,13 @@ void device_initialize(struct device *dev)
|
||||||
static struct kobject * get_device_parent(struct device *dev,
|
static struct kobject * get_device_parent(struct device *dev,
|
||||||
struct device *parent)
|
struct device *parent)
|
||||||
{
|
{
|
||||||
/* Set the parent to the class, not the parent device */
|
/*
|
||||||
/* this keeps sysfs from having a symlink to make old udevs happy */
|
* Set the parent to the class, not the parent device
|
||||||
if (dev->class)
|
* for topmost devices in class hierarchy.
|
||||||
|
* This keeps sysfs from having a symlink to make old
|
||||||
|
* udevs happy
|
||||||
|
*/
|
||||||
|
if (dev->class && (!parent || parent->class != dev->class))
|
||||||
return &dev->class->subsys.kobj;
|
return &dev->class->subsys.kobj;
|
||||||
else if (parent)
|
else if (parent)
|
||||||
return &parent->kobj;
|
return &parent->kobj;
|
||||||
|
|
Loading…
Reference in a new issue