From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: akpm@linux-foundation.org, shemminger@vyatta.com,
linville@tuxdriver.com, sri@us.ibm.com, davem@davemloft.net
Subject: [PATCH] list_for_each_rcu must die: networking
Date: Wed, 23 Apr 2008 20:38:49 -0700 [thread overview]
Message-ID: <20080424033849.GA4401@linux.vnet.ibm.com> (raw)
All uses of list_for_each_rcu() can be profitably replaced by the
easier-to-use list_for_each_entry_rcu(). This patch makes this change
for networking, in preparation for removing the list_for_each_rcu()
API entirely.
Updated to remove the two now-unused variables as noted by Dave Miller.
Acked-by: David S. Miller <davem@davemloft.net> (lkml.org/lkml/2008/4/23/448)
Signed_off_by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
drivers/net/wireless/strip.c | 6 +++---
net/802/psnap.c | 4 +---
net/ipv4/af_inet.c | 4 +---
net/ipv6/af_inet6.c | 4 +---
4 files changed, 6 insertions(+), 12 deletions(-)
diff -urpNa -X dontdiff linux-2.6.25/drivers/net/wireless/strip.c linux-2.6.25-lfer-net/drivers/net/wireless/strip.c
--- linux-2.6.25/drivers/net/wireless/strip.c 2008-04-16 19:49:44.000000000 -0700
+++ linux-2.6.25-lfer-net/drivers/net/wireless/strip.c 2008-04-23 16:52:42.000000000 -0700
@@ -962,12 +962,12 @@ static char *time_delta(char buffer[], l
/* get Nth element of the linked list */
static struct strip *strip_get_idx(loff_t pos)
{
- struct list_head *l;
+ struct strip *s;
int i = 0;
- list_for_each_rcu(l, &strip_list) {
+ list_for_each_entry_rcu(s, &strip_list, list) {
if (pos == i)
- return list_entry(l, struct strip, list);
+ return s;
++i;
}
return NULL;
diff -urpNa -X dontdiff linux-2.6.25/net/802/psnap.c linux-2.6.25-lfer-net/net/802/psnap.c
--- linux-2.6.25/net/802/psnap.c 2008-04-16 19:49:44.000000000 -0700
+++ linux-2.6.25-lfer-net/net/802/psnap.c 2008-04-23 16:56:21.000000000 -0700
@@ -30,11 +30,9 @@ static struct llc_sap *snap_sap;
*/
static struct datalink_proto *find_snap_client(unsigned char *desc)
{
- struct list_head *entry;
struct datalink_proto *proto = NULL, *p;
- list_for_each_rcu(entry, &snap_list) {
- p = list_entry(entry, struct datalink_proto, node);
+ list_for_each_entry_rcu(p, &snap_list, node) {
if (!memcmp(p->type, desc, 5)) {
proto = p;
break;
diff -urpNa -X dontdiff linux-2.6.25/net/ipv4/af_inet.c linux-2.6.25-lfer-net/net/ipv4/af_inet.c
--- linux-2.6.25/net/ipv4/af_inet.c 2008-04-16 19:49:44.000000000 -0700
+++ linux-2.6.25-lfer-net/net/ipv4/af_inet.c 2008-04-23 19:16:12.000000000 -0700
@@ -250,7 +250,6 @@ EXPORT_SYMBOL(build_ehash_secret);
static int inet_create(struct net *net, struct socket *sock, int protocol)
{
struct sock *sk;
- struct list_head *p;
struct inet_protosw *answer;
struct inet_sock *inet;
struct proto *answer_prot;
@@ -274,8 +273,7 @@ static int inet_create(struct net *net,
lookup_protocol:
err = -ESOCKTNOSUPPORT;
rcu_read_lock();
- list_for_each_rcu(p, &inetsw[sock->type]) {
- answer = list_entry(p, struct inet_protosw, list);
+ list_for_each_entry_rcu(answer, &inetsw[sock->type], list) {
/* Check the non-wild match. */
if (protocol == answer->protocol) {
diff -urpNa -X dontdiff linux-2.6.25/net/ipv6/af_inet6.c linux-2.6.25-lfer-net/net/ipv6/af_inet6.c
--- linux-2.6.25/net/ipv6/af_inet6.c 2008-04-16 19:49:44.000000000 -0700
+++ linux-2.6.25-lfer-net/net/ipv6/af_inet6.c 2008-04-23 19:16:33.000000000 -0700
@@ -84,7 +84,6 @@ static int inet6_create(struct net *net,
struct inet_sock *inet;
struct ipv6_pinfo *np;
struct sock *sk;
- struct list_head *p;
struct inet_protosw *answer;
struct proto *answer_prot;
unsigned char answer_flags;
@@ -105,8 +104,7 @@ static int inet6_create(struct net *net,
lookup_protocol:
err = -ESOCKTNOSUPPORT;
rcu_read_lock();
- list_for_each_rcu(p, &inetsw6[sock->type]) {
- answer = list_entry(p, struct inet_protosw, list);
+ list_for_each_entry_rcu(answer, &inetsw6[sock->type], list) {
/* Check the non-wild match. */
if (protocol == answer->protocol) {
next reply other threads:[~2008-04-24 3:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-24 3:38 Paul E. McKenney [this message]
2008-05-15 0:16 ` [PATCH] list_for_each_rcu must die: networking Paul E. McKenney
2008-05-15 5:26 ` Kamalesh Babulal
2008-05-15 6:20 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2008-04-24 1:32 Paul E. McKenney
2008-04-24 1:35 ` David Miller
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=20080424033849.GA4401@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=shemminger@vyatta.com \
--cc=sri@us.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox