From: Mahanta Jambigi <mjambigi@linux.ibm.com>
To: dust.li@linux.alibaba.com, andrew+netdev@lunn.ch,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, alibuda@linux.alibaba.com,
sidraya@linux.ibm.com, hidayath@linux.ibm.com
Cc: pasic@linux.ibm.com, horms@kernel.org, tonylu@linux.alibaba.com,
guwen@linux.alibaba.com, stable@vger.kernel.org,
netdev@vger.kernel.org, linux-s390@vger.kernel.org,
linux-rdma@vger.kernel.org
Subject: Re: [PATCH net v2 0/2] net/smc: fix diag dump lifetime races
Date: Mon, 31 Aug 2026 20:27:38 +0530 [thread overview]
Message-ID: <4f303f9f-fd20-475a-8004-1a670dfd34df@linux.ibm.com> (raw)
In-Reply-To: <apWEzobrZ3QR3IfN@linux.alibaba.com>
On 31/08/26 7:12 pm, Dust Li wrote:
> On 2026-08-28 08:54:37, Mahanta Jambigi wrote:
>> This series fixes multiple lifetime races in the SMC diag dump path.
>>
>> The first patch adds the basic infrastructure needed to synchronize diag readers
>> against connection-owned conn->lgr/conn->lnk updates. It introduces a
>> per-connection spinlock and uses it in the link switch and connection free
>> handoff paths. conn->lgr and conn->lnk are NULLed under the lock before the
>> borrowed references are released, so a non-NULL conn->lgr seen under the lock
>> guarantees the lgr object is alive. The diag reader can rely on this invariant
>> without borrowing any extra reference.
>>
>> The second patch fixes two races in smc_diag itself:
>>
>> - serialize clcsock field access against smc_clcsock_release() with
>> mutex_trylock()
>> - take conn->lgr_lnk_lock when reading conn->lgr and conn->lnk; use
>> smc_conn_lgr_valid() inside the lock to check that the connection is
>> still registered, then snapshot all required fields and call nla_put()
>> after releasing the lock
>
> Hi Mahanta,
>
> As discussed in the other thread, I think we should defer the release of
> smc->clcsock and remove clcsock_release_lock.
>
> In that case, we should no longer need these two patches. Also,
> introducing more locks in SMC is the last thing I want to do :)
Thanks for the new series "[RFC net-next 0/7] net/smc: tie clcsock
lifetime to the smc socket and remove clcsock_release_lock" — once it
lands, we can drop the mutex_trylock() fix for Race 1 (clcsock).
However, Race 2 remains open. Your series does not touch smc_core.c or
smc_cdc.c, so smc_conn_free(), smc_switch_link_and_count(), and
smc_cdc_msg_validate() still write conn->lgr/conn->lnk with no
synchronization against the diag reader.
On the lock concern — lgr_lnk_lock is a per-connection spinlock. It is
taken in smc_conn_free() (teardown), smc_switch_link_and_count() (link
failover), smc_cdc_msg_validate() (failover validation branch only, not
the normal CDC data path), and the diag reader. None of these are on the
per-message send/receive hot path. Could you explain what specifically
concerns you — lock ordering, memory footprint, or something else? That
would help us understand whether you have a different mechanism in mind.
next prev parent reply other threads:[~2026-08-31 14:57 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-28 6:54 [PATCH net v2 0/2] net/smc: fix diag dump lifetime races Mahanta Jambigi
2026-08-28 6:54 ` [PATCH net v2 1/2] net/smc: add connection lifetime infrastructure for diag Mahanta Jambigi
2026-08-29 6:55 ` sashiko-bot
2026-08-28 6:54 ` [PATCH net v2 2/2] net/smc: fix races in smc_diag dump path Mahanta Jambigi
2026-08-29 6:55 ` sashiko-bot
2026-08-31 13:42 ` [PATCH net v2 0/2] net/smc: fix diag dump lifetime races Dust Li
2026-08-31 14:08 ` Mahanta Jambigi
2026-08-31 14:57 ` Mahanta Jambigi [this message]
2026-09-01 13:02 ` Dust Li
2026-09-01 15:13 ` Mahanta Jambigi
2026-09-02 12:16 ` Dust Li
2026-09-03 7:56 ` Mahanta Jambigi
2026-09-04 15:21 ` Dust Li
2026-09-08 16:23 ` Hidayath Khan
2026-09-09 16:07 ` Dust Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4f303f9f-fd20-475a-8004-1a670dfd34df@linux.ibm.com \
--to=mjambigi@linux.ibm.com \
--cc=alibuda@linux.alibaba.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=dust.li@linux.alibaba.com \
--cc=edumazet@google.com \
--cc=guwen@linux.alibaba.com \
--cc=hidayath@linux.ibm.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pasic@linux.ibm.com \
--cc=sidraya@linux.ibm.com \
--cc=stable@vger.kernel.org \
--cc=tonylu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.