diff options
-rw-r--r-- | fs/autofs4/autofs_i.h | 3 | ||||
-rw-r--r-- | fs/autofs4/inode.c | 32 | ||||
-rw-r--r-- | fs/autofs4/root.c | 6 |
3 files changed, 15 insertions, 26 deletions
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h index 8f15162f1672..bfa0c6e542f2 100644 --- a/fs/autofs4/autofs_i.h +++ b/fs/autofs4/autofs_i.h | |||
@@ -277,7 +277,8 @@ static inline void managed_dentry_clear_managed(struct dentry *dentry) | |||
277 | /* Initializing function */ | 277 | /* Initializing function */ |
278 | 278 | ||
279 | int autofs4_fill_super(struct super_block *, void *, int); | 279 | int autofs4_fill_super(struct super_block *, void *, int); |
280 | struct autofs_info *autofs4_init_ino(struct autofs_info *, struct autofs_sb_info *sbi); | 280 | struct autofs_info *autofs4_new_ino(struct autofs_sb_info *); |
281 | void autofs4_clean_ino(struct autofs_info *); | ||
281 | 282 | ||
282 | /* Queue management functions */ | 283 | /* Queue management functions */ |
283 | 284 | ||
diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c index b3f9477c9745..0df0c7c46fa2 100644 --- a/fs/autofs4/inode.c +++ b/fs/autofs4/inode.c | |||
@@ -22,35 +22,23 @@ | |||
22 | #include "autofs_i.h" | 22 | #include "autofs_i.h" |
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | 24 | ||
25 | struct autofs_info *autofs4_init_ino(struct autofs_info *ino, | 25 | struct autofs_info *autofs4_new_ino(struct autofs_sb_info *sbi) |
26 | struct autofs_sb_info *sbi) | ||
27 | { | 26 | { |
28 | int reinit = 1; | 27 | struct autofs_info *ino = kzalloc(sizeof(*ino), GFP_KERNEL); |
29 | 28 | if (ino) { | |
30 | if (ino == NULL) { | ||
31 | reinit = 0; | ||
32 | ino = kmalloc(sizeof(*ino), GFP_KERNEL); | ||
33 | } | ||
34 | |||
35 | if (ino == NULL) | ||
36 | return NULL; | ||
37 | |||
38 | if (!reinit) { | ||
39 | ino->flags = 0; | ||
40 | ino->dentry = NULL; | ||
41 | INIT_LIST_HEAD(&ino->active); | 29 | INIT_LIST_HEAD(&ino->active); |
42 | ino->active_count = 0; | ||
43 | INIT_LIST_HEAD(&ino->expiring); | 30 | INIT_LIST_HEAD(&ino->expiring); |
44 | atomic_set(&ino->count, 0); | 31 | ino->last_used = jiffies; |
32 | ino->sbi = sbi; | ||
45 | } | 33 | } |
34 | return ino; | ||
35 | } | ||
46 | 36 | ||
37 | void autofs4_clean_ino(struct autofs_info *ino) | ||
38 | { | ||
47 | ino->uid = 0; | 39 | ino->uid = 0; |
48 | ino->gid = 0; | 40 | ino->gid = 0; |
49 | ino->last_used = jiffies; | 41 | ino->last_used = jiffies; |
50 | |||
51 | ino->sbi = sbi; | ||
52 | |||
53 | return ino; | ||
54 | } | 42 | } |
55 | 43 | ||
56 | void autofs4_free_ino(struct autofs_info *ino) | 44 | void autofs4_free_ino(struct autofs_info *ino) |
@@ -256,7 +244,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent) | |||
256 | /* | 244 | /* |
257 | * Get the root inode and dentry, but defer checking for errors. | 245 | * Get the root inode and dentry, but defer checking for errors. |
258 | */ | 246 | */ |
259 | ino = autofs4_init_ino(NULL, sbi); | 247 | ino = autofs4_new_ino(sbi); |
260 | if (!ino) | 248 | if (!ino) |
261 | goto fail_free; | 249 | goto fail_free; |
262 | root_inode = autofs4_get_inode(s, S_IFDIR | 0755); | 250 | root_inode = autofs4_get_inode(s, S_IFDIR | 0755); |
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c index a5b93e8f49b5..f7c97c084c1f 100644 --- a/fs/autofs4/root.c +++ b/fs/autofs4/root.c | |||
@@ -508,7 +508,7 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s | |||
508 | if (autofs_type_indirect(sbi->type) && IS_ROOT(dentry->d_parent)) | 508 | if (autofs_type_indirect(sbi->type) && IS_ROOT(dentry->d_parent)) |
509 | __managed_dentry_set_managed(dentry); | 509 | __managed_dentry_set_managed(dentry); |
510 | 510 | ||
511 | ino = autofs4_init_ino(NULL, sbi); | 511 | ino = autofs4_new_ino(sbi); |
512 | if (!ino) | 512 | if (!ino) |
513 | return ERR_PTR(-ENOMEM); | 513 | return ERR_PTR(-ENOMEM); |
514 | 514 | ||
@@ -541,7 +541,7 @@ static int autofs4_dir_symlink(struct inode *dir, | |||
541 | 541 | ||
542 | BUG_ON(!ino); | 542 | BUG_ON(!ino); |
543 | 543 | ||
544 | autofs4_init_ino(ino, sbi); | 544 | autofs4_clean_ino(ino); |
545 | 545 | ||
546 | autofs4_del_active(dentry); | 546 | autofs4_del_active(dentry); |
547 | 547 | ||
@@ -732,7 +732,7 @@ static int autofs4_dir_mkdir(struct inode *dir, struct dentry *dentry, int mode) | |||
732 | 732 | ||
733 | BUG_ON(!ino); | 733 | BUG_ON(!ino); |
734 | 734 | ||
735 | autofs4_init_ino(ino, sbi); | 735 | autofs4_clean_ino(ino); |
736 | 736 | ||
737 | autofs4_del_active(dentry); | 737 | autofs4_del_active(dentry); |
738 | 738 | ||