From a34c4b62c0554790e9da7065e17ca97be11faa6e Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Thu, 6 Dec 2012 09:25:04 +0000 Subject: [PATCH] --- yaml --- r: 342030 b: refs/heads/master c: 0b0fe913bf6d551642eb8892ed90be7358906379 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/sctp/proc.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a9eac60ca623..e13f25d6fe79 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 36f0ffa59175883bf2b01b38a60384314368aae9 +refs/heads/master: 0b0fe913bf6d551642eb8892ed90be7358906379 diff --git a/trunk/net/sctp/proc.c b/trunk/net/sctp/proc.c index 9966e7b16451..06b05ee17d8d 100644 --- a/trunk/net/sctp/proc.c +++ b/trunk/net/sctp/proc.c @@ -139,7 +139,11 @@ static void sctp_seq_dump_local_addrs(struct seq_file *seq, struct sctp_ep_commo primary = &peer->saddr; } - list_for_each_entry(laddr, &epb->bind_addr.address_list, list) { + rcu_read_lock(); + list_for_each_entry_rcu(laddr, &epb->bind_addr.address_list, list) { + if (!laddr->valid) + continue; + addr = &laddr->a; af = sctp_get_af_specific(addr->sa.sa_family); if (primary && af->cmp_addr(addr, primary)) { @@ -147,6 +151,7 @@ static void sctp_seq_dump_local_addrs(struct seq_file *seq, struct sctp_ep_commo } af->seq_dump_addr(seq, addr); } + rcu_read_unlock(); } /* Dump remote addresses of an association. */