nfsd: return better errors to exportfs
commit 427d6c6646d868fbd3094e7e2e1644d480cd9204 upstream.
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 4c1e1b34d5
"nfsd: Store ex_anon_uid and ex_anon_gid as kuids and kgids".
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Reported-by: Yin.JianHong <jiyin@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1311157d84
commit
8b7330f905
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue