aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc/svcauth_unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sunrpc/svcauth_unix.c')
-rw-r--r--net/sunrpc/svcauth_unix.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c
index 207311610988..e91b550bc836 100644
--- a/net/sunrpc/svcauth_unix.c
+++ b/net/sunrpc/svcauth_unix.c
@@ -674,6 +674,8 @@ static struct group_info *unix_gid_find(uid_t uid, struct svc_rqst *rqstp)
674 switch (ret) { 674 switch (ret) {
675 case -ENOENT: 675 case -ENOENT:
676 return ERR_PTR(-ENOENT); 676 return ERR_PTR(-ENOENT);
677 case -ETIMEDOUT:
678 return ERR_PTR(-ESHUTDOWN);
677 case 0: 679 case 0:
678 gi = get_group_info(ug->gi); 680 gi = get_group_info(ug->gi);
679 cache_put(&ug->h, &unix_gid_cache); 681 cache_put(&ug->h, &unix_gid_cache);
@@ -720,8 +722,9 @@ svcauth_unix_set_client(struct svc_rqst *rqstp)
720 switch (cache_check(&ip_map_cache, &ipm->h, &rqstp->rq_chandle)) { 722 switch (cache_check(&ip_map_cache, &ipm->h, &rqstp->rq_chandle)) {
721 default: 723 default:
722 BUG(); 724 BUG();
723 case -EAGAIN:
724 case -ETIMEDOUT: 725 case -ETIMEDOUT:
726 return SVC_CLOSE;
727 case -EAGAIN:
725 return SVC_DROP; 728 return SVC_DROP;
726 case -ENOENT: 729 case -ENOENT:
727 return SVC_DENIED; 730 return SVC_DENIED;
@@ -736,6 +739,8 @@ svcauth_unix_set_client(struct svc_rqst *rqstp)
736 switch (PTR_ERR(gi)) { 739 switch (PTR_ERR(gi)) {
737 case -EAGAIN: 740 case -EAGAIN:
738 return SVC_DROP; 741 return SVC_DROP;
742 case -ESHUTDOWN:
743 return SVC_CLOSE;
739 case -ENOENT: 744 case -ENOENT:
740 break; 745 break;
741 default: 746 default:
@@ -776,7 +781,7 @@ svcauth_null_accept(struct svc_rqst *rqstp, __be32 *authp)
776 cred->cr_gid = (gid_t) -1; 781 cred->cr_gid = (gid_t) -1;
777 cred->cr_group_info = groups_alloc(0); 782 cred->cr_group_info = groups_alloc(0);
778 if (cred->cr_group_info == NULL) 783 if (cred->cr_group_info == NULL)
779 return SVC_DROP; /* kmalloc failure - client must retry */ 784 return SVC_CLOSE; /* kmalloc failure - client must retry */
780 785
781 /* Put NULL verifier */ 786 /* Put NULL verifier */
782 svc_putnl(resv, RPC_AUTH_NULL); 787 svc_putnl(resv, RPC_AUTH_NULL);
@@ -840,7 +845,7 @@ svcauth_unix_accept(struct svc_rqst *rqstp, __be32 *authp)
840 goto badcred; 845 goto badcred;
841 cred->cr_group_info = groups_alloc(slen); 846 cred->cr_group_info = groups_alloc(slen);
842 if (cred->cr_group_info == NULL) 847 if (cred->cr_group_info == NULL)
843 return SVC_DROP; 848 return SVC_CLOSE;
844 for (i = 0; i < slen; i++) 849 for (i = 0; i < slen; i++)
845 GROUP_AT(cred->cr_group_info, i) = svc_getnl(argv); 850 GROUP_AT(cred->cr_group_info, i) = svc_getnl(argv);
846 if (svc_getu32(argv) != htonl(RPC_AUTH_NULL) || svc_getu32(argv) != 0) { 851 if (svc_getu32(argv) != htonl(RPC_AUTH_NULL) || svc_getu32(argv) != 0) {