Skip to content

Commit ed99472

Browse files
AdityaGarg8gregkh
authored andcommitted
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
commit 9f2b5de upstream. Despite specifying UID and GID in mount command, the specified UID and GID were not being assigned. This patch fixes this issue. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Aditya Garg <[email protected]> Reviewed-by: Viacheslav Dubeyko <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 76d52b5 commit ed99472

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

fs/hfsplus/hfsplus_fs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ struct hfsplus_sb_info {
198198
#define HFSPLUS_SB_HFSX 3
199199
#define HFSPLUS_SB_CASEFOLD 4
200200
#define HFSPLUS_SB_NOBARRIER 5
201+
#define HFSPLUS_SB_UID 6
202+
#define HFSPLUS_SB_GID 7
201203

202204
static inline struct hfsplus_sb_info *HFSPLUS_SB(struct super_block *sb)
203205
{

fs/hfsplus/inode.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,11 @@ static void hfsplus_get_perms(struct inode *inode,
190190
mode = be16_to_cpu(perms->mode);
191191

192192
i_uid_write(inode, be32_to_cpu(perms->owner));
193-
if (!i_uid_read(inode) && !mode)
193+
if ((test_bit(HFSPLUS_SB_UID, &sbi->flags)) || (!i_uid_read(inode) && !mode))
194194
inode->i_uid = sbi->uid;
195195

196196
i_gid_write(inode, be32_to_cpu(perms->group));
197-
if (!i_gid_read(inode) && !mode)
197+
if ((test_bit(HFSPLUS_SB_GID, &sbi->flags)) || (!i_gid_read(inode) && !mode))
198198
inode->i_gid = sbi->gid;
199199

200200
if (dir) {

fs/hfsplus/options.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ int hfsplus_parse_options(char *input, struct hfsplus_sb_info *sbi)
140140
if (!uid_valid(sbi->uid)) {
141141
pr_err("invalid uid specified\n");
142142
return 0;
143+
} else {
144+
set_bit(HFSPLUS_SB_UID, &sbi->flags);
143145
}
144146
break;
145147
case opt_gid:
@@ -151,6 +153,8 @@ int hfsplus_parse_options(char *input, struct hfsplus_sb_info *sbi)
151153
if (!gid_valid(sbi->gid)) {
152154
pr_err("invalid gid specified\n");
153155
return 0;
156+
} else {
157+
set_bit(HFSPLUS_SB_GID, &sbi->flags);
154158
}
155159
break;
156160
case opt_part:

0 commit comments

Comments
 (0)