From ab1eb5ffb7d2a69c9b24083026a63cbdd758d96b Mon Sep 17 00:00:00 2001 From: Amir Goldstein Date: Sat, 1 Apr 2023 10:29:19 +0300 Subject: ovl: deduplicate lowerdata and lowerstack[] The ovl_inode contains a copy of lowerdata in lowerstack[], so the lowerdata inode member can be removed. Use accessors ovl_lowerdata*() to get the lowerdata whereever the member was accessed directly. Signed-off-by: Amir Goldstein Signed-off-by: Miklos Szeredi --- fs/overlayfs/util.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'fs/overlayfs/util.c') diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 143e6898f50d..b6e66bf8135f 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -225,11 +225,11 @@ void ovl_path_lower(struct dentry *dentry, struct path *path) void ovl_path_lowerdata(struct dentry *dentry, struct path *path) { struct ovl_entry *oe = OVL_E(dentry); - struct ovl_path *lowerstack = ovl_lowerstack(oe); + struct ovl_path *lowerdata = ovl_lowerdata(oe); if (ovl_numlower(oe)) { - path->mnt = lowerstack[ovl_numlower(oe) - 1].layer->mnt; - path->dentry = lowerstack[ovl_numlower(oe) - 1].dentry; + path->mnt = lowerdata->layer->mnt; + path->dentry = lowerdata->dentry; } else { *path = (struct path) { }; } @@ -288,10 +288,7 @@ const struct ovl_layer *ovl_layer_lower(struct dentry *dentry) */ struct dentry *ovl_dentry_lowerdata(struct dentry *dentry) { - struct ovl_entry *oe = OVL_E(dentry); - - return ovl_numlower(oe) ? - ovl_lowerstack(oe)[ovl_numlower(oe) - 1].dentry : NULL; + return ovl_lowerdata_dentry(OVL_E(dentry)); } struct dentry *ovl_dentry_real(struct dentry *dentry) @@ -341,10 +338,12 @@ struct inode *ovl_inode_real(struct inode *inode) /* Return inode which contains lower data. Do not return metacopy */ struct inode *ovl_inode_lowerdata(struct inode *inode) { + struct dentry *lowerdata = ovl_lowerdata_dentry(OVL_I_E(inode)); + if (WARN_ON(!S_ISREG(inode->i_mode))) return NULL; - return OVL_I(inode)->lowerdata ?: ovl_inode_lower(inode); + return lowerdata ? d_inode(lowerdata) : NULL; } /* Return real inode which contains data. Does not return metacopy inode */ -- cgit