From nobody Mon Jun 22 18:37:53 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gkcQ96Ymhz6hnSM for ; Mon, 22 Jun 2026 18:37:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gkcQ94yGlz3p6m for ; Mon, 22 Jun 2026 18:37:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782153473; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BOF+4rTS4AO3Z3tadVvajE6JDVOPg7ncNpEmMAOYTSk=; b=X6SsAra+7vSGcmZ3G4m3mj4YV2EWiiu4LvNLlQezuAI1fvZG9mhccbO1pnLwwtaxSc4bM/ 1omBe2WS378J1/dJq40J/RQt/Z7Q4AON8m40LLa+nDfa3VxiTWqiYZ99s5bhkjtIddjtJI MKYxEE0s+QVuRuKIqK23b2B4IOTjGYUTED1cqNs/RmgRsAZDaU8UprzHrvY7P4bSLzC8cr P02HN5VFTGHSk8uw3NirLP8SX4m8M3JI2i7mJNxiP6dgHDpd9aCABdjlKsBsBktf37OE66 yAttbxCUBB99Ef/eav3bsmZ6ezp6mfkD7vqekWPaGZf9yl+Lt+H6XnTSzZmsaA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782153473; a=rsa-sha256; cv=none; b=P5eMe3IlRXO1a50J1GgVNQMD8ObK3JnVeFUrcnVgkIg03RKunhBoKSOFbHz2ho+zRJSj7D ggKsNCWlX0kl85P7VoGjaX2yEtQNydyPUchlCrq8MMI53B4BwlcmoAeQCQfhjZ4WPKJ1do s+MyH6of17AcVBX2qc+y1ez+N+GFMjf8/0NF/uAaPWWPqe5cbYz/KAAC4YJCvdV6uQzdG3 qfMEHj9jLoF9MxDt3EHp9Wjd36vX9lT4LERMfvOEtAOLF//j+s6W12c/5k1aZskQAQqVdt FFm2dVThTSSBeAPNOaVBnKNpoZXWFybxq90INbOnNnHFt1YzkaF4X6+E2b9BVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782153473; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BOF+4rTS4AO3Z3tadVvajE6JDVOPg7ncNpEmMAOYTSk=; b=b/RrV/GvdBPDO5cPekpM5IMbbOpsSkgqzfKQw+IiN2LYTqo/SRwlStUBxGMKPWLQlKRqVn +ehbb8FNbOjalki/BGhcUP4nXBsgg0Kpm+a56Hfi0dOixEHqoqjqyj/iDp2e5dyrHoUdoU aoh3Aq6jpqZibo2ryb31urcJi75LrBG7kkJrDDQIeioSi6FdLZP4DbPxPsj8XxnUX9LhYL D0QSUlbw82fDpB5idlg2lRNPaEjWS5t2wcrl/wLwIDdGWr9sl3byrGSYDdR+mD7L/8+G0E 1T8D2x2lSbOkTl6azXxuYjDZBACZttLbpl5HE7hfttrrchRW7fZYW27vbvC2IQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gkcQ93JCBz109y for ; Mon, 22 Jun 2026 18:37:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 31bed by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 22 Jun 2026 18:37:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 49ee94b291b4 - main - IB/ipoib: Prevent hung task or softlockup processing multicast response List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 49ee94b291b424caaafd456d52f0aa9da6ba168c Auto-Submitted: auto-generated Date: Mon, 22 Jun 2026 18:37:53 +0000 Message-Id: <6a398101.31bed.5a71a739@gitrepo.freebsd.org> The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=49ee94b291b424caaafd456d52f0aa9da6ba168c commit 49ee94b291b424caaafd456d52f0aa9da6ba168c Author: John Baldwin AuthorDate: 2026-05-28 15:50:58 +0000 Commit: John Baldwin CommitDate: 2026-06-22 18:36:53 +0000 IB/ipoib: Prevent hung task or softlockup processing multicast response Tested by: Wafa Hamzah (mlx5_ib) Tested by: John Baldwin (iw_cxgbe) Obtained from: Linux commit 3874397c0bdec3c21ce071711cd105165179b8eb Sponsored by: Chelsio Communications --- sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c | 13 ++++++++----- sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c | 2 +- sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 7 +++++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c index f3d377d513a8..eb4fb67ca11c 100644 --- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -59,21 +59,24 @@ struct ipoib_ah *ipoib_create_ah(struct ipoib_dev_priv *priv, struct ib_pd *pd, struct ib_ah_attr *attr) { struct ipoib_ah *ah; + struct ib_ah *vah; ah = kmalloc(sizeof *ah, GFP_KERNEL); if (!ah) - return NULL; + return ERR_PTR(-ENOMEM); ah->priv = priv; ah->last_send = 0; kref_init(&ah->ref); - ah->ah = ib_create_ah(pd, attr, RDMA_CREATE_AH_SLEEPABLE); - if (IS_ERR(ah->ah)) { + vah = ib_create_ah(pd, attr, RDMA_CREATE_AH_SLEEPABLE); + if (IS_ERR(vah)) { kfree(ah); - ah = NULL; - } else + ah = (struct ipoib_ah *)vah; + } else { + ah->ah = vah; ipoib_dbg(priv, "Created ah %p\n", ah->ah); + } return ah; } diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c index fb1e34cfb215..d37021a54eb8 100644 --- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -535,7 +535,7 @@ path_rec_completion(int status, struct ib_sa_path_rec *pathrec, void *path_ptr) spin_lock_irqsave(&priv->lock, flags); - if (ah) { + if (!IS_ERR_OR_NULL(ah)) { path->pathrec = *pathrec; old_ah = path->ah; diff --git a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index 3e8954eba4e4..23cf5c8458d8 100644 --- a/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c @@ -211,8 +211,11 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast, av.grh.dgid = mcast->mcmember.mgid; ah = ipoib_create_ah(priv, priv->pd, &av); - if (!ah) { - ipoib_warn(priv, "ib_address_create failed\n"); + if (IS_ERR(ah)) { + ipoib_warn(priv, "ib_address_create failed %ld\n", + -PTR_ERR(ah)); + /* use original error */ + return PTR_ERR(ah); } else { spin_lock_irq(&priv->lock); mcast->ah = ah;