Received: by 10.213.65.68 with SMTP id h4csp1057527imn; Wed, 14 Mar 2018 08:21:13 -0700 (PDT) X-Google-Smtp-Source: AG47ELsquy2z0i1tDj4oNGfnT51PWV+Ku/YLop4S+bOXAfI2V6absaYSC9ywi15ZIrISA7XZRn58 X-Received: by 2002:a17:902:228:: with SMTP id 37-v6mr4455075plc.141.1521040873849; Wed, 14 Mar 2018 08:21:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521040873; cv=none; d=google.com; s=arc-20160816; b=u/VroptaiLAkTjpGB3hk3cP3kxJN4tO6eXzo482zZFgkIfrxeeWqcSW4hwfhuXChI6 zrf/V8bp3pTouhh2xne1St8E7o6HKe6miKjnNedIY4jEDj9SKa5t3tERRLXMv9acVtx5 3bdfMxljdUoaCKpx36M7F8Wv8tbU5D+7RritTyl8A2TZFE56mxBiHkvrQTw2mJvZ4t3n Oks9sf09zYUD8qfQTjh/aiGSbIG3LoiNC6gyTrt+0snQMWwc0EwNS49wtZIfS92M/c4u sSB3k6Wa07zHNmSDWqmnjYXkuBRRkuP/T5iAjmJyj1J6yKQitH4aWrjVH+38prYjcxgW dZAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=wJPR807CWKUsbPhGtCFBWq0fXmZ7ytxRKqAm3E8kSGY=; b=esBmECadk9B9N/3yCbf2P8pTN5/a/8ANrknT/tyvOQmNhNSuuH65mNTl3kl8VZGjSe ad3Ox5jcPPsCg66gdpm/a6oVV3hFRFG5In18/KDkdkrMxa46TuokrPsSUXj3/zPhKJRb /0T+2eTuAS0mJcTK6LhTWwCRqxGSmyo22tMSo3HSE0dbe/pu9r4nvXSHZPrYQTsj3ByS JbiVJwutQY4FXM8Gs1mtyXFEQ3ht9AxKrjRo0lD9SK9JEDk26F8DV+DLPbwM22QYnU/Z dvuhsyI7HNVpDWyehuVmMf/xpHKgDBq1P253u2/qId7I9j4nyYIZVkF6Da3sKIu3z1nK VTFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=OTLVTbDu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a65si1051462pgc.589.2018.03.14.08.20.58; Wed, 14 Mar 2018 08:21:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=OTLVTbDu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751526AbeCNPTa (ORCPT + 99 others); Wed, 14 Mar 2018 11:19:30 -0400 Received: from userp2130.oracle.com ([156.151.31.86]:50654 "EHLO userp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751362AbeCNPT2 (ORCPT ); Wed, 14 Mar 2018 11:19:28 -0400 Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w2EFHLwb067370; Wed, 14 Mar 2018 15:19:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : mime-version : content-type : in-reply-to; s=corp-2017-10-26; bh=wJPR807CWKUsbPhGtCFBWq0fXmZ7ytxRKqAm3E8kSGY=; b=OTLVTbDuL6SNJiCGNAtuYptE5gUSAqNmpSZZZnWVCcZfS2lMGQguoOWHQv/oSUMRmd1M erWWjqLlsRWG4UaVsHHDZfc0DcrI69U5cCa+BAyYeNUXgVwY0ozyyWIPejCdL6KaElgW DGOrNj0ax/KdkPITg2ww4BNTZPd1b0o4yLpebfZlrtvh11JFSq5s3jInWC+2D7SP1woe rPYpocIRZCuIGc2bf/GcSle3THkT1RjmdYgN9b31U3ieWJ/2wC6+zp1j1pdUldMrR7v5 XVCFmcEOHAFnB0gxnY/04dxVEujcLQbO400TlTcU2D409NBKrD/w0L/5QX5/sAoMUyyJ dg== Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp2130.oracle.com with ESMTP id 2gq5xar2a0-89 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 14 Mar 2018 15:19:26 +0000 Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w2EC3nLD001845 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 14 Mar 2018 12:03:49 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id w2EC3mlD010013; Wed, 14 Mar 2018 12:03:49 GMT Received: from yuvallap (/77.138.186.148) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 14 Mar 2018 05:03:48 -0700 Date: Wed, 14 Mar 2018 14:03:43 +0200 From: Yuval Shaia To: Liran Alon Cc: davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, idan.brown@oracle.com, sharon.s.liu@oracle.com Subject: Re: [PATCH] net: dev_forward_skb(): Scrub packet's per-netns info only when crossing netns Message-ID: <20180314120342.GA15750@yuvallap> References: <1520953642-8145-1-git-send-email-liran.alon@oracle.com> <20180313161345.GC4023@yuvallap> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180313161345.GC4023@yuvallap> User-Agent: Mutt/1.9.2 (2017-12-15) X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8831 signatures=668690 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1803140173 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 13, 2018 at 06:13:45PM +0200, Yuval Shaia wrote: > On Tue, Mar 13, 2018 at 05:07:22PM +0200, Liran Alon wrote: > > Before this commit, dev_forward_skb() always cleared packet's > > per-network-namespace info. Even if the packet doesn't cross > > network namespaces. > > > > The comment above dev_forward_skb() describes that this is done > > because the receiving device may be in another network namespace. > > However, this case can easily be tested for and therefore we can > > scrub packet's per-network-namespace info only when receiving device > > is indeed in another network namespace. > > > > Therefore, this commit changes ____dev_forward_skb() to tell > > skb_scrub_packet() that skb has crossed network-namespace only in case > > transmitting device (skb->dev) network namespace is different then > > receiving device (dev) network namespace. > > > > An example of a netdev that use skb_forward_skb() is veth. > > Thus, before this commit a packet transmitted from one veth peer to > > another when both veth peers are on same network namespace will lose > > it's skb->mark. The bug could easily be demonstrated by the following: > > > > ip netns add test > > ip netns exec test bash > > ip link add veth-a type veth peer name veth-b > > ip link set veth-a up > > ip link set veth-b up > > ip addr add dev veth-a 12.0.0.1/24 > > tc qdisc add dev veth-a root handle 1 prio > > tc qdisc add dev veth-b ingress > > tc filter add dev veth-a parent 1: u32 match u32 0 0 action skbedit mark 1337 > > tc filter add dev veth-b parent ffff: basic match 'meta(nf_mark eq 1337)' action simple "skb->mark 1337!" > > dmesg -C > > ping 12.0.0.2 > > dmesg > > > > Before this change, the above will print nothing to dmesg. > > After this change, "skb->mark 1337!" will be printed as necessary. > > Hi Liran, > > > > > Signed-off-by: Liran Alon > > Reviewed-by: Yuval Shaia > > Signed-off-by: Yuval Shaia > > I did not earned the credits for SOB, only r-b. Had an offlist conversation with Liran, Turns out that this SOB is ok. Yuval > > Yuval > > > --- > > include/linux/netdevice.h | 2 +- > > net/core/dev.c | 6 +++--- > > 2 files changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > > index 5eef6c8e2741..5908f1e31ee2 100644 > > --- a/include/linux/netdevice.h > > +++ b/include/linux/netdevice.h > > @@ -3371,7 +3371,7 @@ static __always_inline int ____dev_forward_skb(struct net_device *dev, > > return NET_RX_DROP; > > } > > > > - skb_scrub_packet(skb, true); > > + skb_scrub_packet(skb, !net_eq(dev_net(dev), dev_net(skb->dev))); > > skb->priority = 0; > > return 0; > > } > > diff --git a/net/core/dev.c b/net/core/dev.c > > index 2cedf520cb28..087787dd0a50 100644 > > --- a/net/core/dev.c > > +++ b/net/core/dev.c > > @@ -1877,9 +1877,9 @@ int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb) > > * start_xmit function of one device into the receive queue > > * of another device. > > * > > - * The receiving device may be in another namespace, so > > - * we have to clear all information in the skb that could > > - * impact namespace isolation. > > + * The receiving device may be in another namespace. > > + * In that case, we have to clear all information in the > > + * skb that could impact namespace isolation. > > */ > > int dev_forward_skb(struct net_device *dev, struct sk_buff *skb) > > { > > -- > > 1.9.1 > >