| From foo@baz Sun May 27 16:52:54 CEST 2018 |
| From: Jan Kara <jack@suse.cz> |
| Date: Thu, 22 Feb 2018 10:39:52 +0100 |
| Subject: udf: Provide saner default for invalid uid / gid |
| |
| From: Jan Kara <jack@suse.cz> |
| |
| [ Upstream commit 116e5258e4115aca0c64ac0bf40ded3b353ed626 ] |
| |
| Currently when UDF filesystem is recorded without uid / gid (ids are set |
| to -1), we will assign INVALID_[UG]ID to vfs inode unless user uses uid= |
| and gid= mount options. In such case filesystem could not be modified in |
| any way as VFS refuses to modify files with invalid ids (even by root). |
| This is confusing to users and not very useful default since such media |
| mode is generally used for removable media. Use overflow[ug]id instead |
| so that at least root can modify the filesystem. |
| |
| Reported-by: Steve Kenton <skenton@ou.edu> |
| Reviewed-by: Pali Rohรกr <pali.rohar@gmail.com> |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/udf/super.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/fs/udf/super.c |
| +++ b/fs/udf/super.c |
| @@ -2091,8 +2091,9 @@ static int udf_fill_super(struct super_b |
| bool lvid_open = false; |
| |
| uopt.flags = (1 << UDF_FLAG_USE_AD_IN_ICB) | (1 << UDF_FLAG_STRICT); |
| - uopt.uid = INVALID_UID; |
| - uopt.gid = INVALID_GID; |
| + /* By default we'll use overflow[ug]id when UDF inode [ug]id == -1 */ |
| + uopt.uid = make_kuid(current_user_ns(), overflowuid); |
| + uopt.gid = make_kgid(current_user_ns(), overflowgid); |
| uopt.umask = 0; |
| uopt.fmode = UDF_INVALID_MODE; |
| uopt.dmode = UDF_INVALID_MODE; |