IB/mlx4: Fix unaligned access in send_reply_to_slave
[cascardo/linux.git] / drivers / infiniband / hw / mlx4 / mcg.c
index 99451d8..8f7ad07 100644 (file)
@@ -96,7 +96,7 @@ struct ib_sa_mcmember_data {
        u8              scope_join_state;
        u8              proxy_join;
        u8              reserved[2];
-};
+} __packed __aligned(4);
 
 struct mcast_group {
        struct ib_sa_mcmember_data rec;
@@ -747,14 +747,11 @@ static struct mcast_group *search_relocate_mgid0_group(struct mlx4_ib_demux_ctx
                                                       __be64 tid,
                                                       union ib_gid *new_mgid)
 {
-       struct mcast_group *group = NULL, *cur_group;
+       struct mcast_group *group = NULL, *cur_group, *n;
        struct mcast_req *req;
-       struct list_head *pos;
-       struct list_head *n;
 
        mutex_lock(&ctx->mcg_table_lock);
-       list_for_each_safe(pos, n, &ctx->mcg_mgid0_list) {
-               group = list_entry(pos, struct mcast_group, mgid0_list);
+       list_for_each_entry_safe(group, n, &ctx->mcg_mgid0_list, mgid0_list) {
                mutex_lock(&group->lock);
                if (group->last_req_tid == tid) {
                        if (memcmp(new_mgid, &mgid0, sizeof mgid0)) {