Whamcloud - gitweb
LU-4113 gss: uncatched error in gss_svc_upcall causes drops 60/7960/2
authorThomas Stibor <thomas@stibor.net>
Wed, 16 Oct 2013 14:00:06 +0000 (16:00 +0200)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 25 Oct 2013 03:06:06 +0000 (03:06 +0000)
Since kernel version 2.6.20 the function cache_check() in
net/sunrpc/cache.c can return the error -ETIMEDOUT. This
error should cause to recheck the cache. In current
implementation gss_svc_upcall_handle_init() is not
handling the error which causes to fall through the
switch statement returning GOTO(out, rc = SECSVC_DROP).
As a consequence this error is propagating to
ERROR:do_nego_rpc(): status: -110 (Unknown error 18446744073709551506)
ERROR:lgssc_negotiation(): negotiation rpc error: -85
ERROR:lgssc_kr_negotiate(): key 08786b66: failed to negotiation
and causes client hanging after switching to flavor krb5i/krb5p.

Signed-off-by: Thomas Stibor <thomas@stibor.net>
Change-Id: I7301bea70d96193e0f4a332c6e4b34ba326134ff
Reviewed-on: http://review.whamcloud.com/7960
Tested-by: Hudson
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andrew Korty <ajk@iu.edu>
Reviewed-by: Ken Hornstein <kenh@cmf.nrl.navy.mil>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>

index 0b18ff9..eb5e493 100644 (file)
@@ -899,6 +899,7 @@ cache_check:
         * take care of following calls. */
        rc = cache_check(&rsi_cache, &rsip->h, &cache_upcall_chandle);
        switch (rc) {
+       case -ETIMEDOUT:
        case -EAGAIN: {
                 int valid;