reiserfs: switch to generic_{get,set,remove}xattr()
reiserfs_xattr_[sg]et() will fail with -EOPNOTSUPP for V1 inodes anyway, and all reiserfs instances of ->[sg]et() call it and so does ->set_acl(). Checks for name length in the instances had been bogus; they should've been "bugger off if it's _exactly_ the prefix" (as generic would do on its own) and not "bugger off if it's shorter than the prefix" - that can't happen. xattr_full_name() is needed to adjust for the fact that generic instances will skip the prefix in the name passed to ->[gs]et(); reiserfs homegrown analogues didn't. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -12,26 +12,24 @@ static int
|
||||
security_get(const struct xattr_handler *handler, struct dentry *dentry,
|
||||
const char *name, void *buffer, size_t size)
|
||||
{
|
||||
if (strlen(name) < sizeof(XATTR_SECURITY_PREFIX))
|
||||
return -EINVAL;
|
||||
|
||||
if (IS_PRIVATE(d_inode(dentry)))
|
||||
return -EPERM;
|
||||
|
||||
return reiserfs_xattr_get(d_inode(dentry), name, buffer, size);
|
||||
return reiserfs_xattr_get(d_inode(dentry),
|
||||
xattr_full_name(handler, name),
|
||||
buffer, size);
|
||||
}
|
||||
|
||||
static int
|
||||
security_set(const struct xattr_handler *handler, struct dentry *dentry,
|
||||
const char *name, const void *buffer, size_t size, int flags)
|
||||
{
|
||||
if (strlen(name) < sizeof(XATTR_SECURITY_PREFIX))
|
||||
return -EINVAL;
|
||||
|
||||
if (IS_PRIVATE(d_inode(dentry)))
|
||||
return -EPERM;
|
||||
|
||||
return reiserfs_xattr_set(d_inode(dentry), name, buffer, size, flags);
|
||||
return reiserfs_xattr_set(d_inode(dentry),
|
||||
xattr_full_name(handler, name),
|
||||
buffer, size, flags);
|
||||
}
|
||||
|
||||
static bool security_list(struct dentry *dentry)
|
||||
|
Reference in New Issue
Block a user