* [PATCH] list_for_each_rcu must die: networking
@ 2008-04-24 1:32 Paul E. McKenney
2008-04-24 1:35 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Paul E. McKenney @ 2008-04-24 1:32 UTC (permalink / raw)
To: linux-kernel; +Cc: davem, shemminger, linville, sri, akpm
ll 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.
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 | 3 +--
net/ipv6/af_inet6.c | 3 +--
4 files changed, 6 insertions(+), 10 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 16:56:03.000000000 -0700
@@ -274,8 +274,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 16:55:51.000000000 -0700
@@ -105,8 +105,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) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] list_for_each_rcu must die: networking
2008-04-24 1:32 [PATCH] list_for_each_rcu must die: networking Paul E. McKenney
@ 2008-04-24 1:35 ` David Miller
0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2008-04-24 1:35 UTC (permalink / raw)
To: paulmck; +Cc: linux-kernel, shemminger, linville, sri, akpm
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date: Wed, 23 Apr 2008 18:32:08 -0700
> 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 16:56:03.000000000 -0700
> @@ -274,8 +274,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) {
Local variable 'p' is unused after this change, please delete
it.
> 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 16:55:51.000000000 -0700
> @@ -105,8 +105,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) {
Same here.
With those fixes:
Acked-by: David S. Miller <davem@davemloft.net>
Feel free to submit these yourself, together with your other
list RCU changes.
Thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] list_for_each_rcu must die: networking
@ 2008-04-24 3:38 Paul E. McKenney
2008-05-15 0:16 ` Paul E. McKenney
0 siblings, 1 reply; 6+ messages in thread
From: Paul E. McKenney @ 2008-04-24 3:38 UTC (permalink / raw)
To: linux-kernel; +Cc: akpm, shemminger, linville, sri, davem
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) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] list_for_each_rcu must die: networking
2008-04-24 3:38 Paul E. McKenney
@ 2008-05-15 0:16 ` Paul E. McKenney
2008-05-15 5:26 ` Kamalesh Babulal
0 siblings, 1 reply; 6+ messages in thread
From: Paul E. McKenney @ 2008-05-15 0:16 UTC (permalink / raw)
To: linux-kernel
Cc: akpm, shemminger, linville, sri, davem, kamalesh, adobriyan, apw,
balbir, linuxppc-dev
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,
and also to fix my bonehead error detected by Kamalesh Babulal and
Alexey Dobriyan. It now passes LTP on POWER. And also has valid SOB.
Some days it just doesn't pay to get out of bed...
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>
---
802/psnap.c | 4 +---
ipv4/af_inet.c | 9 +++------
ipv6/af_inet6.c | 9 +++------
3 files changed, 7 insertions(+), 15 deletions(-)
diff -urpNa -X dontdiff linux-2.6.26-rc2/net/802/psnap.c linux-2.6.26-rc2-lfer-net/net/802/psnap.c
--- linux-2.6.26-rc2/net/802/psnap.c 2008-04-16 19:49:44.000000000 -0700
+++ linux-2.6.26-rc2-lfer-net/net/802/psnap.c 2008-05-14 13:38:13.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.26-rc2/net/ipv4/af_inet.c linux-2.6.26-rc2-lfer-net/net/ipv4/af_inet.c
--- linux-2.6.26-rc2/net/ipv4/af_inet.c 2008-05-14 13:35:32.000000000 -0700
+++ linux-2.6.26-rc2-lfer-net/net/ipv4/af_inet.c 2008-05-14 13:46:26.000000000 -0700
@@ -267,7 +267,6 @@ static inline int inet_netns_ok(struct n
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;
@@ -284,13 +283,12 @@ static int inet_create(struct net *net,
sock->state = SS_UNCONNECTED;
/* Look for the requested type/protocol pair. */
- answer = NULL;
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) {
+ err = 0;
/* Check the non-wild match. */
if (protocol == answer->protocol) {
if (protocol != IPPROTO_IP)
@@ -305,10 +303,9 @@ lookup_protocol:
break;
}
err = -EPROTONOSUPPORT;
- answer = NULL;
}
- if (unlikely(answer == NULL)) {
+ if (unlikely(err)) {
if (try_loading_module < 2) {
rcu_read_unlock();
/*
diff -urpNa -X dontdiff linux-2.6.26-rc2/net/ipv6/af_inet6.c linux-2.6.26-rc2-lfer-net/net/ipv6/af_inet6.c
--- linux-2.6.26-rc2/net/ipv6/af_inet6.c 2008-05-14 13:35:32.000000000 -0700
+++ linux-2.6.26-rc2-lfer-net/net/ipv6/af_inet6.c 2008-05-14 13:45:08.000000000 -0700
@@ -87,7 +87,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;
@@ -101,13 +100,12 @@ static int inet6_create(struct net *net,
build_ehash_secret();
/* Look for the requested type/protocol pair. */
- answer = NULL;
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) {
+ err = 0;
/* Check the non-wild match. */
if (protocol == answer->protocol) {
if (protocol != IPPROTO_IP)
@@ -122,10 +120,9 @@ lookup_protocol:
break;
}
err = -EPROTONOSUPPORT;
- answer = NULL;
}
- if (!answer) {
+ if (err) {
if (try_loading_module < 2) {
rcu_read_unlock();
/*
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] list_for_each_rcu must die: networking
2008-05-15 0:16 ` Paul E. McKenney
@ 2008-05-15 5:26 ` Kamalesh Babulal
2008-05-15 6:20 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Kamalesh Babulal @ 2008-05-15 5:26 UTC (permalink / raw)
To: paulmck
Cc: linux-kernel, akpm, shemminger, linville, sri, davem, adobriyan,
apw, balbir, linuxppc-dev
Paul E. McKenney wrote:
> 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,
> and also to fix my bonehead error detected by Kamalesh Babulal and
> Alexey Dobriyan. It now passes LTP on POWER. And also has valid SOB.
> Some days it just doesn't pay to get out of bed...
Hi Paul,
Thanks, the patch fixes the oops.
Tested-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
> 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>
> ---
>
> 802/psnap.c | 4 +---
> ipv4/af_inet.c | 9 +++------
> ipv6/af_inet6.c | 9 +++------
> 3 files changed, 7 insertions(+), 15 deletions(-)
>
> diff -urpNa -X dontdiff linux-2.6.26-rc2/net/802/psnap.c linux-2.6.26-rc2-lfer-net/net/802/psnap.c
> --- linux-2.6.26-rc2/net/802/psnap.c 2008-04-16 19:49:44.000000000 -0700
> +++ linux-2.6.26-rc2-lfer-net/net/802/psnap.c 2008-05-14 13:38:13.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.26-rc2/net/ipv4/af_inet.c linux-2.6.26-rc2-lfer-net/net/ipv4/af_inet.c
> --- linux-2.6.26-rc2/net/ipv4/af_inet.c 2008-05-14 13:35:32.000000000 -0700
> +++ linux-2.6.26-rc2-lfer-net/net/ipv4/af_inet.c 2008-05-14 13:46:26.000000000 -0700
> @@ -267,7 +267,6 @@ static inline int inet_netns_ok(struct n
> 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;
> @@ -284,13 +283,12 @@ static int inet_create(struct net *net,
> sock->state = SS_UNCONNECTED;
>
> /* Look for the requested type/protocol pair. */
> - answer = NULL;
> 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) {
>
> + err = 0;
> /* Check the non-wild match. */
> if (protocol == answer->protocol) {
> if (protocol != IPPROTO_IP)
> @@ -305,10 +303,9 @@ lookup_protocol:
> break;
> }
> err = -EPROTONOSUPPORT;
> - answer = NULL;
> }
>
> - if (unlikely(answer == NULL)) {
> + if (unlikely(err)) {
> if (try_loading_module < 2) {
> rcu_read_unlock();
> /*
> diff -urpNa -X dontdiff linux-2.6.26-rc2/net/ipv6/af_inet6.c linux-2.6.26-rc2-lfer-net/net/ipv6/af_inet6.c
> --- linux-2.6.26-rc2/net/ipv6/af_inet6.c 2008-05-14 13:35:32.000000000 -0700
> +++ linux-2.6.26-rc2-lfer-net/net/ipv6/af_inet6.c 2008-05-14 13:45:08.000000000 -0700
> @@ -87,7 +87,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;
> @@ -101,13 +100,12 @@ static int inet6_create(struct net *net,
> build_ehash_secret();
>
> /* Look for the requested type/protocol pair. */
> - answer = NULL;
> 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) {
>
> + err = 0;
> /* Check the non-wild match. */
> if (protocol == answer->protocol) {
> if (protocol != IPPROTO_IP)
> @@ -122,10 +120,9 @@ lookup_protocol:
> break;
> }
> err = -EPROTONOSUPPORT;
> - answer = NULL;
> }
>
> - if (!answer) {
> + if (err) {
> if (try_loading_module < 2) {
> rcu_read_unlock();
> /*
> --
--
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] list_for_each_rcu must die: networking
2008-05-15 5:26 ` Kamalesh Babulal
@ 2008-05-15 6:20 ` David Miller
0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2008-05-15 6:20 UTC (permalink / raw)
To: kamalesh
Cc: paulmck, linux-kernel, akpm, shemminger, linville, sri, adobriyan,
apw, balbir, linuxppc-dev
From: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Date: Thu, 15 May 2008 10:56:07 +0530
> Paul E. McKenney wrote:
> > 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,
> > and also to fix my bonehead error detected by Kamalesh Babulal and
> > Alexey Dobriyan. It now passes LTP on POWER. And also has valid SOB.
> > Some days it just doesn't pay to get out of bed...
>
> Hi Paul,
>
> Thanks, the patch fixes the oops.
>
> Tested-by: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
> > 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>
I'm fine with these changes, and I acked them already.
They belong as a set with the other list_for_each_rcu killing
patches, so I'm fine with them going all together in Andrew's
tree.
Thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-05-15 6:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-24 1:32 [PATCH] list_for_each_rcu must die: networking Paul E. McKenney
2008-04-24 1:35 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2008-04-24 3:38 Paul E. McKenney
2008-05-15 0:16 ` Paul E. McKenney
2008-05-15 5:26 ` Kamalesh Babulal
2008-05-15 6:20 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox