Skip to content

Commit e7a72db

Browse files
committed
libfs: Modify mount_pseudo_xattr to be clear it is not a userspace mount
Add MS_KERNMOUNT to the flags that are passed. Use sget_userns and force &init_user_ns instead of calling sget so that even if called from a weird context the internal filesystem will be considered to be in the intial user namespace. Luis Ressel reported that the the failure to pass MS_KERNMOUNT into mount_pseudo broke his in development graphics driver that uses the generic drm infrastructure. I am not certain the deriver was bug free in it's usage of that infrastructure but since mount_pseudo_xattr can never be triggered by userspace it is clearer and less error prone, and less problematic for the code to be explicit. Reported-by: Luis Ressel <[email protected]> Tested-by: Luis Ressel <[email protected]> Signed-off-by: "Eric W. Biederman" <[email protected]>
1 parent ff8bd03 commit e7a72db

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

fs/libfs.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,8 @@ struct dentry *mount_pseudo_xattr(struct file_system_type *fs_type, char *name,
245245
struct inode *root;
246246
struct qstr d_name = QSTR_INIT(name, strlen(name));
247247

248-
s = sget(fs_type, NULL, set_anon_super, MS_NOUSER, NULL);
248+
s = sget_userns(fs_type, NULL, set_anon_super, MS_KERNMOUNT|MS_NOUSER,
249+
&init_user_ns, NULL);
249250
if (IS_ERR(s))
250251
return ERR_CAST(s);
251252

0 commit comments

Comments
 (0)