diff options
Diffstat (limited to 'fs/autofs4/inode.c')
-rw-r--r-- | fs/autofs4/inode.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c index 94bfc154d7a2..e3e70994ab46 100644 --- a/fs/autofs4/inode.c +++ b/fs/autofs4/inode.c | |||
@@ -24,8 +24,10 @@ | |||
24 | 24 | ||
25 | static void ino_lnkfree(struct autofs_info *ino) | 25 | static void ino_lnkfree(struct autofs_info *ino) |
26 | { | 26 | { |
27 | kfree(ino->u.symlink); | 27 | if (ino->u.symlink) { |
28 | ino->u.symlink = NULL; | 28 | kfree(ino->u.symlink); |
29 | ino->u.symlink = NULL; | ||
30 | } | ||
29 | } | 31 | } |
30 | 32 | ||
31 | struct autofs_info *autofs4_init_ino(struct autofs_info *ino, | 33 | struct autofs_info *autofs4_init_ino(struct autofs_info *ino, |
@@ -41,16 +43,18 @@ struct autofs_info *autofs4_init_ino(struct autofs_info *ino, | |||
41 | if (ino == NULL) | 43 | if (ino == NULL) |
42 | return NULL; | 44 | return NULL; |
43 | 45 | ||
44 | ino->flags = 0; | 46 | if (!reinit) { |
45 | ino->mode = mode; | 47 | ino->flags = 0; |
46 | ino->inode = NULL; | 48 | ino->inode = NULL; |
47 | ino->dentry = NULL; | 49 | ino->dentry = NULL; |
48 | ino->size = 0; | 50 | ino->size = 0; |
49 | 51 | INIT_LIST_HEAD(&ino->active); | |
50 | INIT_LIST_HEAD(&ino->expiring); | 52 | INIT_LIST_HEAD(&ino->expiring); |
53 | atomic_set(&ino->count, 0); | ||
54 | } | ||
51 | 55 | ||
56 | ino->mode = mode; | ||
52 | ino->last_used = jiffies; | 57 | ino->last_used = jiffies; |
53 | atomic_set(&ino->count, 0); | ||
54 | 58 | ||
55 | ino->sbi = sbi; | 59 | ino->sbi = sbi; |
56 | 60 | ||
@@ -339,6 +343,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent) | |||
339 | spin_lock_init(&sbi->fs_lock); | 343 | spin_lock_init(&sbi->fs_lock); |
340 | sbi->queues = NULL; | 344 | sbi->queues = NULL; |
341 | spin_lock_init(&sbi->lookup_lock); | 345 | spin_lock_init(&sbi->lookup_lock); |
346 | INIT_LIST_HEAD(&sbi->active_list); | ||
342 | INIT_LIST_HEAD(&sbi->expiring_list); | 347 | INIT_LIST_HEAD(&sbi->expiring_list); |
343 | s->s_blocksize = 1024; | 348 | s->s_blocksize = 1024; |
344 | s->s_blocksize_bits = 10; | 349 | s->s_blocksize_bits = 10; |