NFS: Fix infinite loop in gss_create_upcall()

There can be an infinite loop if gss_create_upcall() is called without
the userspace program running.  To prevent this, we return -EACCES if
we notice that pipe_version hasn't changed (indicating that the pipe
has not been opened).

Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Bryan Schumaker
2011-04-13 14:31:28 -04:00
committed by Trond Myklebust
parent 79a48a1f5d
commit d1a8016a2d
2 changed files with 8 additions and 5 deletions

View File

@@ -2224,8 +2224,9 @@ static int nfs4_proc_get_root(struct nfs_server *server, struct nfs_fh *fhandle,
for (i = 0; i < len; i++) {
status = nfs4_lookup_root_sec(server, fhandle, info, flav_array[i]);
if (status != -EPERM)
break;
if (status == -EPERM || status == -EACCES)
continue;
break;
}
if (status == 0)
status = nfs4_server_capabilities(server, fhandle);