[PATCH] IB/addr: gid structure alignment fix
[linux-2.6.git] / include / rdma / ib_addr.h
index fcb5ba87dcc5f76263c30c8293cb76ebbe9f2449..0ff67398928d3f407546468f552e59bb518c271c 100644 (file)
@@ -89,9 +89,10 @@ static inline void ib_addr_set_pkey(struct rdma_dev_addr *dev_addr, u16 pkey)
        dev_addr->broadcast[9] = (unsigned char) pkey;
 }
 
        dev_addr->broadcast[9] = (unsigned char) pkey;
 }
 
-static inline union ib_gid *ib_addr_get_sgid(struct rdma_dev_addr *dev_addr)
+static inline void ib_addr_get_sgid(struct rdma_dev_addr *dev_addr,
+                                   union ib_gid *gid)
 {
 {
-       return  (union ib_gid *) (dev_addr->src_dev_addr + 4);
+       memcpy(gid, dev_addr->src_dev_addr + 4, sizeof *gid);
 }
 
 static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr,
 }
 
 static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr,
@@ -100,9 +101,10 @@ static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr,
        memcpy(dev_addr->src_dev_addr + 4, gid, sizeof *gid);
 }
 
        memcpy(dev_addr->src_dev_addr + 4, gid, sizeof *gid);
 }
 
-static inline union ib_gid *ib_addr_get_dgid(struct rdma_dev_addr *dev_addr)
+static inline void ib_addr_get_dgid(struct rdma_dev_addr *dev_addr,
+                                   union ib_gid *gid)
 {
 {
-       return  (union ib_gid *) (dev_addr->dst_dev_addr + 4);
+       memcpy(gid, dev_addr->dst_dev_addr + 4, sizeof *gid);
 }
 
 static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr,
 }
 
 static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr,