From: Fengguang Wu <wfg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [PATCH] inet: Initialize per-netns inetpeer roots in net/ipv{4,6}/route.c
Date: Sun, 10 Jun 2012 18:16:40 +0800 [thread overview]
Message-ID: <20120610101640.GA14476@localhost> (raw)
In-Reply-To: <20120609.221801.2226110181753212240.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
On Sat, Jun 09, 2012 at 10:18:01PM -0400, David Miller wrote:
> From: David Miller <davem@davemloft.net>
> Date: Sat, 09 Jun 2012 19:09:29 -0700 (PDT)
>
> > From: Fengguang Wu <wfg@linux.intel.com>
> > Date: Sun, 10 Jun 2012 10:08:01 +0800
> >
> >> And in another config, an old error still triggers:
> >>
> >> net/ipv4/inetpeer.c: In function ‘family_to_base’:
> >> net/ipv4/inetpeer.c:397:50: error: ‘struct net’ has no member named ‘ipv6’
> >> net/ipv4/inetpeer.c:398:1: warning: control reaches end of non-void function [-Wreturn-type]
> >>
> >> I'm building this patch on top of net-next master.
> >
> > What a fucking mess Gao created, I'll fix this.
> >
> > Thanks for the report.
>
> I just pushed the following to net-next:
>
> --------------------
> inet: Pass inetpeer root into inet_getpeer*() interfaces.
>
> Otherwise we reference potentially non-existing members when
> ipv6 is disabled.
>
> Signed-off-by: David S. Miller <davem@davemloft.net>
> ---
> include/net/inetpeer.h | 10 +++++-----
> net/ipv4/inetpeer.c | 9 +--------
> net/ipv4/ip_fragment.c | 2 +-
> net/ipv4/route.c | 6 +++---
> net/ipv6/route.c | 2 +-
> 5 files changed, 11 insertions(+), 18 deletions(-)
It triggers some other errors:
net/ipv4/inetpeer.c: In function ‘inetpeer_invalidate_tree’:
net/ipv4/inetpeer.c:585:9: error: implicit declaration of function ‘family_to_base’ [-Werror=implicit-function-declaration]
net/ipv4/inetpeer.c:585:32: warning: initialization makes pointer from integer without a cast [enabled by default]
net/ipv6/tcp_ipv6.c:1758:2: warning: passing argument 1 of ‘inet_getpeer_v6’ from incompatible pointer type [enabled by default]
include/net/inetpeer.h:101:33: note: expected ‘struct inet_peer_base *’ but argument is of type ‘struct net *’
net/ipv4/tcp_ipv4.c:1843:2: warning: passing argument 1 of ‘inet_getpeer_v4’ from incompatible pointer type [enabled by default]
include/net/inetpeer.h:90:33: note: expected ‘struct inet_peer_base *’ but argument is of type ‘struct net *’
which can be fixed by the following diff.
Thanks,
Fengguang
---
net/ipv4/inetpeer.c | 6 ++++++
net/ipv4/tcp_ipv4.c | 2 +-
net/ipv6/tcp_ipv6.c | 2 +-
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c
index 98cf1f8..7ad6b76 100644
--- a/net/ipv4/inetpeer.c
+++ b/net/ipv4/inetpeer.c
@@ -391,6 +391,12 @@ static void unlink_from_pool(struct inet_peer *p, struct inet_peer_base *base,
call_rcu(&p->rcu, inetpeer_free_rcu);
}
+static struct inet_peer_base *family_to_base(struct net *net,
+ int family)
+{
+ return family == AF_INET ? net->ipv4.peers : net->ipv6.peers;
+}
+
/* perform garbage collect on all items stacked during a lookup */
static int inet_peer_gc(struct inet_peer_base *base,
struct inet_peer __rcu **stack[PEER_MAXDEPTH],
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 77f049d..cf7fe92 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1840,7 +1840,7 @@ void *tcp_v4_tw_get_peer(struct sock *sk)
const struct inet_timewait_sock *tw = inet_twsk(sk);
struct net *net = sock_net(sk);
- return inet_getpeer_v4(net, tw->tw_daddr, 1);
+ return inet_getpeer_v4(net->ipv4.peers, tw->tw_daddr, 1);
}
EXPORT_SYMBOL(tcp_v4_tw_get_peer);
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index b5ecf37..927c029 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1755,7 +1755,7 @@ static void *tcp_v6_tw_get_peer(struct sock *sk)
if (tw->tw_family == AF_INET)
return tcp_v4_tw_get_peer(sk);
- return inet_getpeer_v6(net, &tw6->tw_v6_daddr, 1);
+ return inet_getpeer_v6(net->ipv6.peers, &tw6->tw_v6_daddr, 1);
}
static struct timewait_sock_ops tcp6_timewait_sock_ops = {
--
1.7.10
_______________________________________________
Containers mailing list
Containers@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/containers
next prev parent reply other threads:[~2012-06-10 10:16 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-09 23:32 [PATCH] inet: Initialize per-netns inetpeer roots in net/ipv{4,6}/route.c David Miller
[not found] ` <20120609.163202.516027044484907548.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2012-06-10 1:58 ` Fengguang Wu
2012-06-10 1:58 ` Fengguang Wu
2012-06-10 2:04 ` David Miller
[not found] ` <20120609.190451.182034193302304295.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2012-06-10 3:16 ` Fengguang Wu
2012-06-10 3:16 ` Fengguang Wu
2012-06-10 4:21 ` David Miller
2012-06-10 4:21 ` David Miller
[not found] ` <20120609.212147.1738198233131370927.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2012-06-10 4:43 ` Fengguang Wu
2012-06-10 4:43 ` Fengguang Wu
2012-06-10 4:49 ` Fengguang Wu
2012-06-10 4:49 ` Fengguang Wu
2012-06-10 5:04 ` David Miller
2012-06-10 5:04 ` David Miller
[not found] ` <20120609.220421.2043389435765629622.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2012-06-10 6:47 ` Fengguang Wu
2012-06-10 6:47 ` Fengguang Wu
2012-06-10 5:03 ` David Miller
2012-06-10 5:03 ` David Miller
2012-06-10 2:04 ` David Miller
2012-06-10 2:08 ` Fengguang Wu
2012-06-10 2:09 ` David Miller
[not found] ` <20120609.190929.1165462964087672866.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2012-06-10 2:18 ` David Miller
[not found] ` <20120609.221801.2226110181753212240.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2012-06-10 2:37 ` Fengguang Wu
2012-06-10 10:16 ` Fengguang Wu [this message]
2012-06-11 0:27 ` [PATCH] inet: Initialize per-netns inetpeer roots in net/ipv{4, 6}/route.c Gao feng
[not found] ` <4FD53B74.1050409-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2012-06-11 1:44 ` [PATCH] inet: Initialize per-netns inetpeer roots in net/ipv{4,6}/route.c Fengguang Wu
2012-06-11 3:03 ` David Miller
2012-06-10 5:14 ` [PATCH] inet: Initialize per-netns inetpeer roots in net/ipv{4, 6}/route.c Gao feng
2012-06-10 2:08 ` [PATCH] inet: Initialize per-netns inetpeer roots in net/ipv{4,6}/route.c Fengguang Wu
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=20120610101640.GA14476@localhost \
--to=wfg-vuqaysv1563yd54fqh9/ca@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.