]> err.no Git - linux-2.6/blobdiff - fs/lockd/svcproc.c
lockd: handle fl_grant callbacks
[linux-2.6] / fs / lockd / svcproc.c
index db8d85c32d29df03fabc8796898bc2ca47cfbe51..31cb48425733033529d4a7e7ba63014773b1226b 100644 (file)
@@ -22,8 +22,8 @@
 #define NLMDBG_FACILITY                NLMDBG_CLIENT
 
 #ifdef CONFIG_LOCKD_V4
-static u32
-cast_to_nlm(u32 status, u32 vers)
+static __be32
+cast_to_nlm(__be32 status, u32 vers)
 {
        /* Note: status is assumed to be in network byte order !!! */
        if (vers != 4){
@@ -52,14 +52,14 @@ cast_to_nlm(u32 status, u32 vers)
 /*
  * Obtain client and file from arguments
  */
-static u32
+static __be32
 nlmsvc_retrieve_args(struct svc_rqst *rqstp, struct nlm_args *argp,
                        struct nlm_host **hostp, struct nlm_file **filp)
 {
        struct nlm_host         *host = NULL;
        struct nlm_file         *file = NULL;
        struct nlm_lock         *lock = &argp->lock;
-       u32                     error = 0;
+       __be32                  error = 0;
 
        /* nfsd callbacks must have been installed for this procedure */
        if (!nlmsvc_ops)
@@ -253,7 +253,7 @@ nlmsvc_proc_granted(struct svc_rqst *rqstp, struct nlm_args *argp,
        resp->cookie = argp->cookie;
 
        dprintk("lockd: GRANTED       called\n");
-       resp->status = nlmclnt_grant(&rqstp->rq_addr, &argp->lock);
+       resp->status = nlmclnt_grant(svc_addr_in(rqstp), &argp->lock);
        dprintk("lockd: GRANTED       status %d\n", ntohl(resp->status));
        return rpc_success;
 }
@@ -263,7 +263,7 @@ nlmsvc_proc_granted(struct svc_rqst *rqstp, struct nlm_args *argp,
  */
 static void nlmsvc_callback_exit(struct rpc_task *task, void *data)
 {
-       dprintk("lockd: %4d callback returned %d\n", task->tk_pid,
+       dprintk("lockd: %5u callback returned %d\n", task->tk_pid,
                        -task->tk_status);
 }
 
@@ -452,15 +452,16 @@ static __be32
 nlmsvc_proc_sm_notify(struct svc_rqst *rqstp, struct nlm_reboot *argp,
                                              void              *resp)
 {
-       struct sockaddr_in      saddr = rqstp->rq_addr;
+       struct sockaddr_in      saddr;
+
+       memcpy(&saddr, svc_addr_in(rqstp), sizeof(saddr));
 
        dprintk("lockd: SM_NOTIFY     called\n");
        if (saddr.sin_addr.s_addr != htonl(INADDR_LOOPBACK)
         || ntohs(saddr.sin_port) >= 1024) {
-               printk(KERN_WARNING
-                       "lockd: rejected NSM callback from %08x:%d\n",
-                       ntohl(rqstp->rq_addr.sin_addr.s_addr),
-                       ntohs(rqstp->rq_addr.sin_port));
+               char buf[RPC_MAX_ADDRBUFLEN];
+               printk(KERN_WARNING "lockd: rejected NSM callback from %s\n",
+                               svc_print_addr(rqstp, buf, sizeof(buf)));
                return rpc_system_err;
        }