[PATCH net] sctp: fix rcu usage on proc listing
Subsystems:
networking [general] , sctp protocol , the rest
STALE3884d
4 messages,
2 authors,
2016-01-21 · open the first message on its own page
From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
commit 39f66a7dce32 ("sctp: apply rhashtable api to sctp procfs")
removed a rcu_read_lock() too much at sctp_remaddr_seq_show().
Fixes: 39f66a7dce32 ("sctp: apply rhashtable api to sctp procfs")
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
---
net/sctp/proc.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/sctp/proc.c b/net/sctp/proc.c
index dfa7eeccb5373053f460f1026a58e4a2ba015a69..4fdf4387910696492ba568b1096dd12e8e7221e2 100644
--- a/net/sctp/proc.c
+++ b/net/sctp/proc.c @@ -491,6 +491,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
tsp = ( struct sctp_transport * ) v ;
assoc = tsp -> asoc ;
+ rcu_read_lock ();
list_for_each_entry_rcu ( tsp , & assoc -> peer . transport_addr_list ,
transports ) {
if ( tsp -> dead ) @@ -543,6 +544,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
seq_printf ( seq , " \n " );
}
+ rcu_read_unlock ();
return 0 ;
} --
2.5.0
[just cc'ing linux-sctp@vger.kernel.org]
On Tue, Jan 19, 2016 at 07:59:03PM -0200, Marcelo Ricardo Leitner wrote: quoted hunk From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
commit 39f66a7dce32 ("sctp: apply rhashtable api to sctp procfs")
removed a rcu_read_lock() too much at sctp_remaddr_seq_show().
Fixes: 39f66a7dce32 ("sctp: apply rhashtable api to sctp procfs")
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
---
net/sctp/proc.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/sctp/proc.c b/net/sctp/proc.c
index dfa7eeccb5373053f460f1026a58e4a2ba015a69..4fdf4387910696492ba568b1096dd12e8e7221e2 100644
--- a/net/sctp/proc.c
+++ b/net/sctp/proc.c @@ -491,6 +491,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
tsp = ( struct sctp_transport * ) v ;
assoc = tsp -> asoc ;
+ rcu_read_lock ();
list_for_each_entry_rcu ( tsp , & assoc -> peer . transport_addr_list ,
transports ) {
if ( tsp -> dead ) @@ -543,6 +544,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
seq_printf ( seq , " \n " );
}
+ rcu_read_unlock ();
return 0 ;
} --
2.5.0
On Tue, Jan 19, 2016 at 08:02:30PM -0200, Marcelo Ricardo Leitner wrote: quoted --- a/net/sctp/proc.c
+++ b/net/sctp/proc.c @@ -491,6 +491,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
tsp = ( struct sctp_transport * ) v ;
assoc = tsp -> asoc ;
+ rcu_read_lock ();
should have used rcu_read_lock_bh() here, will send a v2 tomorrow.
quoted list_for_each_entry_rcu(tsp, &assoc->peer.transport_addr_list,
transports) {
if (tsp->dead) @@ -543,6 +544,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
seq_printf(seq, "\n");
}
+ rcu_read_unlock();
return 0;
} --
2.5.0
On Tue, Jan 19, 2016 at 11:07:20PM -0200, Marcelo Ricardo Leitner wrote: On Tue, Jan 19, 2016 at 08:02:30PM -0200, Marcelo Ricardo Leitner wrote: quoted quoted --- a/net/sctp/proc.c
+++ b/net/sctp/proc.c @@ -491,6 +491,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
tsp = ( struct sctp_transport * ) v ;
assoc = tsp -> asoc ;
+ rcu_read_lock ();
should have used rcu_read_lock_bh() here, will send a v2 tomorrow.
Please just drop this one, no change is actually needed.
rhashtable_walk_start() already puts the rcu_read_lock() in there and
disabling bh is not necessary. Thanks.
quoted quoted list_for_each_entry_rcu(tsp, &assoc->peer.transport_addr_list,
transports) {
if (tsp->dead) @@ -543,6 +544,7 @@ static int sctp_remaddr_seq_show(struct seq_file *seq, void *v)
seq_printf(seq, "\n");
}
+ rcu_read_unlock();
return 0;
} --
2.5.0 --
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html