gssd: on krb5 upcall, have gssd send a more granular error code nfs-utils-1-2-2-rc5
authorJeff Layton <jlayton@redhat.com>
Tue, 12 Jan 2010 12:32:51 +0000 (07:32 -0500)
committerSteve Dickson <steved@redhat.com>
Tue, 12 Jan 2010 12:32:51 +0000 (07:32 -0500)
commit289ad31e013029c924c2777b4d3c0875b87db042
treef8ab667337ba10ff2165f2fa1e24407348dfb26f
parentfb8077ebc31698893ad09620a4e5d32c1d71287d
gssd: on krb5 upcall, have gssd send a more granular error code

Currently if a krb5 context expires, GSSAPI authenticated RPC calls
start returning error (-EACCES in particular). This is bad when someone
has a long running job that's doing filesystem ops on a krb5 authenticated
NFS mount and just happens to forget to redo a 'kinit' in time.

The existing gssd always does a downcall with a '-1' error code if there
are problems, and the kernel always ignores this error code. Begin to
fix this by having gssd distinguish between someone that has no
credcache at all, and someone who has an expired one. In the case where
there is an existing credcache, have gssd downcall with an error code of
-EKEYEXPIRED. If there's not a credcache, then downcall with an error of
-EACCES.

We can then have the kernel use this error code to handle these
situations differently.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/gssd/gssd_proc.c
utils/gssd/krb5_util.c