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

Commit 427d6c66 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd: return better errors to exportfs



Someone noticed exportfs happily accepted exports that would later be
rejected when mountd tried to give them to the kernel.  Fix this.

This is a regression from 4c1e1b34
"nfsd: Store ex_anon_uid and ex_anon_gid as kuids and kgids".

Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: stable@vger.kernel.org
Reported-by: default avatarYin.JianHong <jiyin@redhat.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 49e73720
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -536,16 +536,12 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)
		if (err)
			goto out3;
		exp.ex_anon_uid= make_kuid(&init_user_ns, an_int);
		if (!uid_valid(exp.ex_anon_uid))
			goto out3;

		/* anon gid */
		err = get_int(&mesg, &an_int);
		if (err)
			goto out3;
		exp.ex_anon_gid= make_kgid(&init_user_ns, an_int);
		if (!gid_valid(exp.ex_anon_gid))
			goto out3;

		/* fsid */
		err = get_int(&mesg, &an_int);
@@ -583,6 +579,17 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)
				   exp.ex_uuid);
		if (err)
			goto out4;
		/*
		 * For some reason exportfs has been passing down an
		 * invalid (-1) uid & gid on the "dummy" export which it
		 * uses to test export support.  To make sure exportfs
		 * sees errors from check_export we therefore need to
		 * delay these checks till after check_export:
		 */
		if (!uid_valid(exp.ex_anon_uid))
			goto out4;
		if (!gid_valid(exp.ex_anon_gid))
			goto out4;
	}

	expp = svc_export_lookup(&exp);