2011-05-20 04:14:22

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the tip tree (net tree interaction)

Hi all,

After merging the tip tree, today's linux-next build (x86_64 allmodconfig)
failed like this:

net/sctp/bind_addr.c: In function 'sctp_bind_addr_clean':
net/sctp/bind_addr.c:148: error: 'sctp_local_addr_free' undeclared (first use in this function)

Caused by commit 1231f0baa547 ("net,rcu: convert call_rcu
(sctp_local_addr_free) to kfree_rcu()") interacting with commit
c182f90bc1f2 ("SCTP: fix race between sctp_bind_addr_free() and
sctp_bind_addr_conflict()") from the net tree.

I applied the following patch as a merge fix:

From: Stephen Rothwell <[email protected]>
Date: Fri, 20 May 2011 14:11:11 +1000
Subject: [PATCH] net,rcu: convert another call to call_rcu(sctp_local_addr_free)

Signed-off-by: Stephen Rothwell <[email protected]>
---
net/sctp/bind_addr.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
index 6338413..83e3011 100644
--- a/net/sctp/bind_addr.c
+++ b/net/sctp/bind_addr.c
@@ -145,7 +145,7 @@ static void sctp_bind_addr_clean(struct sctp_bind_addr *bp)
/* Empty the bind address list. */
list_for_each_entry_safe(addr, temp, &bp->address_list, list) {
list_del_rcu(&addr->list);
- call_rcu(&addr->rcu, sctp_local_addr_free);
+ kfree_rcu(addr, rcu);
SCTP_DBG_OBJCNT_DEC(addr);
}
}
--
1.7.5.1


--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/


2011-05-20 07:59:32

by Jacek Luczak

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the tip tree (net tree interaction)

2011/5/20 Stephen Rothwell <[email protected]>:
> Hi all,
>
> After merging the tip tree, today's linux-next build (x86_64 allmodconfig)
> failed like this:
>
> net/sctp/bind_addr.c: In function 'sctp_bind_addr_clean':
> net/sctp/bind_addr.c:148: error: 'sctp_local_addr_free' undeclared (first use in this function)
>
> Caused by commit 1231f0baa547 ("net,rcu: convert call_rcu
> (sctp_local_addr_free) to kfree_rcu()") interacting with commit
> c182f90bc1f2 ("SCTP: fix race between sctp_bind_addr_free() and
> sctp_bind_addr_conflict()") from the net tree.
>
> I applied the following patch as a merge fix:
>
> From: Stephen Rothwell <[email protected]>
> Date: Fri, 20 May 2011 14:11:11 +1000
> Subject: [PATCH] net,rcu: convert another call to call_rcu(sctp_local_addr_free)
>
> Signed-off-by: Stephen Rothwell <[email protected]>
> ---
> ?net/sctp/bind_addr.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
> index 6338413..83e3011 100644
> --- a/net/sctp/bind_addr.c
> +++ b/net/sctp/bind_addr.c
> @@ -145,7 +145,7 @@ static void sctp_bind_addr_clean(struct sctp_bind_addr *bp)
> ? ? ? ?/* Empty the bind address list. */
> ? ? ? ?list_for_each_entry_safe(addr, temp, &bp->address_list, list) {
> ? ? ? ? ? ? ? ?list_del_rcu(&addr->list);
> - ? ? ? ? ? ? ? call_rcu(&addr->rcu, sctp_local_addr_free);
> + ? ? ? ? ? ? ? kfree_rcu(addr, rcu);
> ? ? ? ? ? ? ? ?SCTP_DBG_OBJCNT_DEC(addr);
> ? ? ? ?}
> ?}
> --
> 1.7.5.1
>


Hi

as this is planned to be backported down to stable/longterm, kfree_rcu
was not used here. I guess in meantime the callback has been removed
while introducing kfree_rcu in sctp module. I have a patch ready to
send for net-next-2.6 converting to kfree_rcu in sctp, only I've been
waiting for it jumping to the tree.

This patch is of course valid.

-Jacek