diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2007-01-08 14:16:44 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-07 13:37:11 -0500 |
commit | c744aeae9d173a953b771a7ad5c872f91fa99dec (patch) | |
tree | 83d36e211ff6d0109f3aeb29d4fd1bb2dbb2a9b3 /fs/sysfs | |
parent | 717e48c29d9a58f4d31c1651bec364212da5f6b2 (diff) |
driver core: Allow device_move(dev, NULL).
If we allow NULL as the new parent in device_move(), we need to make sure
that the device is placed into the same place as it would if it was
newly registered:
- Consider the device virtual tree. In order to be able to reuse code,
setup_parent() has been tweaked a bit.
- kobject_move() can fall back to the kset's kobject.
- sysfs_move_dir() uses the sysfs root dir as fallback.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/sysfs')
-rw-r--r-- | fs/sysfs/dir.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 511edef8b321..2bab1b4ddf5a 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c | |||
@@ -378,12 +378,10 @@ int sysfs_move_dir(struct kobject *kobj, struct kobject *new_parent) | |||
378 | struct sysfs_dirent *new_parent_sd, *sd; | 378 | struct sysfs_dirent *new_parent_sd, *sd; |
379 | int error; | 379 | int error; |
380 | 380 | ||
381 | if (!new_parent) | ||
382 | return -EINVAL; | ||
383 | |||
384 | old_parent_dentry = kobj->parent ? | 381 | old_parent_dentry = kobj->parent ? |
385 | kobj->parent->dentry : sysfs_mount->mnt_sb->s_root; | 382 | kobj->parent->dentry : sysfs_mount->mnt_sb->s_root; |
386 | new_parent_dentry = new_parent->dentry; | 383 | new_parent_dentry = new_parent ? |
384 | new_parent->dentry : sysfs_mount->mnt_sb->s_root; | ||
387 | 385 | ||
388 | again: | 386 | again: |
389 | mutex_lock(&old_parent_dentry->d_inode->i_mutex); | 387 | mutex_lock(&old_parent_dentry->d_inode->i_mutex); |