Loading arch/mips/kernel/kspd.c +23 −10 Original line number Diff line number Diff line Loading @@ -172,13 +172,20 @@ static unsigned int translate_open_flags(int flags) } static void sp_setfsuidgid( uid_t uid, gid_t gid) static int sp_setfsuidgid(uid_t uid, gid_t gid) { current->cred->fsuid = uid; current->cred->fsgid = gid; struct cred *new; key_fsuid_changed(current); key_fsgid_changed(current); new = prepare_creds(); if (!new) return -ENOMEM; new->fsuid = uid; new->fsgid = gid; commit_creds(new); return 0; } /* Loading @@ -196,7 +203,7 @@ void sp_work_handle_request(void) mm_segment_t old_fs; struct timeval tv; struct timezone tz; int cmd; int err, cmd; char *vcwd; int size; Loading Loading @@ -225,8 +232,11 @@ void sp_work_handle_request(void) /* Run the syscall at the privilege of the user who loaded the SP program */ if (vpe_getuid(tclimit)) sp_setfsuidgid(vpe_getuid(tclimit), vpe_getgid(tclimit)); if (vpe_getuid(tclimit)) { err = sp_setfsuidgid(vpe_getuid(tclimit), vpe_getgid(tclimit)); if (!err) pr_err("Change of creds failed\n"); } switch (sc.cmd) { /* needs the flags argument translating from SDE kit to Loading Loading @@ -283,8 +293,11 @@ void sp_work_handle_request(void) break; } /* switch */ if (vpe_getuid(tclimit)) sp_setfsuidgid( 0, 0); if (vpe_getuid(tclimit)) { err = sp_setfsuidgid(0, 0); if (!err) pr_err("restoring old creds failed\n"); } old_fs = get_fs(); set_fs(KERNEL_DS); Loading Loading
arch/mips/kernel/kspd.c +23 −10 Original line number Diff line number Diff line Loading @@ -172,13 +172,20 @@ static unsigned int translate_open_flags(int flags) } static void sp_setfsuidgid( uid_t uid, gid_t gid) static int sp_setfsuidgid(uid_t uid, gid_t gid) { current->cred->fsuid = uid; current->cred->fsgid = gid; struct cred *new; key_fsuid_changed(current); key_fsgid_changed(current); new = prepare_creds(); if (!new) return -ENOMEM; new->fsuid = uid; new->fsgid = gid; commit_creds(new); return 0; } /* Loading @@ -196,7 +203,7 @@ void sp_work_handle_request(void) mm_segment_t old_fs; struct timeval tv; struct timezone tz; int cmd; int err, cmd; char *vcwd; int size; Loading Loading @@ -225,8 +232,11 @@ void sp_work_handle_request(void) /* Run the syscall at the privilege of the user who loaded the SP program */ if (vpe_getuid(tclimit)) sp_setfsuidgid(vpe_getuid(tclimit), vpe_getgid(tclimit)); if (vpe_getuid(tclimit)) { err = sp_setfsuidgid(vpe_getuid(tclimit), vpe_getgid(tclimit)); if (!err) pr_err("Change of creds failed\n"); } switch (sc.cmd) { /* needs the flags argument translating from SDE kit to Loading Loading @@ -283,8 +293,11 @@ void sp_work_handle_request(void) break; } /* switch */ if (vpe_getuid(tclimit)) sp_setfsuidgid( 0, 0); if (vpe_getuid(tclimit)) { err = sp_setfsuidgid(0, 0); if (!err) pr_err("restoring old creds failed\n"); } old_fs = get_fs(); set_fs(KERNEL_DS); Loading