Skip to content

Commit

Permalink
SUNRPC: Fix a bug in gss_create_upcall
Browse files Browse the repository at this point in the history
If wait_event_interruptible_timeout() is successful, it returns
the number of seconds remaining until the timeout. In that
case, we should be retrying the upcall.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed May 15, 2013
1 parent f722406 commit d36ccb9
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions net/sunrpc/auth_gss/auth_gss.c
Original file line number Diff line number Diff line change
Expand Up @@ -563,11 +563,12 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
struct rpc_cred *cred = &gss_cred->gc_base;
struct gss_upcall_msg *gss_msg;
DEFINE_WAIT(wait);
int err = 0;
int err;

dprintk("RPC: %s for uid %u\n",
__func__, from_kuid(&init_user_ns, cred->cr_uid));
retry:
err = 0;
gss_msg = gss_setup_upcall(gss_auth->client, gss_auth, cred);
if (PTR_ERR(gss_msg) == -EAGAIN) {
err = wait_event_interruptible_timeout(pipe_version_waitqueue,
Expand All @@ -576,7 +577,7 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
warn_gssd();
err = -EACCES;
}
if (err)
if (err < 0)
goto out;
goto retry;
}
Expand Down

0 comments on commit d36ccb9

Please sign in to comment.