udf: augment UDF permissions on new inodes
authorSteven J. Magnani <steve.magnani@digidescorp.com>
Tue, 27 Aug 2019 12:13:59 +0000 (07:13 -0500)
committerJan Kara <jack@suse.cz>
Tue, 27 Aug 2019 13:38:46 +0000 (15:38 +0200)
commitc3367a1b47d590f97109cd4b5189e750fb26c0f1
tree8f29eb87d3375f3ff048b3384bef9692bde86367
parent8cbd9af9d208b1f015cf8a4645602f0a007270a8
udf: augment UDF permissions on new inodes

Windows presents files created within Linux as read-only, even when
permissions in Linux indicate the file should be writable.

UDF defines a slightly different set of basic file permissions than Linux.
Specifically, UDF has "delete" and "change attribute" permissions for each
access class (user/group/other). Linux has no equivalents for these.

When the Linux UDF driver creates a file (or directory), no UDF delete or
change attribute permissions are granted. The lack of delete permission
appears to cause Windows to mark an item read-only when its permissions
otherwise indicate that it should be read-write.

Fix this by having UDF delete permissions track Linux write permissions.
Also grant UDF change attribute permission to the owner when creating a
new inode.

Reported by: Ty Young
Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
Link: https://lore.kernel.org/r/20190827121359.9954-1-steve@digidescorp.com
Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/file.c
fs/udf/ialloc.c
fs/udf/inode.c
fs/udf/udf_i.h
fs/udf/udfdecl.h