diff options
Diffstat (limited to 'fs/sysfs/dir.c')
| -rw-r--r-- | fs/sysfs/dir.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 610b5bdbe75b..5f3d725d1125 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c | |||
| @@ -43,7 +43,7 @@ static struct sysfs_dirent * sysfs_new_dirent(struct sysfs_dirent * parent_sd, | |||
| 43 | 43 | ||
| 44 | memset(sd, 0, sizeof(*sd)); | 44 | memset(sd, 0, sizeof(*sd)); |
| 45 | atomic_set(&sd->s_count, 1); | 45 | atomic_set(&sd->s_count, 1); |
| 46 | atomic_set(&sd->s_event, 0); | 46 | atomic_set(&sd->s_event, 1); |
| 47 | INIT_LIST_HEAD(&sd->s_children); | 47 | INIT_LIST_HEAD(&sd->s_children); |
| 48 | list_add(&sd->s_sibling, &parent_sd->s_children); | 48 | list_add(&sd->s_sibling, &parent_sd->s_children); |
| 49 | sd->s_element = element; | 49 | sd->s_element = element; |
| @@ -430,10 +430,9 @@ static int sysfs_readdir(struct file * filp, void * dirent, filldir_t filldir) | |||
| 430 | i++; | 430 | i++; |
| 431 | /* fallthrough */ | 431 | /* fallthrough */ |
| 432 | default: | 432 | default: |
| 433 | if (filp->f_pos == 2) { | 433 | if (filp->f_pos == 2) |
| 434 | list_del(q); | 434 | list_move(q, &parent_sd->s_children); |
| 435 | list_add(q, &parent_sd->s_children); | 435 | |
| 436 | } | ||
| 437 | for (p=q->next; p!= &parent_sd->s_children; p=p->next) { | 436 | for (p=q->next; p!= &parent_sd->s_children; p=p->next) { |
| 438 | struct sysfs_dirent *next; | 437 | struct sysfs_dirent *next; |
| 439 | const char * name; | 438 | const char * name; |
| @@ -455,8 +454,7 @@ static int sysfs_readdir(struct file * filp, void * dirent, filldir_t filldir) | |||
| 455 | dt_type(next)) < 0) | 454 | dt_type(next)) < 0) |
| 456 | return 0; | 455 | return 0; |
| 457 | 456 | ||
| 458 | list_del(q); | 457 | list_move(q, p); |
| 459 | list_add(q, p); | ||
| 460 | p = q; | 458 | p = q; |
| 461 | filp->f_pos++; | 459 | filp->f_pos++; |
| 462 | } | 460 | } |
