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>
* take care of following calls. */
rc = cache_check(&rsi_cache, &rsip->h, &cache_upcall_chandle);
switch (rc) {
+ case -ETIMEDOUT:
case -EAGAIN: {
int valid;