Loading fs/overlayfs/file.c +1 −1 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence) old_cred = ovl_override_creds(inode->i_sb); ret = vfs_llseek(real.file, offset, whence); revert_creds(old_cred); ovl_revert_creds(old_cred); file->f_pos = real.file->f_pos; inode_unlock(inode); Loading fs/xattr.c +10 −1 Original line number Diff line number Diff line Loading @@ -305,6 +305,9 @@ __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, handler = xattr_resolve_name(inode, &name); if (IS_ERR(handler)) return PTR_ERR(handler); if (unlikely(handler->__get)) return handler->__get(handler, dentry, inode, name, value, size); if (!handler->get) return -EOPNOTSUPP; return handler->get(handler, dentry, inode, name, value, size); Loading @@ -316,6 +319,7 @@ vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) { struct inode *inode = dentry->d_inode; int error; const struct xattr_handler *handler; error = xattr_permission(inode, name, MAY_READ); if (error) Loading @@ -338,7 +342,12 @@ vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) return ret; } nolsm: return __vfs_getxattr(dentry, inode, name, value, size); handler = xattr_resolve_name(inode, &name); if (IS_ERR(handler)) return PTR_ERR(handler); if (!handler->get) return -EOPNOTSUPP; return handler->get(handler, dentry, inode, name, value, size); } EXPORT_SYMBOL_GPL(vfs_getxattr); Loading include/linux/xattr.h +5 −2 Original line number Diff line number Diff line Loading @@ -30,10 +30,13 @@ struct xattr_handler { const char *prefix; int flags; /* fs private flags */ bool (*list)(struct dentry *dentry); int (*get)(const struct xattr_handler *, struct dentry *dentry, int (*get)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size); int (*set)(const struct xattr_handler *, struct dentry *dentry, int (*__get)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size); int (*set)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags); }; Loading Loading
fs/overlayfs/file.c +1 −1 Original line number Diff line number Diff line Loading @@ -179,7 +179,7 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence) old_cred = ovl_override_creds(inode->i_sb); ret = vfs_llseek(real.file, offset, whence); revert_creds(old_cred); ovl_revert_creds(old_cred); file->f_pos = real.file->f_pos; inode_unlock(inode); Loading
fs/xattr.c +10 −1 Original line number Diff line number Diff line Loading @@ -305,6 +305,9 @@ __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, handler = xattr_resolve_name(inode, &name); if (IS_ERR(handler)) return PTR_ERR(handler); if (unlikely(handler->__get)) return handler->__get(handler, dentry, inode, name, value, size); if (!handler->get) return -EOPNOTSUPP; return handler->get(handler, dentry, inode, name, value, size); Loading @@ -316,6 +319,7 @@ vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) { struct inode *inode = dentry->d_inode; int error; const struct xattr_handler *handler; error = xattr_permission(inode, name, MAY_READ); if (error) Loading @@ -338,7 +342,12 @@ vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) return ret; } nolsm: return __vfs_getxattr(dentry, inode, name, value, size); handler = xattr_resolve_name(inode, &name); if (IS_ERR(handler)) return PTR_ERR(handler); if (!handler->get) return -EOPNOTSUPP; return handler->get(handler, dentry, inode, name, value, size); } EXPORT_SYMBOL_GPL(vfs_getxattr); Loading
include/linux/xattr.h +5 −2 Original line number Diff line number Diff line Loading @@ -30,10 +30,13 @@ struct xattr_handler { const char *prefix; int flags; /* fs private flags */ bool (*list)(struct dentry *dentry); int (*get)(const struct xattr_handler *, struct dentry *dentry, int (*get)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size); int (*set)(const struct xattr_handler *, struct dentry *dentry, int (*__get)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size); int (*set)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags); }; Loading