|
Line
Link Here
|
|
-- |
|
|
| 1 |
fs/sysfs/dir.c | 1 + |
|
fs/sysfs/dir.c | 1 + |
| 2 |
fs/sysfs/inode.c | 6 +++++- |
1 |
fs/sysfs/inode.c | 6 +++++- |
| 3 |
2 files changed, 6 insertions(+), 1 deletion(-) |
2 |
2 files changed, 6 insertions(+), 1 deletion(-) |
| 4 |
-- gregkh-2.6.orig/fs/sysfs/dir.c |
3 |
++ gregkh-2.6/fs/sysfs/dir.c |
|
Lines 333-338
void sysfs_remove_dir(struct kobject * k
Link Here
|
| 333 |
* Drop reference from dget() on entrance. |
333 |
* Drop reference from dget() on entrance. |
| 334 |
*/ |
334 |
*/ |
| 335 |
dput(dentry); |
335 |
dput(dentry); |
|
|
336 |
kobj->dentry = NULL; |
| 336 |
} |
337 |
} |
| 337 |
|
338 |
|
| 338 |
int sysfs_rename_dir(struct kobject * kobj, const char *new_name) |
339 |
int sysfs_rename_dir(struct kobject * kobj, const char *new_name) |
| 339 |
-- gregkh-2.6.orig/fs/sysfs/inode.c |
340 |
++ gregkh-2.6/fs/sysfs/inode.c |
|
Lines 226-237
void sysfs_drop_dentry(struct sysfs_dire
Link Here
|
| 226 |
void sysfs_hash_and_remove(struct dentry * dir, const char * name) |
226 |
void sysfs_hash_and_remove(struct dentry * dir, const char * name) |
| 227 |
{ |
227 |
{ |
| 228 |
struct sysfs_dirent * sd; |
228 |
struct sysfs_dirent * sd; |
| 229 |
struct sysfs_dirent * parent_sd = dir->d_fsdata; |
229 |
struct sysfs_dirent * parent_sd; |
|
|
230 |
|
| 231 |
if (!dir) |
| 232 |
return; |
| 230 |
|
233 |
|
| 231 |
if (dir->d_inode == NULL) |
234 |
if (dir->d_inode == NULL) |
| 232 |
/* no inode means this hasn't been made visible yet */ |
235 |
/* no inode means this hasn't been made visible yet */ |
| 233 |
return; |
236 |
return; |
| 234 |
|
237 |
|
|
|
238 |
parent_sd = dir->d_fsdata; |
| 235 |
mutex_lock(&dir->d_inode->i_mutex); |
239 |
mutex_lock(&dir->d_inode->i_mutex); |
| 236 |
list_for_each_entry(sd, &parent_sd->s_children, s_sibling) { |
240 |
list_for_each_entry(sd, &parent_sd->s_children, s_sibling) { |
| 237 |
if (!sd->s_element) |
241 |
if (!sd->s_element) |