From d0dfb93f300f5b6026ff6ff3e7752a1e11bc2ed5 Mon Sep 17 00:00:00 2001 From: "J. Bruce Fields" Date: Fri, 24 May 2013 09:47:49 -0400 Subject: [PATCH] --- yaml --- r: 376449 b: refs/heads/master c: b161c144404c18f6a9e20e46b63828ae3c2eb093 h: refs/heads/master i: 376447: 8407caa030f392144efd434e9af9a6ab8b79aa56 v: v3 --- [refs] | 2 +- trunk/net/sunrpc/auth_gss/svcauth_gss.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e84390c05f54..d9885dc6cab4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 625cdd78d119d5848ac3c47d129bdf5f23f64120 +refs/heads/master: b161c144404c18f6a9e20e46b63828ae3c2eb093 diff --git a/trunk/net/sunrpc/auth_gss/svcauth_gss.c b/trunk/net/sunrpc/auth_gss/svcauth_gss.c index 2c6a1ece54bf..29b4ba93ab3c 100644 --- a/trunk/net/sunrpc/auth_gss/svcauth_gss.c +++ b/trunk/net/sunrpc/auth_gss/svcauth_gss.c @@ -1317,10 +1317,12 @@ static inline bool gssp_ready(struct sunrpc_net *sn) return false; } -static int wait_for_gss_proxy(struct net *net) +static int wait_for_gss_proxy(struct net *net, struct file *file) { struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); + if (file->f_flags & O_NONBLOCK && !gssp_ready(sn)) + return -EAGAIN; return wait_event_interruptible(sn->gssp_wq, gssp_ready(sn)); } @@ -1362,7 +1364,7 @@ static ssize_t read_gssp(struct file *file, char __user *buf, size_t len; int ret; - ret = wait_for_gss_proxy(net); + ret = wait_for_gss_proxy(net, file); if (ret) return ret;