]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/infiniband/core/ucma.c
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
[linux-2.6-omap-h63xx.git] / drivers / infiniband / core / ucma.c
index b41dd26bbfa1e1b83654c487d1ff16482bf3746d..4346a24568fb74746a74a12b2b1f534f23f1731f 100644 (file)
@@ -81,9 +81,7 @@ struct ucma_multicast {
 
        u64                     uid;
        struct list_head        list;
-       struct sockaddr         addr;
-       u8                      pad[sizeof(struct sockaddr_in6) -
-                                   sizeof(struct sockaddr)];
+       struct sockaddr_storage addr;
 };
 
 struct ucma_event {
@@ -603,11 +601,11 @@ static ssize_t ucma_query_route(struct ucma_file *file,
                return PTR_ERR(ctx);
 
        memset(&resp, 0, sizeof resp);
-       addr = &ctx->cm_id->route.addr.src_addr;
+       addr = (struct sockaddr *) &ctx->cm_id->route.addr.src_addr;
        memcpy(&resp.src_addr, addr, addr->sa_family == AF_INET ?
                                     sizeof(struct sockaddr_in) :
                                     sizeof(struct sockaddr_in6));
-       addr = &ctx->cm_id->route.addr.dst_addr;
+       addr = (struct sockaddr *) &ctx->cm_id->route.addr.dst_addr;
        memcpy(&resp.dst_addr, addr, addr->sa_family == AF_INET ?
                                     sizeof(struct sockaddr_in) :
                                     sizeof(struct sockaddr_in6));
@@ -906,14 +904,14 @@ static ssize_t ucma_join_multicast(struct ucma_file *file,
 
        mutex_lock(&file->mut);
        mc = ucma_alloc_multicast(ctx);
-       if (IS_ERR(mc)) {
-               ret = PTR_ERR(mc);
+       if (!mc) {
+               ret = -ENOMEM;
                goto err1;
        }
 
        mc->uid = cmd.uid;
        memcpy(&mc->addr, &cmd.addr, sizeof cmd.addr);
-       ret = rdma_join_multicast(ctx->cm_id, &mc->addr, mc);
+       ret = rdma_join_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr, mc);
        if (ret)
                goto err2;
 
@@ -929,7 +927,7 @@ static ssize_t ucma_join_multicast(struct ucma_file *file,
        return 0;
 
 err3:
-       rdma_leave_multicast(ctx->cm_id, &mc->addr);
+       rdma_leave_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr);
        ucma_cleanup_mc_events(mc);
 err2:
        mutex_lock(&mut);
@@ -975,7 +973,7 @@ static ssize_t ucma_leave_multicast(struct ucma_file *file,
                goto out;
        }
 
-       rdma_leave_multicast(mc->ctx->cm_id, &mc->addr);
+       rdma_leave_multicast(mc->ctx->cm_id, (struct sockaddr *) &mc->addr);
        mutex_lock(&mc->ctx->file->mut);
        ucma_cleanup_mc_events(mc);
        list_del(&mc->list);