Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

userns: Convert isofs to use kuid/kgid where appropriate

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>

+15 -11
+11 -6
fs/isofs/inode.c
··· 21 21 #include <linux/cdrom.h> 22 22 #include <linux/parser.h> 23 23 #include <linux/mpage.h> 24 + #include <linux/user_namespace.h> 24 25 25 26 #include "isofs.h" 26 27 #include "zisofs.h" ··· 172 171 unsigned int blocksize; 173 172 umode_t fmode; 174 173 umode_t dmode; 175 - gid_t gid; 176 - uid_t uid; 174 + kgid_t gid; 175 + kuid_t uid; 177 176 char *iocharset; 178 177 /* LVE */ 179 178 s32 session; ··· 384 383 popt->fmode = popt->dmode = ISOFS_INVALID_MODE; 385 384 popt->uid_set = 0; 386 385 popt->gid_set = 0; 387 - popt->gid = 0; 388 - popt->uid = 0; 386 + popt->gid = GLOBAL_ROOT_GID; 387 + popt->uid = GLOBAL_ROOT_UID; 389 388 popt->iocharset = NULL; 390 389 popt->utf8 = 0; 391 390 popt->overriderockperm = 0; ··· 461 460 case Opt_uid: 462 461 if (match_int(&args[0], &option)) 463 462 return 0; 464 - popt->uid = option; 463 + popt->uid = make_kuid(current_user_ns(), option); 464 + if (!uid_valid(popt->uid)) 465 + return 0; 465 466 popt->uid_set = 1; 466 467 break; 467 468 case Opt_gid: 468 469 if (match_int(&args[0], &option)) 469 470 return 0; 470 - popt->gid = option; 471 + popt->gid = make_kgid(current_user_ns(), option); 472 + if (!gid_valid(popt->gid)) 473 + return 0; 471 474 popt->gid_set = 1; 472 475 break; 473 476 case Opt_mode:
+2 -2
fs/isofs/isofs.h
··· 52 52 53 53 umode_t s_fmode; 54 54 umode_t s_dmode; 55 - gid_t s_gid; 56 - uid_t s_uid; 55 + kgid_t s_gid; 56 + kuid_t s_uid; 57 57 struct nls_table *s_nls_iocharset; /* Native language support table */ 58 58 }; 59 59
+2 -2
fs/isofs/rock.c
··· 364 364 case SIG('P', 'X'): 365 365 inode->i_mode = isonum_733(rr->u.PX.mode); 366 366 set_nlink(inode, isonum_733(rr->u.PX.n_links)); 367 - inode->i_uid = isonum_733(rr->u.PX.uid); 368 - inode->i_gid = isonum_733(rr->u.PX.gid); 367 + i_uid_write(inode, isonum_733(rr->u.PX.uid)); 368 + i_gid_write(inode, isonum_733(rr->u.PX.gid)); 369 369 break; 370 370 case SIG('P', 'N'): 371 371 {
-1
init/Kconfig
··· 944 944 depends on FUSE_FS = n 945 945 depends on GFS2_FS = n 946 946 depends on HPFS_FS = n 947 - depends on ISO9660_FS = n 948 947 depends on JFFS2_FS = n 949 948 depends on JFS_FS = n 950 949 depends on LOGFS = n