* [RFC PATCH] HFSPlus: fix mount uid/gid bug
@ 2007-06-20 21:15 Wyatt Banks
0 siblings, 0 replies; only message in thread
From: Wyatt Banks @ 2007-06-20 21:15 UTC (permalink / raw)
To: linux-kernel
From: Wyatt Banks <wyatt@banksresearch.com>
HFSPlus: fix broken logic for mount uid=xxx,gid=xxx. (bug 3533)
Signed-off-by Wyatt Banks <wyatt@banksresearch.com>
---
Patched against 2.6.21.5
Tested on an x86 machine with USB hard drive formatted by a
PowerPC Mac.
This is a patch to address bug 3533.
The 2 lines that should be setting the uid/gid:
if (!inode->i_uid && !mode)
if (!inode->i_gid && !mode)
always evaluate as false. mode is the BSD file type and mode bits.
These lines do nothing since the file type bits are not masked off
with S_IFMT.
References:
http://bugzilla.kernel.org/show_bug.cgi?id=3533
http://developer.apple.com/technotes/tn/tn1150.html
diff -uprN -X linux-2.6.21.5/Documentation/dontdiff linux-2.6.21.5/fs/hfsplus/hfsplus_fs.h linux-2.6.21.5-devel/fs/hfsplus/hfsplus_fs.h
--- linux-2.6.21.5/fs/hfsplus/hfsplus_fs.h 2007-06-11 14:37:06.000000000 -0400
+++ linux-2.6.21.5-devel/fs/hfsplus/hfsplus_fs.h 2007-06-16 23:35:43.000000000 -0400
@@ -139,6 +139,8 @@ struct hfsplus_sb_info {
uid_t uid;
gid_t gid;
+ int uid_provided, gid_provided;
+
int part, session;
unsigned long flags;
diff -uprN -X linux-2.6.21.5/Documentation/dontdiff linux-2.6.21.5/fs/hfsplus/inode.c linux-2.6.21.5-devel/fs/hfsplus/inode.c
--- linux-2.6.21.5/fs/hfsplus/inode.c 2007-06-11 14:37:06.000000000 -0400
+++ linux-2.6.21.5-devel/fs/hfsplus/inode.c 2007-06-18 20:11:18.000000000 -0400
@@ -181,11 +181,11 @@ static void hfsplus_get_perms(struct ino
mode = be16_to_cpu(perms->mode);
inode->i_uid = be32_to_cpu(perms->owner);
- if (!inode->i_uid && !mode)
+ if (HFSPLUS_SB(sb).uid_provided)
inode->i_uid = HFSPLUS_SB(sb).uid;
inode->i_gid = be32_to_cpu(perms->group);
- if (!inode->i_gid && !mode)
+ if (HFSPLUS_SB(sb).gid_provided)
inode->i_gid = HFSPLUS_SB(sb).gid;
if (dir) {
diff -uprN -X linux-2.6.21.5/Documentation/dontdiff linux-2.6.21.5/fs/hfsplus/options.c linux-2.6.21.5-devel/fs/hfsplus/options.c
--- linux-2.6.21.5/fs/hfsplus/options.c 2007-06-11 14:37:06.000000000 -0400
+++ linux-2.6.21.5-devel/fs/hfsplus/options.c 2007-06-16 23:36:30.000000000 -0400
@@ -106,6 +106,7 @@ int hfsplus_parse_options(char *input, s
return 0;
}
sbi->uid = (uid_t)tmp;
+ sbi->uid_provided = 1;
break;
case opt_gid:
if (match_int(&args[0], &tmp)) {
@@ -113,6 +114,7 @@ int hfsplus_parse_options(char *input, s
return 0;
}
sbi->gid = (gid_t)tmp;
+ sbi->gid_provided = 1;
break;
case opt_part:
if (match_int(&args[0], &sbi->part)) {
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-06-20 21:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-20 21:15 [RFC PATCH] HFSPlus: fix mount uid/gid bug Wyatt Banks
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox