Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0648e02 authored by Ralf Baechle's avatar Ralf Baechle
Browse files

MIPS: VPE: Fix build after the credential changes a while ago.

parent b7a05871
Loading
Loading
Loading
Loading
+23 −10
Original line number Diff line number Diff line
@@ -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;
}

/*
@@ -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;
@@ -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
@@ -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);