From patchwork Mon Jan 23 11:56:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Schultz X-Patchwork-Id: 718471 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.osmocom.org (lists.osmocom.org [IPv6:2a01:4f8:191:444b::2:7]) by ozlabs.org (Postfix) with ESMTP id 3v6VSB4jJCz9ryQ for ; Mon, 23 Jan 2017 23:07:38 +1100 (AEDT) Received: from lists.osmocom.org (lists.osmocom.org [144.76.43.76]) by lists.osmocom.org (Postfix) with ESMTP id B2A83217C; Mon, 23 Jan 2017 12:07:35 +0000 (UTC) Authentication-Results: lists.osmocom.org; dmarc=none header.from=tpip.net X-Original-To: openbsc@lists.osmocom.org Delivered-To: openbsc@lists.osmocom.org X-Greylist: delayed 581 seconds by postgrey-1.34 at lists.osmocom.org; Mon, 23 Jan 2017 12:06:52 UTC Authentication-Results: lists.osmocom.org; dmarc=none header.from=tpip.net Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=92.43.49.48; helo=mail.tpip.net; envelope-from=aschultz@tpip.net; receiver=openbsc@lists.osmocom.org Received: from mail.tpip.net (mail.tpip.net [92.43.49.48]) by lists.osmocom.org (Postfix) with ESMTP id 9E986203A for ; Mon, 23 Jan 2017 12:06:51 +0000 (UTC) Received: from office.tpip.net (unknown [153.92.65.89]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.tpip.net (Postfix) with ESMTPS id 492D94F40A; Mon, 23 Jan 2017 11:57:12 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by office.tpip.net (Postfix) with ESMTP id 1DE70A2C97; Mon, 23 Jan 2017 12:57:12 +0100 (CET) Received: from office.tpip.net ([127.0.0.1]) by localhost (office.tpip.net [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id ivc6_7hDiNi9; Mon, 23 Jan 2017 12:57:11 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by office.tpip.net (Postfix) with ESMTP id B5DCEA2CC0; Mon, 23 Jan 2017 12:57:11 +0100 (CET) X-Virus-Scanned: amavisd-new at tpip.net Received: from office.tpip.net ([127.0.0.1]) by localhost (office.tpip.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id DJLaRRpVlUyW; Mon, 23 Jan 2017 12:57:11 +0100 (CET) Received: from localhost.localdomain (pd95c9392.dip0.t-ipconnect.de [217.92.147.146]) by office.tpip.net (Postfix) with ESMTPSA id 6909EA2C6B; Mon, 23 Jan 2017 12:57:11 +0100 (CET) From: Andreas Schultz To: Pablo Neira Subject: [PATCH 06/17] gtp: fix cross netns recv on gtp socket Date: Mon, 23 Jan 2017 12:56:55 +0100 Message-Id: <20170123115706.4354-7-aschultz@tpip.net> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20170123115706.4354-1-aschultz@tpip.net> References: <20170123115706.4354-1-aschultz@tpip.net> X-BeenThere: openbsc@lists.osmocom.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Development of OpenBSC, OsmoBSC, OsmoNITB, OsmoCSCN" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, Lionel Gauthier , openbsc@lists.osmocom.org Errors-To: openbsc-bounces@lists.osmocom.org Sender: "OpenBSC" The use of the paassed through netlink src_net to check for a cross netns operation was wrong. Using the GTP socket and the GTP netdevice is always correct (even if the netdev has been moved to new netns after link creation). Remove the now obsolete net field from gtp_dev. Signed-off-by: Andreas Schultz --- drivers/net/gtp.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index 7a3c5f6..bc8734b7 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c @@ -69,7 +69,6 @@ struct gtp_dev { struct socket *sock0; struct socket *sock1u; - struct net *net; struct net_device *dev; unsigned int hash_size; @@ -292,7 +291,7 @@ static int gtp_encap_recv(struct sock *sk, struct sk_buff *skb) netdev_dbg(gtp->dev, "encap_recv sk=%p\n", sk); - xnet = !net_eq(gtp->net, dev_net(gtp->dev)); + xnet = !net_eq(sock_net(sk), dev_net(gtp->dev)); switch (udp_sk(sk)->encap_type) { case UDP_ENCAP_GTP0: @@ -642,7 +641,7 @@ static void gtp_link_setup(struct net_device *dev) static int gtp_hashtable_new(struct gtp_dev *gtp, int hsize); static void gtp_hashtable_free(struct gtp_dev *gtp); static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp, - struct net *src_net, struct nlattr *data[]); + struct nlattr *data[]); static void gtp_encap_disable(struct gtp_dev *gtp); static int gtp_newlink(struct net *src_net, struct net_device *dev, @@ -660,7 +659,7 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev, hashsize = nla_get_u32(data[IFLA_GTP_PDP_HASHSIZE]); if (data[IFLA_GTP_FD0] || data[IFLA_GTP_FD1]) { - err = gtp_encap_enable(dev, gtp, src_net, data); + err = gtp_encap_enable(dev, gtp, data); if (err < 0) goto out_err; } @@ -839,7 +838,7 @@ static struct socket *gtp_encap_enable_socket(int fd, int type, } static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp, - struct net *src_net, struct nlattr *data[]) + struct nlattr *data[]) { struct socket *sock0 = NULL; struct socket *sock1u = NULL; @@ -867,7 +866,6 @@ static int gtp_encap_enable(struct net_device *dev, struct gtp_dev *gtp, gtp->sock0 = sock0; gtp->sock1u = sock1u; - gtp->net = src_net; return 0; }