Thread (2 messages) 2 messages, 2 authors, 2025-10-27

Re: [PATCH net] sctp: Hold sock lock while iterating over address list

From: Eric Dumazet <edumazet@google.com>
Date: 2025-10-27 09:18:10
Also in: linux-sctp, lkml

We need a changelog.

On Mon, Oct 27, 2025 at 1:50 AM Stefan Wiehler [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Fixes: 8f840e47f190 ("sctp: add the sctp_diag.c file")
Signed-off-by: Stefan Wiehler <redacted>
---
 net/sctp/diag.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/sctp/diag.c b/net/sctp/diag.c
index 996c2018f0e6..7f7e2773e047 100644
--- a/net/sctp/diag.c
+++ b/net/sctp/diag.c
@@ -223,14 +223,15 @@ struct sctp_comm_param {
        bool net_admin;
 };

-static size_t inet_assoc_attr_size(struct sctp_association *asoc)
+static size_t inet_assoc_attr_size(struct sock *sk,
+                                  struct sctp_association *asoc)
 {
        int addrlen = sizeof(struct sockaddr_storage);
        int addrcnt = 0;
        struct sctp_sockaddr_entry *laddr;

        list_for_each_entry_rcu(laddr, &asoc->base.bind_addr.address_list,
-                               list)
+                               list, lockdep_sock_is_held(sk))
                addrcnt++;

        return    nla_total_size(sizeof(struct sctp_info))
@@ -256,11 +257,12 @@ static int sctp_sock_dump_one(struct sctp_endpoint *ep, struct sctp_transport *t
        if (err)
                return err;

-       rep = nlmsg_new(inet_assoc_attr_size(assoc), GFP_KERNEL);
+       lock_sock(sk);
+
+       rep = nlmsg_new(inet_assoc_attr_size(sk, assoc), GFP_KERNEL);
        if (!rep)
                return -ENOMEM;
If -ENOMEM is returned, the lock needs to be released ?

Please do not rush patches like this.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help