diff options
Diffstat (limited to 'fs/overlayfs')
-rw-r--r-- | fs/overlayfs/inode.c | 3 | ||||
-rw-r--r-- | fs/overlayfs/namei.c | 4 | ||||
-rw-r--r-- | fs/overlayfs/overlayfs.h | 6 | ||||
-rw-r--r-- | fs/overlayfs/util.c | 10 |
4 files changed, 15 insertions, 8 deletions
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 8be6cd264f66..3297a5dbaac1 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -748,7 +748,8 @@ unsigned int ovl_get_nlink(struct dentry *lowerdentry, if (!lowerdentry || !upperdentry || d_inode(lowerdentry)->i_nlink == 1) return fallback; - err = vfs_getxattr(upperdentry, OVL_XATTR_NLINK, &buf, sizeof(buf) - 1); + err = ovl_do_getxattr(upperdentry, OVL_XATTR_NLINK, + &buf, sizeof(buf) - 1); if (err < 0) goto fail; diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c index f7d4358db637..7b5ee84b5440 100644 --- a/fs/overlayfs/namei.c +++ b/fs/overlayfs/namei.c @@ -109,7 +109,7 @@ static struct ovl_fh *ovl_get_fh(struct dentry *dentry, const char *name) int res, err; struct ovl_fh *fh = NULL; - res = vfs_getxattr(dentry, name, NULL, 0); + res = ovl_do_getxattr(dentry, name, NULL, 0); if (res < 0) { if (res == -ENODATA || res == -EOPNOTSUPP) return NULL; @@ -123,7 +123,7 @@ static struct ovl_fh *ovl_get_fh(struct dentry *dentry, const char *name) if (!fh) return ERR_PTR(-ENOMEM); - res = vfs_getxattr(dentry, name, fh->buf, res); + res = ovl_do_getxattr(dentry, name, fh->buf, res); if (res < 0) goto fail; diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h index ebc03e086300..a5a7c192819c 100644 --- a/fs/overlayfs/overlayfs.h +++ b/fs/overlayfs/overlayfs.h @@ -170,6 +170,12 @@ static inline int ovl_do_symlink(struct inode *dir, struct dentry *dentry, return err; } +static inline ssize_t ovl_do_getxattr(struct dentry *dentry, const char *name, + void *value, size_t size) +{ + return vfs_getxattr(dentry, name, value, size); +} + static inline int ovl_do_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) { diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 4cc1366c96a6..d2a77659e883 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -548,7 +548,7 @@ bool ovl_check_origin_xattr(struct dentry *dentry) { int res; - res = vfs_getxattr(dentry, OVL_XATTR_ORIGIN, NULL, 0); + res = ovl_do_getxattr(dentry, OVL_XATTR_ORIGIN, NULL, 0); /* Zero size value means "copied up but origin unknown" */ if (res >= 0) @@ -565,7 +565,7 @@ bool ovl_check_dir_xattr(struct dentry *dentry, const char *name) if (!d_is_dir(dentry)) return false; - res = vfs_getxattr(dentry, name, &val, 1); + res = ovl_do_getxattr(dentry, name, &val, 1); if (res == 1 && val == 'y') return true; @@ -853,7 +853,7 @@ int ovl_check_metacopy_xattr(struct dentry *dentry) if (!S_ISREG(d_inode(dentry)->i_mode)) return 0; - res = vfs_getxattr(dentry, OVL_XATTR_METACOPY, NULL, 0); + res = ovl_do_getxattr(dentry, OVL_XATTR_METACOPY, NULL, 0); if (res < 0) { if (res == -ENODATA || res == -EOPNOTSUPP) return 0; @@ -887,7 +887,7 @@ char *ovl_get_redirect_xattr(struct dentry *dentry, int padding) int res; char *s, *next, *buf = NULL; - res = vfs_getxattr(dentry, OVL_XATTR_REDIRECT, NULL, 0); + res = ovl_do_getxattr(dentry, OVL_XATTR_REDIRECT, NULL, 0); if (res == -ENODATA || res == -EOPNOTSUPP) return NULL; if (res < 0) @@ -899,7 +899,7 @@ char *ovl_get_redirect_xattr(struct dentry *dentry, int padding) if (!buf) return ERR_PTR(-ENOMEM); - res = vfs_getxattr(dentry, OVL_XATTR_REDIRECT, buf, res); + res = ovl_do_getxattr(dentry, OVL_XATTR_REDIRECT, buf, res); if (res < 0) goto fail; if (res == 0) |