Commit 077c7ecd authored by Mark Zhang's avatar Mark Zhang Committed by sanglipeng
Browse files

RDMA/cma: Initialize ib_sa_multicast structure to 0 when join

stable inclusion
from stable-v5.10.198
commit 7de0e42444e9bc18214eff4aaa04de230eb9eb3d
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I987V5

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7de0e42444e9bc18214eff4aaa04de230eb9eb3d



--------------------------------

commit e0fe97ef upstream.

Initialize the structure to 0 so that it's fields won't have random
values. For example fields like rec.traffic_class (as well as
rec.flow_label and rec.sl) is used to generate the user AH through:
  cma_iboe_join_multicast
    cma_make_mc_event
      ib_init_ah_from_mcmember

And a random traffic_class causes a random IP DSCP in RoCEv2.

Fixes: b5de0c60 ("RDMA/cma: Fix use after free race in roce multicast join")
Signed-off-by: default avatarMark Zhang <markzhang@nvidia.com>
Link: https://lore.kernel.org/r/20230927090511.603595-1-markzhang@nvidia.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarsanglipeng <sanglipeng1@jd.com>
parent 868e0397
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4731,7 +4731,7 @@ static int cma_iboe_join_multicast(struct rdma_id_private *id_priv,
	int err = 0;
	struct sockaddr *addr = (struct sockaddr *)&mc->addr;
	struct net_device *ndev = NULL;
	struct ib_sa_multicast ib;
	struct ib_sa_multicast ib = {};
	enum ib_gid_type gid_type;
	bool send_only;