Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
[pandora-kernel.git] / net / sunrpc / pmap_clnt.c
index f4e1357..d9f7653 100644 (file)
@@ -62,7 +62,10 @@ static inline void pmap_map_free(struct portmap_args *map)
 
 static void pmap_map_release(void *data)
 {
-       pmap_map_free(data);
+       struct portmap_args *map = data;
+
+       xprt_put(map->pm_xprt);
+       pmap_map_free(map);
 }
 
 static const struct rpc_call_ops pmap_getport_ops = {
@@ -94,7 +97,7 @@ void rpc_getport(struct rpc_task *task)
        struct rpc_task *child;
        int status;
 
-       dprintk("RPC: %4d rpc_getport(%s, %u, %u, %d)\n",
+       dprintk("RPC: %5u rpc_getport(%s, %u, %u, %d)\n",
                        task->tk_pid, clnt->cl_server,
                        clnt->cl_prog, clnt->cl_vers, xprt->prot);
 
@@ -133,7 +136,7 @@ void rpc_getport(struct rpc_task *task)
        status = -EIO;
        child = rpc_run_task(pmap_clnt, RPC_TASK_ASYNC, &pmap_getport_ops, map);
        if (IS_ERR(child))
-               goto bailout;
+               goto bailout_nofree;
        rpc_put_task(child);
 
        task->tk_xprt->stat.bind_count++;
@@ -175,7 +178,7 @@ int rpc_getport_external(struct sockaddr_in *sin, __u32 prog, __u32 vers, int pr
        char            hostname[32];
        int             status;
 
-       dprintk("RPC:      rpc_getport_external(%u.%u.%u.%u, %u, %u, %d)\n",
+       dprintk("RPC:       rpc_getport_external(%u.%u.%u.%u, %u, %u, %d)\n",
                        NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);
 
        sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr));
@@ -218,11 +221,10 @@ static void pmap_getport_done(struct rpc_task *child, void *data)
                status = 0;
        }
 
-       dprintk("RPC: %4d pmap_getport_done(status %d, port %u)\n",
+       dprintk("RPC: %5u pmap_getport_done(status %d, port %u)\n",
                        child->tk_pid, status, map->pm_port);
 
        pmap_wake_portmap_waiters(xprt, status);
-       xprt_put(xprt);
 }
 
 /**
@@ -255,13 +257,14 @@ int rpc_register(u32 prog, u32 vers, int prot, unsigned short port, int *okay)
        struct rpc_clnt         *pmap_clnt;
        int error = 0;
 
-       dprintk("RPC: registering (%u, %u, %d, %u) with portmapper.\n",
+       dprintk("RPC:       registering (%u, %u, %d, %u) with portmapper.\n",
                        prog, vers, prot, port);
 
        pmap_clnt = pmap_create("localhost", &sin, IPPROTO_UDP, 1);
        if (IS_ERR(pmap_clnt)) {
                error = PTR_ERR(pmap_clnt);
-               dprintk("RPC: couldn't create pmap client. Error = %d\n", error);
+               dprintk("RPC:       couldn't create pmap client. Error = %d\n",
+                               error);
                return error;
        }
 
@@ -272,7 +275,7 @@ int rpc_register(u32 prog, u32 vers, int prot, unsigned short port, int *okay)
                        "RPC: failed to contact portmap (errno %d).\n",
                        error);
        }
-       dprintk("RPC: registration status %d/%d\n", error, *okay);
+       dprintk("RPC:       registration status %d/%d\n", error, *okay);
 
        /* Client deleted automatically because cl_oneshot == 1 */
        return error;
@@ -303,8 +306,9 @@ static struct rpc_clnt *pmap_create(char *hostname, struct sockaddr_in *srvaddr,
  */
 static int xdr_encode_mapping(struct rpc_rqst *req, __be32 *p, struct portmap_args *map)
 {
-       dprintk("RPC: xdr_encode_mapping(%u, %u, %u, %u)\n",
-               map->pm_prog, map->pm_vers, map->pm_prot, map->pm_port);
+       dprintk("RPC:       xdr_encode_mapping(%u, %u, %u, %u)\n",
+                       map->pm_prog, map->pm_vers,
+                       map->pm_prot, map->pm_port);
        *p++ = htonl(map->pm_prog);
        *p++ = htonl(map->pm_vers);
        *p++ = htonl(map->pm_prot);