OSDN Git Service

udf: fix uid/gid permissions
authorGilbert Ashley Gilbert <amigo@ibiblio.org>
Sat, 6 Sep 2008 08:20:00 +0000 (10:20 +0200)
committerWilly Tarreau <w@1wt.eu>
Sat, 6 Sep 2008 11:35:25 +0000 (13:35 +0200)
This change made it into the 2.6 branch since 2.6.15 and fixes a problem
where the UDF code would change the ownership of files in a UDF filesystem
when they were different thatn the current user, when possible. Example: after
creating a CD using udf as a regular user, if you mounted the CD as root, the
udf code would reset the ownership of all the files on the cd, causing
unecessary write operations. I found this fix while working with an old patch
which adds packet-writing to the 2.4 kernel. This fix is from the original
author (or maintainer) of the udf code.

Note: this was fixed upstream in 4d6660eb3665f22d16aff466eb9d45df6102b254.

fs/udf/inode.c

index 72cdc30..8e03eea 100644 (file)
@@ -1363,9 +1363,13 @@ udf_update_inode(struct inode *inode, int do_sync)
 
        if (inode->i_uid != UDF_SB(inode->i_sb)->s_uid)
                fe->uid = cpu_to_le32(inode->i_uid);
+       else
+               fe->uid = cpu_to_le32(-1);
 
        if (inode->i_gid != UDF_SB(inode->i_sb)->s_gid)
                fe->gid = cpu_to_le32(inode->i_gid);
+       else
+               fe->uid = cpu_to_le32(-1);
 
        udfperms =      ((inode->i_mode & S_IRWXO)     ) |
                        ((inode->i_mode & S_IRWXG) << 2) |