From nobody Sun Jun 28 09:58:37 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 753B3C433F5 for ; Sat, 19 Feb 2022 19:14:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243107AbiBSTOo (ORCPT ); Sat, 19 Feb 2022 14:14:44 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:53674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236928AbiBSTOe (ORCPT ); Sat, 19 Feb 2022 14:14:34 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9C953B0; Sat, 19 Feb 2022 11:14:14 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21JCZbhS007199; Sat, 19 Feb 2022 19:13:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=tKz23U7CLWq5I1MAfqBjhjjjjs+n+wrwgU4RuthXKsY=; b=hTsKVM5P/JzSzc6gKhSI4S9IPD3UioOf4UP2t3G6OTaFRBSjpYrLnA7B1W5lL9AQTi/s w8gJ6hqPjxcP1Y+mnEDwp9eXC5/pqpJaw4KegD9nBVK4Fh9oW8E6jo1hbp6WeFJ/7O2d YSUCIZCnRJ1J6vyIEJ4ng9iK8p+lHYv5sOh/x4uAseMkIfMv74y0OnfQ+/yWyjgX3QHb ilBXamrHKt/CvwglxQbOwHl0npufnJzpSPcyh4yI70bqYWc38NVJwWOHwruakRLWhVM5 orKD7lO/U3589RSvZx7kECTJWE/c3KwHHUMkYwdUaAlzOj+QuJ9jL/xVuchyh6xKsScy Rg== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3eas3v0utx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 19 Feb 2022 19:13:09 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 21JJCI12025018; Sat, 19 Feb 2022 19:13:08 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2042.outbound.protection.outlook.com [104.47.73.42]) by aserp3020.oracle.com with ESMTP id 3eb47x39mf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 19 Feb 2022 19:13:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TKKfqQJ0lIiune5aciNLwQVE/3AE+E2hX/MBvVWG9glEbk8bMBiNHxNYye+q8b1Z1oanh6vRXdIRr1fZIFRqn5lfI+LybWDvgO8SeogDcs5dYBTchKFcZIYSdL8Lr5vFOMxQqMcLN4nXGKp/uupc6/u11za73G7RpvAVSrTT8IrpXqRv3HMf8sIXl72h1Ds7wYDYlpVWxlwf7fPstxOwKsu1WEpO1DYhidV4BrqjS9GubUaGSalK4WuNTcXrJMqjD/B9fgVicli3HLTR96D/48wicf1VPe5/D1YGilvdBl3S7ajUSww7aN1zh9eJ5cqRAkpv6U5wioJAKL8oDzSYHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tKz23U7CLWq5I1MAfqBjhjjjjs+n+wrwgU4RuthXKsY=; b=NvyLq9OYrsog8uKtl6kZ0t6P5xeWw6ABJBVyAx1Zk+kM4+49nB6/IGzTRIn9mpDN6t9xtysmsOmtBPbSiVzNR439M1tmhzVk9qjlpaKXitYlPloi3IQX8EQvkkyD3+J++VMTNNIxoM+aG4tOySVg2leCmzbfLtAoA9rSzQtxhxabct7TjfYRgvz925h7aCNAv/qpA2jH/4r7muhCo1t5buk4oZXa9FFzQYGoYlFdbpCHdTjrjZF6pn51M65zXPs+86zcgK8rAa6HZ3841srNxBBLEtgXWmz4pBnJQywYv07wcOyviecmJBXvQVqIkRZ9KkOzbZS8zUhVvqYWgQDxew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tKz23U7CLWq5I1MAfqBjhjjjjs+n+wrwgU4RuthXKsY=; b=vKWt6rkdaV6Y/z1Yh0+f0BdaOYcF+phExPzrzrbQaKvtnfdwgBUFIdPWXTjZ+Oxj9fUSqNkgxUZzszIa5Q2hgkOFQqyiBD9985m0Ggv3+NtV3zX6kV04ZrdnaYB4eWzkLfFoj4A6JYURs0VjD5mqVnmL3C2CI7rPD00sVhese1Y= Received: from BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) by SN6PR10MB2928.namprd10.prod.outlook.com (2603:10b6:805:d2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.22; Sat, 19 Feb 2022 19:13:07 +0000 Received: from BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47]) by BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47%4]) with mapi id 15.20.4995.024; Sat, 19 Feb 2022 19:13:06 +0000 From: Dongli Zhang To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, kuba@kernel.org, rostedt@goodmis.org, mingo@redhat.com, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, imagedong@tencent.com, joao.m.martins@oracle.com, joe.jin@oracle.com, dsahern@gmail.com, edumazet@google.com Subject: [PATCH v2 1/3] net: tap: track dropped skb via kfree_skb_reason() Date: Sat, 19 Feb 2022 11:12:44 -0800 Message-Id: <20220219191246.4749-2-dongli.zhang@oracle.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220219191246.4749-1-dongli.zhang@oracle.com> References: <20220219191246.4749-1-dongli.zhang@oracle.com> X-ClientProxiedBy: SN7P222CA0017.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::15) To BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 90f38ff0-efcb-4dd5-4ff1-08d9f3dbdc17 X-MS-TrafficTypeDiagnostic: SN6PR10MB2928:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ypqO29OAMtahjQZSETAGDELL/+s32BERwhP80he/7+cGTM4A456sTm5QP95nLSo4htUT6o9c4nbGLGEcodjncxIFoxzpvjkpUDgzgOOkqmqM2mWdzuijGb5/018tmNJ2ff4S/IS0b14rOsExAUEoXCIcXw3iIqVD3dI2QrJ68VnUMpDfJxxYwO/oX5jxiLv6Az3skZxGKs7ja0V8y3XdCzK/mCv4WztOHQWfrM/beGBcKRFcROlQpzFhmi9UOWKOJ1tacC2dq5Tp6busWM9qs+t75anGkFtlsFlwU6amH7fxXSm1P3jIeNEGKaMvW/k8rq4zpfk/TdYVExtYPRf1QCBdGRGnZnttlLT5/uwb+6bqUHFFVWTWikAUGmiAJLBTGa2x7M0ZmsJ4Kblen2me7Lnb8kluOLETpHMv2sGRxgshLcsIDZ+uQlAZisTOpkyfv6pwDgsPnw+99XZZ+ozHqv5YNilek9mlzA3CqFQH2F7/tXpJAIERN9BNmL+s5xlu6YSINuwY1qrLoRDqaS5MpG97ekejaxRAccj/0CJQygyI6mcOOAn6u5a5pz1IGERYvwRh3gaCOiHCA2qX+OeQ4QnnAzL5b98uTJ5IaCdOV01wbN9PIMjHZHLqZc8YfNITUImIx2QRE0bHq/5wBgHsfyNzn1GIs/qG0kx0BoQ5h4c06D57AxfCbJSxf7ime2a3P2qXRONwJLB9vwwia4AsRg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2663.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(7416002)(5660300002)(8936002)(86362001)(316002)(508600001)(8676002)(4326008)(66946007)(6506007)(66476007)(66556008)(52116002)(6666004)(44832011)(38350700002)(186003)(26005)(38100700002)(2616005)(1076003)(36756003)(83380400001)(6486002)(6512007)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?R2xOl1YSLb6/qEv7AcUu1OedqpIQGfu3ZkptTggcDHWyYMZW9F1prpbKgj/n?= =?us-ascii?Q?nAajkddX/OYwXVehBEHNaIyxtuMGArANd58L3O7JCayQ4V4CVyAycwoIbS+o?= =?us-ascii?Q?FDmZcX3YA3kkUMxjh77fmoqZj93D8FEQeS2IrGpTSx/9BBglP6mgSAl519Jr?= =?us-ascii?Q?6uZZo85UB37cgkU1YwBY2DN/05AfkQYhjmZSaX7ACnodFZoakRhId6jBweHj?= =?us-ascii?Q?oZtPhOoszALC+10lzwUwDe09cgWe/q4urPldBvMQa/1LJuu8ZGXel7+eE9DJ?= =?us-ascii?Q?wsuBLkSx1CyA0uorr0G76+cQwr7jxe4qIZ3HehJXTF6AKjybb+54gYEshWjN?= =?us-ascii?Q?pSeIY3arCfyhBo5RCWF8dlS9Zlz3Xuo2Q7XCmzQcYVQRR2BhS7kdgOGaPpoa?= =?us-ascii?Q?yBhreGVxkIvasgui0z9BZudWexV+BgeltruAUO91YWYTCPqjb1tTIo6EgnC3?= =?us-ascii?Q?S7/U7BMjbjHqEMlfhwYs+qDpMY/USAxKz3sqZl+y3k8FXqJtmAIaFLIr46KS?= =?us-ascii?Q?/la1ffbvmTAZiYrtLtKOeb8iY11VHdGQLU63CwDsHdWmXWL3cA3THo8sh2HD?= =?us-ascii?Q?DNYozApAO/JmT+6zsjPwruNjKpKsb5lPf0kf4svEd4XkYzUESyDl3/SoH5b0?= =?us-ascii?Q?1NdHZ+waNXJHREOgNy+oPgbxcUVp9Wiku7RBY3H64GxWDuo+gfqX8JPvs/du?= =?us-ascii?Q?KPEK9zDSPLzuPTO/2GqbPgRYdWXXrFcwBxbsgqgI88YsSL+alKYbgQLkxvwK?= =?us-ascii?Q?OJ9nD15A83Le4iNpWRa1TlQlo16ssTrZxC4BrCfoO4LtIazhNWd6nftJgvzo?= =?us-ascii?Q?H7o9wsWtDj/oVKzSSKFbotSOILFgFwPK9+6zJhHARxohSgOuOYcsxBHg4dhZ?= =?us-ascii?Q?rMWPbvSCFZDtuB50pFTeTl+qBNzwgQcmdJFrEG/KPU7PpaOIOc1lRh+394e+?= =?us-ascii?Q?4SciaNXfMwBxWUQ5N184TtCx1b/tzqsOz/Dygc9YfUVkgAEQtGaktDOj3DlT?= =?us-ascii?Q?8oR8wPemvy3eD93SrvQW4oa+Kdmk3J3eQQfCOR36fkMKlnuJYgsZ4Sg0KbQB?= =?us-ascii?Q?Xm/gmFOaLigBZjYsTJ97Sqp8zlIfJZMWDLaZP/ipyQ2iKVMQ7QAsBUSOh1By?= =?us-ascii?Q?fDdzWBL37JTobs4osrzzc7UnEQSWC2077LiYYUWcZICPPHVUQfllUdPbRXJe?= =?us-ascii?Q?viVNNTAaHaXqTR4vrAlLig2lAEWxwHXUzy/TuT0myNOAiR7Znq4KgTLBRG4M?= =?us-ascii?Q?WuCn4usq7lrHEFY2WQa74FKLBBgy5GrSoNW/UZpm4WWnaMe3H6nLV5M2qoLT?= =?us-ascii?Q?2bdQvElHURwxn8GQ5K+2knrW0jJZE/r3agAAQgjr6GDiSEVR+iiKI34DPXTW?= =?us-ascii?Q?wTQZYp5bAl1SZ9mAS/OGZIN40yfpJNkeuRzFeZHQ2QdK3Kn9xxDcNAvYyQmr?= =?us-ascii?Q?lezy0YpdSuQ9xSh4zqktTt3wOQx3mV9JJiOc9MR3WG4R3S2mEWHJGyvDexpX?= =?us-ascii?Q?dhuREH3hnLB16kZ31St41QO5o3BXZtYWtS90nsbxnMGa0/+x0W8EPo9mNc9S?= =?us-ascii?Q?fUzX2L+8bPIXjOiBJXLSTSCXjTwZbXZ0mwrMGLe14vcuXtNpTaAQHEuoPCRy?= =?us-ascii?Q?2dYHKg+ZXuSgoiW9BUduwLA=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90f38ff0-efcb-4dd5-4ff1-08d9f3dbdc17 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2663.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2022 19:13:06.7413 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: I6xqkaN3T6XOJU/ffgXd11plZwL15A82AbBOvg5P1qFY697H03INmQkEZ3E1pzN5/86vqMcyFtguEusHuXpxSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB2928 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10263 signatures=677614 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 bulkscore=0 phishscore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202190125 X-Proofpoint-GUID: 3d_n8Arj0eLz5Q7HxP8Hnu7e6wE76FNI X-Proofpoint-ORIG-GUID: 3d_n8Arj0eLz5Q7HxP8Hnu7e6wE76FNI Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The TAP can be used as vhost-net backend. E.g., the tap_handle_frame() is the interface to forward the skb from TAP to vhost-net/virtio-net. However, there are many "goto drop" in the TAP driver. Therefore, the kfree_skb_reason() is involved at each "goto drop" to help userspace ftrace/ebpf to track the reason for the loss of packets. The below reasons are introduced: - SKB_DROP_REASON_SKB_CSUM - SKB_DROP_REASON_SKB_COPY_DATA - SKB_DROP_REASON_SKB_GSO_SEG - SKB_DROP_REASON_DEV_HDR - SKB_DROP_REASON_FULL_RING Cc: Joao Martins Cc: Joe Jin Signed-off-by: Dongli Zhang --- drivers/net/tap.c | 30 ++++++++++++++++++++++-------- include/linux/skbuff.h | 9 +++++++++ include/trace/events/skb.h | 5 +++++ 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/drivers/net/tap.c b/drivers/net/tap.c index 8e3a28ba6b28..ab3592506ef8 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -322,6 +322,7 @@ rx_handler_result_t tap_handle_frame(struct sk_buff **p= skb) struct tap_dev *tap; struct tap_queue *q; netdev_features_t features =3D TAP_FEATURES; + int drop_reason; =20 tap =3D tap_dev_get_rcu(dev); if (!tap) @@ -343,12 +344,16 @@ rx_handler_result_t tap_handle_frame(struct sk_buff *= *pskb) struct sk_buff *segs =3D __skb_gso_segment(skb, features, false); struct sk_buff *next; =20 - if (IS_ERR(segs)) + if (IS_ERR(segs)) { + drop_reason =3D SKB_DROP_REASON_SKB_GSO_SEG; goto drop; + } =20 if (!segs) { - if (ptr_ring_produce(&q->ring, skb)) + if (ptr_ring_produce(&q->ring, skb)) { + drop_reason =3D SKB_DROP_REASON_FULL_RING; goto drop; + } goto wake_up; } =20 @@ -369,10 +374,14 @@ rx_handler_result_t tap_handle_frame(struct sk_buff *= *pskb) */ if (skb->ip_summed =3D=3D CHECKSUM_PARTIAL && !(features & NETIF_F_CSUM_MASK) && - skb_checksum_help(skb)) + skb_checksum_help(skb)) { + drop_reason =3D SKB_DROP_REASON_SKB_CSUM; goto drop; - if (ptr_ring_produce(&q->ring, skb)) + } + if (ptr_ring_produce(&q->ring, skb)) { + drop_reason =3D SKB_DROP_REASON_FULL_RING; goto drop; + } } =20 wake_up: @@ -383,7 +392,7 @@ rx_handler_result_t tap_handle_frame(struct sk_buff **p= skb) /* Count errors/drops only here, thus don't care about args. */ if (tap->count_rx_dropped) tap->count_rx_dropped(tap); - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); return RX_HANDLER_CONSUMED; } EXPORT_SYMBOL_GPL(tap_handle_frame); @@ -632,6 +641,7 @@ static ssize_t tap_get_user(struct tap_queue *q, void *= msg_control, int depth; bool zerocopy =3D false; size_t linear; + int drop_reason; =20 if (q->flags & IFF_VNET_HDR) { vnet_hdr_len =3D READ_ONCE(q->vnet_hdr_sz); @@ -696,8 +706,10 @@ static ssize_t tap_get_user(struct tap_queue *q, void = *msg_control, else err =3D skb_copy_datagram_from_iter(skb, 0, from, len); =20 - if (err) + if (err) { + drop_reason =3D SKB_DROP_REASON_SKB_COPY_DATA; goto err_kfree; + } =20 skb_set_network_header(skb, ETH_HLEN); skb_reset_mac_header(skb); @@ -706,8 +718,10 @@ static ssize_t tap_get_user(struct tap_queue *q, void = *msg_control, if (vnet_hdr_len) { err =3D virtio_net_hdr_to_skb(skb, &vnet_hdr, tap_is_little_endian(q)); - if (err) + if (err) { + drop_reason =3D SKB_DROP_REASON_DEV_HDR; goto err_kfree; + } } =20 skb_probe_transport_header(skb); @@ -738,7 +752,7 @@ static ssize_t tap_get_user(struct tap_queue *q, void *= msg_control, return total_len; =20 err_kfree: - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); =20 err: rcu_read_lock(); diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index a5adbf6b51e8..218f7ba753e7 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -346,6 +346,15 @@ enum skb_drop_reason { * udp packet drop out of * udp_memory_allocated. */ + SKB_DROP_REASON_SKB_CSUM, /* sk_buff checksum error */ + SKB_DROP_REASON_SKB_COPY_DATA, /* failed to copy data from or to + * sk_buff + */ + SKB_DROP_REASON_SKB_GSO_SEG, /* gso segmentation error */ + SKB_DROP_REASON_DEV_HDR, /* there is something wrong with + * device driver specific header + */ + SKB_DROP_REASON_FULL_RING, /* ring buffer is full */ SKB_DROP_REASON_MAX, }; =20 diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h index cfcfd26399f7..842020d532f2 100644 --- a/include/trace/events/skb.h +++ b/include/trace/events/skb.h @@ -27,6 +27,11 @@ EM(SKB_DROP_REASON_IP_NOPROTO, IP_NOPROTO) \ EM(SKB_DROP_REASON_SOCKET_RCVBUFF, SOCKET_RCVBUFF) \ EM(SKB_DROP_REASON_PROTO_MEM, PROTO_MEM) \ + EM(SKB_DROP_REASON_SKB_CSUM, SKB_CSUM) \ + EM(SKB_DROP_REASON_SKB_COPY_DATA, SKB_COPY_DATA) \ + EM(SKB_DROP_REASON_SKB_GSO_SEG, SKB_GSO_SEG) \ + EM(SKB_DROP_REASON_DEV_HDR, DEV_HDR) \ + EM(SKB_DROP_REASON_FULL_RING, FULL_RING) \ EMe(SKB_DROP_REASON_MAX, MAX) =20 #undef EM --=20 2.17.1 From nobody Sun Jun 28 09:58:37 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AFCE8C4332F for ; Sat, 19 Feb 2022 19:14:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243137AbiBSTOw (ORCPT ); Sat, 19 Feb 2022 14:14:52 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:53968 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243099AbiBSTOk (ORCPT ); Sat, 19 Feb 2022 14:14:40 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CF3DB21; Sat, 19 Feb 2022 11:14:19 -0800 (PST) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21J9hcDk007169; Sat, 19 Feb 2022 19:13:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=t1ZVWrUzSiDnsjR/gi8APfLBNWcGZy+/MwDX+ODbbr4=; b=T6N0BGEaBM+Fon9kmHMS7XJci/t5gbVpihXxU4xpxbsTY1D6ekNextEApst9AP/O3v/m Q3AamttF287vK05f4089SVtonxJxLSRqtUjggow3qtK3/SskGh894W0r8v9ivDnVwt9M RB9Onjo9/svfxGxM/WhiTmS3CwXiKs5BVHHPBHDA1w7KTDy0OqMQx6lYco88pM4SSbho xWmpMvlgSTlciaI5yp3hlZll4LCjTjJbcTRbz4+tUyU3nVJcCrDSan49ptMAecibKnGo wsiQCNRKz04GgW2Qmvy2RHBrqlem2kTm1xshHh3LS4l1s+hLVjTe0suAabShvCqt/a0h gw== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3eaq52909x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 19 Feb 2022 19:13:11 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 21JJCIxd025071; Sat, 19 Feb 2022 19:13:10 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2042.outbound.protection.outlook.com [104.47.73.42]) by aserp3020.oracle.com with ESMTP id 3eb47x39mv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 19 Feb 2022 19:13:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C5ute89JvAl5n0d1i3S0tUZ9mSH3RWOxR198RD6UtJCju1w3jhwNQri8xwRIvfAgRnJVpCdp2/2zVy3TMA3+N55aE4ZT+VoGB9W862nk/B+uaF9pU77e/pRKkag+nxMFNDy/fA6hlQlbPv2fMhINVFkwcS1Dt633Y6RL7FtFdssL0Zlmwl/KgpXkZcJtU5oDFR2EWftZkaGNFZfD/+4JZOHhqUxXMmVE2UiMj0xS7oXKifrcQrtT4/hvB36PW+90Ip/XaN4Sgv5HVPUSnXTjv4+5b+o5+xL/KCNe3pOw4kKPw1HyaDGkGk3u9wH3eSGWuVQ0swkL7HepZNuimSwIaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t1ZVWrUzSiDnsjR/gi8APfLBNWcGZy+/MwDX+ODbbr4=; b=KWQur9uYYPPFIDbg/dmjs5/gBCIRMXF0a0Erwj9CHiJcpd5mQdUGAIk0Piy2GgRDj5fY7URiwoBPe7/KskPejZKTWCzs2ioSt+Jc8/mn7ZxmDNwvRZub13grIEYxI9x0qpBOnD3hq0kQEL6p3aTRyW3FH1AcIOz49MGD7Q8gm5T9FpfhAAmNJXmWGLdgfsTRXM6S6ha/uaRBM5AxcACJb4JWqZI+dNiPGZr6iXzVNuCPlXFo1na//CUagNPBuZYcMfv39cnN7LDjaQlhw85W6MZQXb2KtBYki6REg42I7yvgDREEYlyIReeGjgOVnt1w9pZkhN3OKpgawcWLmb/s+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t1ZVWrUzSiDnsjR/gi8APfLBNWcGZy+/MwDX+ODbbr4=; b=gG5s+SxZtJRnQmmkglXkJjittm9akRwAS2Z6hDD+dstsTfDP44bmtu09LM600IM6LHgtthIfn7lYaCqC0QDf5cIG02jS2IxU2k18lCtTZSW8C4oCHQr2YeB3Eg/ZTQ4h8FucPFGY3toogZICNlS7jWqBXF6CjTWNze2m66/kWvs= Received: from BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) by SN6PR10MB2928.namprd10.prod.outlook.com (2603:10b6:805:d2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.22; Sat, 19 Feb 2022 19:13:08 +0000 Received: from BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47]) by BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47%4]) with mapi id 15.20.4995.024; Sat, 19 Feb 2022 19:13:08 +0000 From: Dongli Zhang To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, kuba@kernel.org, rostedt@goodmis.org, mingo@redhat.com, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, imagedong@tencent.com, joao.m.martins@oracle.com, joe.jin@oracle.com, dsahern@gmail.com, edumazet@google.com Subject: [PATCH v2 2/3] net: tun: split run_ebpf_filter() and pskb_trim() into different "if statement" Date: Sat, 19 Feb 2022 11:12:45 -0800 Message-Id: <20220219191246.4749-3-dongli.zhang@oracle.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220219191246.4749-1-dongli.zhang@oracle.com> References: <20220219191246.4749-1-dongli.zhang@oracle.com> X-ClientProxiedBy: SN7P222CA0017.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::15) To BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9661b79e-467b-4a83-0475-08d9f3dbdd14 X-MS-TrafficTypeDiagnostic: SN6PR10MB2928:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: msMkrrsu8jpIx6+U2zXabB3zOAhGWeVMfAAAoL7xBtZBh7htwW+40QiBmN8CGn3O2P5ZPSZGdhfiNQ61c0V29TYWQxheuAhVavP4+jEghjClWtVuwT3cWmfyI2yfOdWdsJ0e1gBsLZwLFXt31Mlxlk/fD4O+gcBqGZAmxRPSWh3AYfO+p8HG3mwOz4YIaV0AiXZjz9uHq9hNaP8HFqaThfURj5U/UvWpQj1XSbEbf3ldinW3nQjGamVDiYkU+REfGrM0FvWei8n+F7Czwjcutx5yx32YCHr2YKuRgYvFq96PNZt8M+2S3jM5KSxRM9d5zyxyHMuJEuqaaQGZFH32XHogthJ/Lb/ODs3BDd3jQs2pi8xlOcfvU9iupGLNHl7cT1BWE+wIstQYR7ezehvgqeLfnLFpoRVaKfq65cGhIwkoDebTAEXubgimlNJ8Ryw1JDPS6iElMFkmFxEfAQB6llPfjGlvwz6zeAGhtvTmHazCu7ZGpWJEQFCeb+nrOdbMq/yEypJnjwQdxUBzL9dboVWujxc/3LNfpQRbxccMQXCtlRXtEOVtH3vapL/hURdSWA07IkZ5PBvhq8dwUOYCR2Qcl4hcTYHvpvaum86rOami1M4BS4nlkRVkFI5QJ+C1K6VhGd8Fl70qCw6187APv9C3hWWCWqtOf98ybKng6MxQf3Iat55X+4wkpzr31MAmW+eX7Satxg5hE1akMJn4rw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2663.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(7416002)(5660300002)(8936002)(86362001)(316002)(508600001)(8676002)(4326008)(66946007)(6506007)(66476007)(66556008)(52116002)(6666004)(4744005)(44832011)(38350700002)(186003)(26005)(38100700002)(2616005)(1076003)(36756003)(83380400001)(6486002)(6512007)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Idc0q7Cq4hd2ZYeHU63GRlKOl47c/KK3M9KLE2zjUQ/8e9oSMUZ1zBt74gdI?= =?us-ascii?Q?x6Mr+i/JogmiBXCp/R1DgMkrVmB4N+tP5ROjCS9bwcSDX2504U4s5so5F7JG?= =?us-ascii?Q?JqCPwVcR1Mm1Y5/hDpTzgPFolHx8w+S/djPWa34W2gHAhEmjlBKAK7qBczYx?= =?us-ascii?Q?vjyDsna+nz4oqFL0VmjSbeYJl2wTItHvOakPW/tKQUKxBneNhJYvWDmXNJj2?= =?us-ascii?Q?B15GDAoYiMMP96oEn4d48Fx8q7+IlTWj7nrEtSyG7OGlTTGYZ90JQI/ZTtoo?= =?us-ascii?Q?6oVqaZRunQR8d0XgOUUhPQlso1Sc6RqgVGwgOrI9FM08PPDC2jxZlLy8XGWR?= =?us-ascii?Q?SFZ2wK/GH+dzTs9Uue3Bg2E9Ysdcgcb7DQdRAONNyV8Le0nPokm9kgFHaPl+?= =?us-ascii?Q?hOwTo3KZLgmY3sbnOT7Ed273ZUoKhRKb942K+DgNK0nkykRC2BGB5sARHdrJ?= =?us-ascii?Q?TqWs0QuriEBgDRvi2Zai86BTgloT7Pj9ROome35NnSSuDi5bgxWftKF6cku8?= =?us-ascii?Q?bzZ3Ysl3P6CbOK74JkyS1XhYXGLYhP95iogBFAU7x3gdzCdlsM4EyLpsJxOp?= =?us-ascii?Q?Xd2hxwAnk0NN38wMUOL5iUMuM5DIy3YsFygfsIIToQik7ZOVEhbAraQUOJba?= =?us-ascii?Q?9zPGrSl2vNpzlU+kbiHFFc+wkZ4E56DW5dXuVKsFZP8CCvc7S0BtumUAjGII?= =?us-ascii?Q?YZAVRp2qAkW1w9yANz+AomOG2g6l0VhJbs7dc2RoFQuURP4VGIG4gcSkUCuq?= =?us-ascii?Q?w+nXvmE3jGOLJjBYOT7zmC+TBACQeDA/n8DoQAVAiofQRsrolc2w7aLCepu5?= =?us-ascii?Q?Jlx76pB5bilp923xm4VwUnf95wYeizVoGq8UPcSHYidGa7aUwCzzsO7+9SVF?= =?us-ascii?Q?7XLZ2w32wt3hE/5zRHx9xdsjgaAm01+5MFnz2BcpFSUVB0o1H5hZYTkzMggU?= =?us-ascii?Q?9OfIkUSk29y0aUIPcruIHV6qHlv7oSWYIQOyXQkU4AfLBsYQfgm4bYCE1IJj?= =?us-ascii?Q?aAATFLzhMsT7mWrcKco1glnqUUfN5Y9lgzECAqvPabsxZFGH5czzBbZmwjxL?= =?us-ascii?Q?huy2sZ85RFjELMFjDqUtgyB0xpyQnAuLRhbyg0X3q0rZnq1nl1kcEtwR7z+b?= =?us-ascii?Q?2IWqr0DE0pY9F5yJEb6Q3BfrWXsnvnAbnxZPpyfjeACUw9sqorZReKkAu+I8?= =?us-ascii?Q?nm17FAhfTZ2xAi4DT9R2pZQ2q12NBIYRk5Y9Jr8kKoMU1qZXFT3rDzdrNXsC?= =?us-ascii?Q?SQLv8r2iCb9dKP0Nk/zhDz4iVIF2b0hG+07mC8PZ1hq8hJHCZDm4/zyPpCrn?= =?us-ascii?Q?3gRyBqQ6q/H5GdDwHQia/xW1uUilR+76OfYApwMwLMW+AADP6SimM2sZW9Rn?= =?us-ascii?Q?hLMY0fKD9l/nz2tSxcQnCDOzhNniqLPiVKu4IqB3vgN9om5Bf11bbEYKEPUK?= =?us-ascii?Q?/keyAFph/hdgXiF8uNpeTlgmYNwoHrHVvp0W2SYkKdSooq1A8zDR43/aK2CL?= =?us-ascii?Q?rhE8oRXWAs74q90FVbndGXt9f1oLn95F71aECzzemP31Ru9qcGdqGSCCHL9Q?= =?us-ascii?Q?H/xBIN7F9MQSIUVtgA5OuF0VHdnJtiBChMSQxT7ECzEf48XQ541p56fBa6Lz?= =?us-ascii?Q?4kcmmOJoBpn8LjQ0mv/WeY0=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9661b79e-467b-4a83-0475-08d9f3dbdd14 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2663.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2022 19:13:08.3818 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hmhOWF71in6RztrjqSXf5eIDxoNqzaRkhxTAYgVTF6t/feuKUBr37wg/akmwM3YyodPOB/ZLMSPG24Y+XC37kA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB2928 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10263 signatures=677614 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 bulkscore=0 phishscore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202190125 X-Proofpoint-GUID: cKNk6eqkg2LVANTK3ybO_pOZmeZedsZZ X-Proofpoint-ORIG-GUID: cKNk6eqkg2LVANTK3ybO_pOZmeZedsZZ Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" No functional change. Just to split the if statement into different conditions to use kfree_skb_reason() to trace the reason later. Cc: Joao Martins Cc: Joe Jin Signed-off-by: Dongli Zhang --- drivers/net/tun.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index fed85447701a..aa27268edc5f 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1086,7 +1086,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb,= struct net_device *dev) goto drop; =20 len =3D run_ebpf_filter(tun, skb, len); - if (len =3D=3D 0 || pskb_trim(skb, len)) + if (len =3D=3D 0) + goto drop; + + if (pskb_trim(skb, len)) goto drop; =20 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) --=20 2.17.1 From nobody Sun Jun 28 09:58:37 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93BEAC43217 for ; Sat, 19 Feb 2022 19:14:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243098AbiBSTOg (ORCPT ); Sat, 19 Feb 2022 14:14:36 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:53644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238798AbiBSTOd (ORCPT ); Sat, 19 Feb 2022 14:14:33 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DBB92329; Sat, 19 Feb 2022 11:14:13 -0800 (PST) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21J9kYQk007284; Sat, 19 Feb 2022 19:13:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=hgd7ySqpiIUsg9ORtZaItuO25s2zIWChlLZE2YgNFxI=; b=ORMLGsugDvStortdjKlCyUwyiAUVPmwZI8PNUpsCPbx1RZcncd9tJhIcv2un2Ckk1RpT 5R+nUwWNXrB4/4jXOCYLzfsDVuN+/6UreJyA6OThNXlCLnXJVIOVckmq1RnF1djOruhM +t/K8XxP3JATQlMmZc4U/TOJuHC3flwrQmGklZGw86ANP0SvodpjQ+RdL7UrxBd8AxMy UPSbvYQJ9F76hR6R2E61ehHOXX87uHbzRWlYJt+nAS7gQJIgIHh7P5OO3hQv1s8arWK0 vXgQQhD0BjI4UUecS0pvyFpqeBdoeHWuJWCueIc2Lm1xgcPojK2WVeLAB+wx+FQGKqPJ nQ== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 3eaq52909y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 19 Feb 2022 19:13:13 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 21JJAgpQ019680; Sat, 19 Feb 2022 19:13:12 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam08lp2043.outbound.protection.outlook.com [104.47.73.43]) by aserp3030.oracle.com with ESMTP id 3eapkd0ud9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 19 Feb 2022 19:13:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aJ6kukyS7Q/dm4Oqls0GwJXiTFyqTrhSikJWTe0j4Wr3W7ux7j/3oRAvqoqCyhr3A6QL6nR3B8G1o3gjCLwwHUcI9Gcrj8Z13ZzAOKwZnbaJhIotX9MhS4JKtfhOkJCx29QuRhzxTTyJmJLh0fgZ0CrwglIuhcNwJBgC/SYUKKlNM28ksM3HQj5I5Y0WvxLOdn6JGUxTIynUlPbOJSHDUei6tQoVNyyJy6TFhiegDLpUuSLovY/Lz3rGSrb1XLhfwFE5jadVYtr7hLn4ZPnuhzwU5IBR0yLfsyJyrqtUHIiDIbGSFZoBILX5OiCCUpV+/CgJckvK6rSn/hSjuvW1nQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=hgd7ySqpiIUsg9ORtZaItuO25s2zIWChlLZE2YgNFxI=; b=D6/ujPI8OcPNjrP4S7a02nPZ4bWQ2qYGsw3iPpnmr5d/5Psw6pK8CIaBQu+uuXInMuvGh+BAVlffZFOXgRFOor78xk+ZI3BxCzhPpUAIxM9KLxP8nTJ19MSCzThSwdGGUxpbci1iNXaK2b+sbZ1eMQxtgVliVtun314C2Jp3GdbJzeB/QVgAXhbay75JYCS50w/A6uc8VsLuiONhg5kIqKTNr6/hEybjhb1TE9zIsQjLXjRnPzR28/U90UoWdF+NMYARwl0sYQp7uc1+L4nj2UrY7zkqyXTro0TUe4ZB3oQDxr/bsnLspNlho3wJJLsN4i1yWjaW2n9Y60uwYq5Otg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hgd7ySqpiIUsg9ORtZaItuO25s2zIWChlLZE2YgNFxI=; b=TgQg01iNwsgx2GU6ksHfv/6fCLCHekm9vG5HaBorHiZT4XqUZbiMSHVDvVXeVzSTv3y0jwfwyP6/pOhXKKyaYIW2xMLheoQEC1UUmk8IZaxYM6Yt36WjYRtrUgOAGYdRZ9eNVpb8gS5VSUJ/pJEwGZTptCBcDw1uMLp2AxFoSaw= Received: from BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) by SN6PR10MB2928.namprd10.prod.outlook.com (2603:10b6:805:d2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.22; Sat, 19 Feb 2022 19:13:10 +0000 Received: from BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47]) by BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47%4]) with mapi id 15.20.4995.024; Sat, 19 Feb 2022 19:13:10 +0000 From: Dongli Zhang To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, kuba@kernel.org, rostedt@goodmis.org, mingo@redhat.com, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, imagedong@tencent.com, joao.m.martins@oracle.com, joe.jin@oracle.com, dsahern@gmail.com, edumazet@google.com Subject: [PATCH v2 3/3] net: tun: track dropped skb via kfree_skb_reason() Date: Sat, 19 Feb 2022 11:12:46 -0800 Message-Id: <20220219191246.4749-4-dongli.zhang@oracle.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220219191246.4749-1-dongli.zhang@oracle.com> References: <20220219191246.4749-1-dongli.zhang@oracle.com> X-ClientProxiedBy: SN7P222CA0017.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::15) To BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 917587a1-db2f-47e0-b91c-08d9f3dbde10 X-MS-TrafficTypeDiagnostic: SN6PR10MB2928:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lF+Ntz3DQosA6SJWCe2jTbOuzY/5GqxC3iD0ag18whKmI+mS/EMZnBwWUYLSs/vTXwQbx+FahSnO/PyGkwn8Wsvi3PgdeGbn1LEr4HVuXR7O1D5DNkL3V4me5E55lL9SUoqm/exzYplBaAG2jFhH8gWkdFxuGZRwutX5P+ky4zS8vZnJBP7LAlKUV9IZMHsCkN32tHJyW4v6qyWouLT2BVLule0vh1SpW8Jm9Hh3JjGKYcQGWRCQ1RDAn3F7hcHTKorZ8bsqXEDx9mWig3lEITRuWYUxMC8LuexKx0TL6NuQ6Ul9eGYqB/2vmkSrcxOnLxQ0CitNDASH0ZbeE3v3iEFOipEOEcREPe9yEnIzsGtnqgkcCdxkYR63srXkB17+OJmYwys7rSdUcSg3VLUYr6EzUdqYWQXB0tKjAvMMkffgiQLYsHoerRSXw3YtEM4L4WYDbPdY0OoAhYHzvv/mVynWdv2iNj6xjmwp25GgDOKUVBKZIRvk28dN/V8N7Se1c9Vz2XsEGiHD9TZolqoorLHanRyNZBOs8TjivdJc8oO/yC1UUee31BYYE7QK0B/iq80+W+Zk3KSvxt6YUlEbufJ9HHJ78lTCr6iz+/aVccEMI+E4qnRWAQ0znBl99Yz/t+/tLFZyM2VWNM0aBzVCOs0M84mEyVeMVc316jCapXiTlzatp5J0imrNc7f1wHbRr781IujHaCjTZ3qZ6YB1kA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2663.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(7416002)(5660300002)(8936002)(86362001)(316002)(508600001)(8676002)(4326008)(66946007)(6506007)(66476007)(66556008)(52116002)(6666004)(44832011)(38350700002)(186003)(26005)(38100700002)(2616005)(1076003)(36756003)(83380400001)(6486002)(6512007)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SXtamCZ7cMXc9CCa7DmPrVBRoiEXw9dudaU/RnUz7zzhGLx0Oz9vcWT1LwxD?= =?us-ascii?Q?23sVsnmSyTX7YaG5Q6mTC1B0nn1gncKQ2VWX/pal8QCTrOy8oR0tqJDLxjtx?= =?us-ascii?Q?cxyeX4FujufUuPpaBIOoD8a+5aB9iGKatqfz1TzuAA5dtdpLtWzvjkPD5gtF?= =?us-ascii?Q?KfacCAtTq+KNFwNaX7uMUaeGtKLXN/b2pwd0ge8oQ+qLLjGwyBEXkO1oHuGa?= =?us-ascii?Q?OCdkOmEwfUenDT08cZDuCfcNnP0XnIfKLfLtJ7bAnjhNR9wVXMECm67cn2lV?= =?us-ascii?Q?FPtK3hodifjWpFu3R3Km/THv11vEmagF2BkOKqV+e4kO4FnZhgYh/M4Hunfk?= =?us-ascii?Q?lEeiUo4f2BcnEVsAq4YwbozjDyfGDLNubjONK01Gje5uOtHBXWSKUM4xt6Gm?= =?us-ascii?Q?/OnQH5etb9Cym0NXJZoMAM4De51CWyCu+WGJJh2miCl2AmbKBCgs97APhPGj?= =?us-ascii?Q?sdb9OXYmiHcxYUMhj4BqMRAXl7o7yLQ5LWXWqeHfqL7W9RqvIcP9YtDDzSzi?= =?us-ascii?Q?OehyGO9BtUWNuNn3TO+C9arr8tR4TJ2x6R4Kt7IhWaj0rOgkQP3Qth3sIcli?= =?us-ascii?Q?NhBaWL2345GdU57jiyFJxGIWNgZsjxPH9e4DsXK8hbJZEgjnGYdceVY8JSRs?= =?us-ascii?Q?7D7cMGqp3YZchSiJ4hH2maZps18ThO+xTqwjqERrS35KDbT3oN1GpkP9huc+?= =?us-ascii?Q?ak+OO+Dr3EkqH/UpNZZQo+Ck/fMsV5f5MyYHdQwwGBs1IN1rjn/9YGLe+mm/?= =?us-ascii?Q?SrBaXtox5lsD5v6daza8XCrpO3S+4RXNPUCJA+bnCl2dq2rgA3NXG9YpEb3B?= =?us-ascii?Q?w6eGX6kLV7fL4H2yoNxLJKKycuSWdGfaMksWxNzjc4d83d3P1sjzqa0gmFbq?= =?us-ascii?Q?5RwLvDCDaymv/KhTQ5Hs8jgqg/oDAd8xuaYcaB7tSd5NeM6y9ROpR6VX6nKA?= =?us-ascii?Q?1ue3W9ocgKmwKdPTUqz8ePNC10Y83cVGWPABREZlnF3O28ihqW988y3iUbsp?= =?us-ascii?Q?yEDWwYzqAfZOQJDPOw5nRLzgnUL90iHrArRFkrFMpD3wNguk2PZpR29Bgfr6?= =?us-ascii?Q?sXlLT4i4m92wLF/5c9m9++069GqzDu+3uJWHGBaIQ8MlS2sSokKVc+BAdg+Q?= =?us-ascii?Q?gEedW9v0AtRFvLNC9iPOLJDdHSAE9EcVTVmqB5KXxamzUTw/kXVpAp0/+Hlj?= =?us-ascii?Q?UR5yW+DtehRLyFx+NnitvFKRZrPgDWTO009EBriDvueG3XGEyTML4ftLhSJO?= =?us-ascii?Q?MFxRvnfnmStLEzYf5tGUuF+F+2Jok4AxuF/NGiZwsOynoMRlaEyMmxaWOipE?= =?us-ascii?Q?v0SwbJSFtp0VlEE4bOO4V9HoIYWBqvzObq02Uk7kfykNO4UR2nxpRQNksf3d?= =?us-ascii?Q?FwOA+hOsfnEQQSQq7frTxlOK+oY8O1sl0rbsRM1f+/rK7MaJA+uOFRjDRmBV?= =?us-ascii?Q?XR3qu9tIwM5RMARfdzxv4o3bCjgtX+TsGcttdqN34uZFBs+PJxfjUK35PeYq?= =?us-ascii?Q?bLbInEDfghrVPfqU3mXzmznubrgZiisMCuOY/PKaK6kM5cx/dZThQD//K7jc?= =?us-ascii?Q?CcrgtvegPzS7fo2AqvzxMKtIFisSKyyU2Yju4sT501LdZF+T9o7CGRrxCuG/?= =?us-ascii?Q?SwB7NjJHLY89E5PmiQCAAPU=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 917587a1-db2f-47e0-b91c-08d9f3dbde10 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2663.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2022 19:13:10.0379 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ki/mxw+OqNodEg+/QEv9CMH5WLVCv/+eYTS4zNmhf8NKf6GSxpQ7smJQFq1dZJYafUw3Xcqv3OVC9NCoMyVihA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB2928 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10263 signatures=677614 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202190125 X-Proofpoint-GUID: 4VFg1S2jElUokme47la3ociHAD1EsRjN X-Proofpoint-ORIG-GUID: 4VFg1S2jElUokme47la3ociHAD1EsRjN Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The TUN can be used as vhost-net backend. E.g, the tun_net_xmit() is the interface to forward the skb from TUN to vhost-net/virtio-net. However, there are many "goto drop" in the TUN driver. Therefore, the kfree_skb_reason() is involved at each "goto drop" to help userspace ftrace/ebpf to track the reason for the loss of packets. The below reasons are introduced: - SKB_DROP_REASON_SKB_PULL - SKB_DROP_REASON_SKB_TRIM - SKB_DROP_REASON_DEV_READY - SKB_DROP_REASON_DEV_FILTER - SKB_DROP_REASON_BPF_FILTER Cc: Joao Martins Cc: Joe Jin Signed-off-by: Dongli Zhang --- drivers/net/tun.c | 37 ++++++++++++++++++++++++++++--------- include/linux/skbuff.h | 7 +++++++ include/trace/events/skb.h | 5 +++++ 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index aa27268edc5f..ab47a66deb7f 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1062,13 +1062,16 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb= , struct net_device *dev) struct netdev_queue *queue; struct tun_file *tfile; int len =3D skb->len; + int drop_reason; =20 rcu_read_lock(); tfile =3D rcu_dereference(tun->tfiles[txq]); =20 /* Drop packet if interface is not attached */ - if (!tfile) + if (!tfile) { + drop_reason =3D SKB_DROP_REASON_DEV_READY; goto drop; + } =20 if (!rcu_dereference(tun->steering_prog)) tun_automq_xmit(tun, skb); @@ -1078,22 +1081,32 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb= , struct net_device *dev) /* Drop if the filter does not like it. * This is a noop if the filter is disabled. * Filter can be enabled only for the TAP devices. */ - if (!check_filter(&tun->txflt, skb)) + if (!check_filter(&tun->txflt, skb)) { + drop_reason =3D SKB_DROP_REASON_DEV_FILTER; goto drop; + } =20 if (tfile->socket.sk->sk_filter && - sk_filter(tfile->socket.sk, skb)) + sk_filter(tfile->socket.sk, skb)) { + drop_reason =3D SKB_DROP_REASON_SOCKET_FILTER; goto drop; + } =20 len =3D run_ebpf_filter(tun, skb, len); - if (len =3D=3D 0) + if (len =3D=3D 0) { + drop_reason =3D SKB_DROP_REASON_BPF_FILTER; goto drop; + } =20 - if (pskb_trim(skb, len)) + if (pskb_trim(skb, len)) { + drop_reason =3D SKB_DROP_REASON_SKB_TRIM; goto drop; + } =20 - if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) + if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) { + drop_reason =3D SKB_DROP_REASON_SKB_COPY_DATA; goto drop; + } =20 skb_tx_timestamp(skb); =20 @@ -1104,8 +1117,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb,= struct net_device *dev) =20 nf_reset_ct(skb); =20 - if (ptr_ring_produce(&tfile->tx_ring, skb)) + if (ptr_ring_produce(&tfile->tx_ring, skb)) { + drop_reason =3D SKB_DROP_REASON_FULL_RING; goto drop; + } =20 /* NETIF_F_LLTX requires to do our own update of trans_start */ queue =3D netdev_get_tx_queue(dev, txq); @@ -1122,7 +1137,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, = struct net_device *dev) drop: atomic_long_inc(&dev->tx_dropped); skb_tx_error(skb); - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); rcu_read_unlock(); return NET_XMIT_DROP; } @@ -1720,6 +1735,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, s= truct tun_file *tfile, u32 rxhash =3D 0; int skb_xdp =3D 1; bool frags =3D tun_napi_frags_enabled(tfile); + int drop_reason; =20 if (!(tun->flags & IFF_NO_PI)) { if (len < sizeof(pi)) @@ -1822,10 +1838,11 @@ static ssize_t tun_get_user(struct tun_struct *tun,= struct tun_file *tfile, err =3D skb_copy_datagram_from_iter(skb, 0, from, len); =20 if (err) { + drop_reason =3D SKB_DROP_REASON_SKB_COPY_DATA; err =3D -EFAULT; drop: atomic_long_inc(&tun->dev->rx_dropped); - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); if (frags) { tfile->napi.skb =3D NULL; mutex_unlock(&tfile->napi_mutex); @@ -1872,6 +1889,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, s= truct tun_file *tfile, case IFF_TAP: if (frags && !pskb_may_pull(skb, ETH_HLEN)) { err =3D -ENOMEM; + drop_reason =3D SKB_DROP_REASON_SKB_PULL; goto drop; } skb->protocol =3D eth_type_trans(skb, tun->dev); @@ -1925,6 +1943,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, s= truct tun_file *tfile, if (unlikely(!(tun->dev->flags & IFF_UP))) { err =3D -EIO; rcu_read_unlock(); + drop_reason =3D SKB_DROP_REASON_DEV_READY; goto drop; } =20 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 218f7ba753e7..9370778b428d 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -351,10 +351,17 @@ enum skb_drop_reason { * sk_buff */ SKB_DROP_REASON_SKB_GSO_SEG, /* gso segmentation error */ + SKB_DROP_REASON_SKB_PULL, /* failed to pull sk_buff data */ + SKB_DROP_REASON_SKB_TRIM, /* failed to trim sk_buff data */ SKB_DROP_REASON_DEV_HDR, /* there is something wrong with * device driver specific header */ + SKB_DROP_REASON_DEV_READY, /* device is not ready */ + SKB_DROP_REASON_DEV_FILTER, /* dropped by device driver + * specific filter + */ SKB_DROP_REASON_FULL_RING, /* ring buffer is full */ + SKB_DROP_REASON_BPF_FILTER, /* dropped by ebpf filter */ SKB_DROP_REASON_MAX, }; =20 diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h index 842020d532f2..62704851062c 100644 --- a/include/trace/events/skb.h +++ b/include/trace/events/skb.h @@ -30,8 +30,13 @@ EM(SKB_DROP_REASON_SKB_CSUM, SKB_CSUM) \ EM(SKB_DROP_REASON_SKB_COPY_DATA, SKB_COPY_DATA) \ EM(SKB_DROP_REASON_SKB_GSO_SEG, SKB_GSO_SEG) \ + EM(SKB_DROP_REASON_SKB_PULL, SKB_PULL) \ + EM(SKB_DROP_REASON_SKB_TRIM, SKB_TRIM) \ EM(SKB_DROP_REASON_DEV_HDR, DEV_HDR) \ + EM(SKB_DROP_REASON_DEV_READY, DEV_READY) \ + EM(SKB_DROP_REASON_DEV_FILTER, DEV_FILTER) \ EM(SKB_DROP_REASON_FULL_RING, FULL_RING) \ + EM(SKB_DROP_REASON_BPF_FILTER, BPF_FILTER) \ EMe(SKB_DROP_REASON_MAX, MAX) =20 #undef EM --=20 2.17.1