LINUX 5.3.0: Check for 'recurse' arg in keyring_search
[openafs.git] / src / afs / LINUX / osi_nfssrv.c
index a3df7b2..425ecd3 100644 (file)
@@ -21,7 +21,6 @@
 #include "afs/sysincludes.h"
 #include "afsincludes.h"
 #include "nfsclient.h"
-#include "h/smp_lock.h"
 #include <linux/sunrpc/svc.h>
 #include <linux/sunrpc/svcauth.h>
 
@@ -94,7 +93,7 @@ svcauth_afs_accept(struct svc_rqst *rqstp, u32 *authp)
 {
     struct nfs_server_thread *ns;
     struct afs_exporter *outexp;
-    AFS_UCRED *credp;
+    afs_ucred_t *credp;
     struct sockaddr_in *addr;
     int code;
 
@@ -109,7 +108,7 @@ svcauth_afs_accept(struct svc_rqst *rqstp, u32 *authp)
        /* XXX maybe we should fail this with rpc_system_err? */
        return SVC_OK;
     }
-#if HAVE_SVC_ADDR_IN
+#if HAVE_LINUX_SVC_ADDR_IN
     addr = svc_addr_in(rqstp);
 #else
     addr = &rqstp->rq_addr;
@@ -120,14 +119,14 @@ svcauth_afs_accept(struct svc_rqst *rqstp, u32 *authp)
     ns->code           = EACCES;
     ns->client_addr    = *addr;
     ns->client_addrlen = rqstp->rq_addrlen;
-    ns->client_uid     = rqstp->rq_cred.cr_uid;
-    ns->client_gid     = rqstp->rq_cred.cr_gid;
-    if (rqstp->rq_cred.cr_group_info->ngroups > 0)
-       ns->client_g0   = GROUP_AT(rqstp->rq_cred.cr_group_info, 0);
+    ns->client_uid     = afs_cr_uid(&rqstp->rq_cred);
+    ns->client_gid     = afs_cr_gid(&rqstp->rq_cred);
+    if (afs_cr_group_info(&rqstp->rq_cred)->ngroups > 0)
+       ns->client_g0   = GROUP_AT(afs_cr_group_info(&rqstp->rq_cred), 0);
     else
        ns->client_g0   = -1;
-    if (rqstp->rq_cred.cr_group_info->ngroups > 1)
-       ns->client_g1   = GROUP_AT(rqstp->rq_cred.cr_group_info, 1);
+    if (afs_cr_group_info(&rqstp->rq_cred)->ngroups > 1)
+       ns->client_g1   = GROUP_AT(afs_cr_group_info(&rqstp->rq_cred), 1);
     else
        ns->client_g1   = -1;
 
@@ -138,15 +137,15 @@ svcauth_afs_accept(struct svc_rqst *rqstp, u32 *authp)
     }
 
     credp = crget();
-    credp->cr_uid = rqstp->rq_cred.cr_uid;
-    credp->cr_gid = rqstp->rq_cred.cr_gid;
-    get_group_info(rqstp->rq_cred.cr_group_info);
-    credp->cr_group_info = rqstp->rq_cred.cr_group_info;
+    afs_set_cr_uid(credp, afs_cr_uid(&rqstp->rq_cred));
+    afs_set_cr_gid(credp, afs_cr_gid(&rqstp->rq_cred));
+    get_group_info(afs_cr_group_info(&rqstp->rq_cred));
+    afs_set_cr_group_info(credp, afs_cr_group_info(&rqstp->rq_cred));
 
     /* avoid creating wildcard entries by mapping anonymous
      * clients to afs_nobody */
-    if (credp->cr_uid == -1)
-       credp->cr_uid = -2;
+    if (afs_cr_uid(credp) == -1)
+       afs_set_cr_uid(credp, -2);
     code = afs_nfsclient_reqhandler(0, &credp, addr->sin_addr.s_addr,
                                    &ns->uid, &outexp);
     if (!code && outexp) EXP_RELE(outexp);
@@ -181,7 +180,7 @@ svcauth_afs_release(struct svc_rqst *rqstp)
 #endif
 
 
-int osi_linux_nfs_initreq(struct vrequest *av, AFS_UCRED *cr, int *code)
+int osi_linux_nfs_initreq(struct vrequest *av, afs_ucred_t *cr, int *code)
 {
     struct nfs_server_thread *ns;
 
@@ -191,7 +190,7 @@ int osi_linux_nfs_initreq(struct vrequest *av, AFS_UCRED *cr, int *code)
 
     *code = ns->code;
     if (!ns->code) {
-       cr->cr_ruid = NFSXLATOR_CRED;
+       afs_cr_ruid(cr) = NFSXLATOR_CRED;
        av->uid = ns->uid;
     }
     return 1;
@@ -224,6 +223,7 @@ void osi_linux_nfssrv_init(void)
        }
 
        afs_new_authtab[i] = afs_osi_Alloc(sizeof(struct auth_ops));
+       osi_Assert(afs_new_authtab[i] != NULL);
        *(afs_new_authtab[i]) = *(afs_orig_authtab[i]);
        afs_new_authtab[i]->owner = THIS_MODULE;
        afs_new_authtab[i]->accept = svcauth_afs_accept;