This makes it more symmetric with new_dentry_private_info. Signed-off-by: Josef 'Jeff' Sipek <jsipek@xxxxxxxxxxxxx> --- fs/unionfs/dentry.c | 3 +-- fs/unionfs/lookup.c | 13 ++++++------- fs/unionfs/main.c | 2 +- fs/unionfs/union.h | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/fs/unionfs/dentry.c b/fs/unionfs/dentry.c index db0ef43..9bd521b 100644 --- a/fs/unionfs/dentry.c +++ b/fs/unionfs/dentry.c @@ -334,8 +334,7 @@ static void unionfs_d_release(struct dentry *dentry) out_free: /* No need to unlock it, because it is disappeared. */ - free_dentry_private_data(UNIONFS_D(dentry)); - dentry->d_fsdata = NULL; /* just to be safe */ + free_dentry_private_data(dentry); out: return; diff --git a/fs/unionfs/lookup.c b/fs/unionfs/lookup.c index 246a67a..8a09540 100644 --- a/fs/unionfs/lookup.c +++ b/fs/unionfs/lookup.c @@ -452,11 +452,12 @@ void unionfs_destroy_dentry_cache(void) kmem_cache_destroy(unionfs_dentry_cachep); } -void free_dentry_private_data(struct unionfs_dentry_info *udi) +void free_dentry_private_data(struct dentry *dentry) { - if (!udi) + if (!dentry || !dentry->d_fsdata) return; - kmem_cache_free(unionfs_dentry_cachep, udi); + kmem_cache_free(unionfs_dentry_cachep, dentry->d_fsdata); + dentry->d_fsdata = NULL; } static inline int __realloc_dentry_private_data(struct dentry *dentry) @@ -493,8 +494,7 @@ int realloc_dentry_private_data(struct dentry *dentry) return 0; kfree(UNIONFS_D(dentry)->lower_paths); - free_dentry_private_data(UNIONFS_D(dentry)); - dentry->d_fsdata = NULL; + free_dentry_private_data(dentry); return -ENOMEM; } @@ -520,8 +520,7 @@ int new_dentry_private_data(struct dentry *dentry) return 0; mutex_unlock(&info->lock); - free_dentry_private_data(info); - dentry->d_fsdata = NULL; + free_dentry_private_data(dentry); return -ENOMEM; } diff --git a/fs/unionfs/main.c b/fs/unionfs/main.c index 2bcc84c..b9fe431 100644 --- a/fs/unionfs/main.c +++ b/fs/unionfs/main.c @@ -632,7 +632,7 @@ static int unionfs_read_super(struct super_block *sb, void *raw_data, out_freedpd: if (UNIONFS_D(sb->s_root)) { kfree(UNIONFS_D(sb->s_root)->lower_paths); - free_dentry_private_data(UNIONFS_D(sb->s_root)); + free_dentry_private_data(sb->s_root); } dput(sb->s_root); diff --git a/fs/unionfs/union.h b/fs/unionfs/union.h index 7e0c318..6eb151e 100644 --- a/fs/unionfs/union.h +++ b/fs/unionfs/union.h @@ -235,7 +235,7 @@ static inline void unionfs_double_lock_dentry(struct dentry *d1, extern int realloc_dentry_private_data(struct dentry *dentry); extern int new_dentry_private_data(struct dentry *dentry); -extern void free_dentry_private_data(struct unionfs_dentry_info *udi); +extern void free_dentry_private_data(struct dentry *dentry); extern void update_bstart(struct dentry *dentry); /* -- 1.5.2.rc1.165.gaf9b - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html