|
@@ -579,6 +579,13 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)
|
|
|
exp.ex_uuid);
|
|
|
if (err)
|
|
|
goto out4;
|
|
|
+ /*
|
|
|
+ * No point caching this if it would immediately expire.
|
|
|
+ * Also, this protects exportfs's dummy export from the
|
|
|
+ * anon_uid/anon_gid checks:
|
|
|
+ */
|
|
|
+ if (exp.h.expiry_time < seconds_since_boot())
|
|
|
+ goto out4;
|
|
|
/*
|
|
|
* For some reason exportfs has been passing down an
|
|
|
* invalid (-1) uid & gid on the "dummy" export which it
|
|
@@ -586,10 +593,12 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen)
|
|
|
* sees errors from check_export we therefore need to
|
|
|
* delay these checks till after check_export:
|
|
|
*/
|
|
|
+ err = -EINVAL;
|
|
|
if (!uid_valid(exp.ex_anon_uid))
|
|
|
goto out4;
|
|
|
if (!gid_valid(exp.ex_anon_gid))
|
|
|
goto out4;
|
|
|
+ err = 0;
|
|
|
}
|
|
|
|
|
|
expp = svc_export_lookup(&exp);
|