vfs: move cap_convert_nscap() call into vfs_setxattr()
cap_convert_nscap() does permission checking as well as conversion of the xattr value conditionally based on fs's user-ns. This is needed by overlayfs and probably other layered fs (ecryptfs) and is what vfs_foo() is supposed to do anyway. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com> Acked-by: James Morris <jamorris@linux.microsoft.com>
This commit is contained in:
@@ -473,7 +473,7 @@ static bool validheader(size_t size, const struct vfs_cap_data *cap)
|
||||
*
|
||||
* If all is ok, we return the new size, on error return < 0.
|
||||
*/
|
||||
int cap_convert_nscap(struct dentry *dentry, void **ivalue, size_t size)
|
||||
int cap_convert_nscap(struct dentry *dentry, const void **ivalue, size_t size)
|
||||
{
|
||||
struct vfs_ns_cap_data *nscap;
|
||||
uid_t nsrootid;
|
||||
@@ -516,7 +516,6 @@ int cap_convert_nscap(struct dentry *dentry, void **ivalue, size_t size)
|
||||
nscap->magic_etc = cpu_to_le32(nsmagic);
|
||||
memcpy(&nscap->data, &cap->data, sizeof(__le32) * 2 * VFS_CAP_U32);
|
||||
|
||||
kvfree(*ivalue);
|
||||
*ivalue = nscap;
|
||||
return newsize;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user