From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4AD03C4360F for ; Thu, 21 Feb 2019 12:40:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0EBC42086A for ; Thu, 21 Feb 2019 12:40:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="xpmuFUiK" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727859AbfBUMkK (ORCPT ); Thu, 21 Feb 2019 07:40:10 -0500 Received: from mail-eopbgr20078.outbound.protection.outlook.com ([40.107.2.78]:6395 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727732AbfBUMkI (ORCPT ); Thu, 21 Feb 2019 07:40:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ebk6AUSEDYc+2bZ5YZx7Hk56ek75/oIw0eo/zoXQDZk=; b=xpmuFUiKDjV8L5saNhVtYfTovYAgtUVJxoCNnkXeDSicU06IZiQBkkgTrRnfmBwqThNEPZ2WbfSgGQ4lg8LnZcph+tZibgkamPsVXAiIt3dY7F+ZHD3NhMiJBwXxjCB5HBcKzhXwnFLz7VK5m5cOegzp6YLGbe3vjgxe+X/FIhM= Received: from AM6PR05MB5879.eurprd05.prod.outlook.com (20.179.0.76) by AM6PR05MB5816.eurprd05.prod.outlook.com (20.178.94.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.16; Thu, 21 Feb 2019 12:40:01 +0000 Received: from AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::98c7:b5be:ac6b:144]) by AM6PR05MB5879.eurprd05.prod.outlook.com ([fe80::98c7:b5be:ac6b:144%5]) with mapi id 15.20.1643.014; Thu, 21 Feb 2019 12:40:01 +0000 From: Maxim Mikityanskiy To: "David S. Miller" , Saeed Mahameed , Willem de Bruijn , Jason Wang , Eric Dumazet CC: "netdev@vger.kernel.org" , Eran Ben Elisha , Tariq Toukan , Maxim Mikityanskiy Subject: [PATCH net-next v2 4/7] net/packet: Ask driver for protocol if not provided by user Thread-Topic: [PATCH net-next v2 4/7] net/packet: Ask driver for protocol if not provided by user Thread-Index: AQHUyeKPVfSc+NQk9EuUqT6q/J8KUg== Date: Thu, 21 Feb 2019 12:40:01 +0000 Message-ID: <20190221123908.7196-5-maximmi@mellanox.com> References: <20190221123908.7196-1-maximmi@mellanox.com> In-Reply-To: <20190221123908.7196-1-maximmi@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LNXP265CA0070.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5d::34) To AM6PR05MB5879.eurprd05.prod.outlook.com (2603:10a6:20b:a2::12) authentication-results: spf=none (sender IP is ) smtp.mailfrom=maximmi@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.19.1 x-originating-ip: [141.226.120.58] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8c4293d8-86b9-4dc9-19af-08d697f9b1ee x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB5816; x-ms-traffictypediagnostic: AM6PR05MB5816: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB5816;23:BxdCpD99nxd41LDxoilblNFCSGSM+pNiEfKHgdj?= =?iso-8859-1?Q?7n5hpwnTMw0W5XQDPC0wd1cF6sSMOJbnI4uuafhbBQqq2v8LcDicaeBRNV?= =?iso-8859-1?Q?QMBoKPGsht07dUwW3fvVi2FL+cd6cuycXhgS4i4dUY71XTz8XMnv2+7hpR?= =?iso-8859-1?Q?UZJZU/0Ts8T39Uye8aCmExqqkI+RNbhvwI/mwWYAcTeDgplP0zHj+o74SG?= =?iso-8859-1?Q?zkn6zbqaZ0kRvWm9gc6vHbOuuNMME+oQ2sLotxGCmrOiGN2D1od9smNArp?= =?iso-8859-1?Q?9epSby7fz9SQ/ziFoazDdkRYeY612zuDkcqq3XfHeTMjqCgiV+Lnxs88EX?= =?iso-8859-1?Q?ck5kG4T+zw7pIE8bFbrhBjFNc5cCBNq0vyGzzFwFaXiQyQRiTEbkPoi7UE?= =?iso-8859-1?Q?63DhO6Kl20Fm8QlzZQaBj2B9o92looyyi8KuLTlxkiarA0gWEaOH73J2r5?= =?iso-8859-1?Q?xEU658syr2JlZRf3Vop/wHSn2jzrnbh0WMkxnjYBqysKxRbW5cQkhjo9NG?= =?iso-8859-1?Q?0yxE8Fo6/Io4/ksZ4TtqNeiBT+8y07/nVWM8gAbZPWESJWo0oerWpxc42z?= =?iso-8859-1?Q?RS8tPzCHKxSqK08upx9fnN/aAqUA6LJx0WhDToHOxAUqcda9ZlEEHmU/Nv?= =?iso-8859-1?Q?SzsvsSkl/pkQPblA6ybw1nxXciqtyifdDH4PHVyc20Hqk7Typ4flMyZy6L?= =?iso-8859-1?Q?AQD7wh8b7FZV/0VFG3F0gutzw7/Kng1o+9y+ajhU5DEaabtYWk75lyPoET?= =?iso-8859-1?Q?Rs8lLwEOATlRXypqRHu1oOvuTw6azYXUCgd6uSsDx9FL3eBG6mOUK01kGl?= =?iso-8859-1?Q?FebXw0M1/e4jf2elEcXUn9jKm1IK13wV2JakjLoHnE+asERXfXk4EFwWCx?= =?iso-8859-1?Q?OCDdQiXpVLefvchM/r3YB7k9My9JGfWFSXqiQdu4cWBmxGFjcrKVXIUL45?= =?iso-8859-1?Q?b3bx+UlThTnYfgSVsa/F4hpTBBtgS31HkjV1dfMCRvFzF96ka6TOSdKG3w?= =?iso-8859-1?Q?dwAecJmVXXX+ZeVQYmyD4l0vG+uIkmMQUh+JbeOwboPAFLsYV3nzAC3Izq?= =?iso-8859-1?Q?ydt7Gv9Ohtj5oSKg6CiNPhzG650A1EQ4ScgQSVYIcoLths9AULlQmjHL3c?= =?iso-8859-1?Q?13zvxWC1/7NNUohaKwqRmu5IdjxjLQAzuYN4JkkpMD1WFb4OAoPOoR1QFE?= =?iso-8859-1?Q?l5QaLHB+Gv/rVyhy8OYTEJ62VATIw8D2KjQae+X/CS+rFrH6OQtYr6Qfg2?= =?iso-8859-1?Q?EeQ0nEQCvxqJO8gYcKxHJEJdge1jn+J+M3Iatz3rn1AwEIynAUDQmiOSeJ?= =?iso-8859-1?Q?jDvYFzU9MR69h6eONWKnNAf7b5TcG8pKYiCzsa6dWty3yt1FPW7VwWAYGZ?= =?iso-8859-1?Q?2El1ppfWVDScP1LGpFoPABa95Bwi4?= x-microsoft-antispam-prvs: x-forefront-prvs: 09555FB1AD x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(979002)(136003)(39860400002)(366004)(376002)(396003)(346002)(189003)(199004)(6512007)(316002)(1076003)(54906003)(305945005)(25786009)(478600001)(7736002)(66066001)(81166006)(99286004)(53936002)(110136005)(68736007)(8676002)(8936002)(76176011)(71200400001)(71190400001)(6436002)(52116002)(5660300002)(81156014)(50226002)(6486002)(4326008)(256004)(107886003)(86362001)(102836004)(26005)(476003)(186003)(11346002)(14444005)(2906002)(3846002)(6116002)(105586002)(386003)(36756003)(6506007)(446003)(97736004)(14454004)(486006)(2616005)(106356001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB5816;H:AM6PR05MB5879.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 6aJBqYZq+11NFLMrDC0a3T3JKJWEznnB7QiHIbHa0OP9ndaOj/Rp0X5vye9V+5ErCap0e0J6EgIYeq7odZNpdzIUV7I/8ZGqOzs7TmTMaEtKSOx5PuTlJNiwqvrNTsNjl+FgmovxohcDwPL78bht1u3LwdDcp5wWTv+EEPZQGwAis9XgQcV5aULNuC0iC6pab7P0hn/z6wcszrjWVRUbL4FalyfwV8kbZ/5ulbuqKYtCp9MZ9DAPKPYh8Qs5kjoeFcNTisOPv7rIjuJrlfQHoZlmbuNaVXcxIhYBH1HlhdG+raBgQOpdbkw+elSUg3L9UMTvQ8ng86c+6lM6Rk/mojS6w1IgC1U6RoVG+GFUXmRhmhyJl3hPnXvxeeI0mkXaJkYVAp+2rKJSaTyfowsvFraA9EgmTZivLOwAhFJRnNE= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c4293d8-86b9-4dc9-19af-08d697f9b1ee X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Feb 2019 12:39:59.8639 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB5816 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If a socket was created with socket(AF_PACKET, SOCK_RAW, 0), the protocol number is unavailable. Try to ask the driver to extract it from the L2 header in order for skb_try_probe_transport_header to succeed. Signed-off-by: Maxim Mikityanskiy --- net/packet/af_packet.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 6afd6369d19e..cac4c1a3f807 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -1850,6 +1850,15 @@ static int packet_rcv_spkt(struct sk_buff *skb, stru= ct net_device *dev, return 0; } =20 +static void packet_parse_headers(struct sk_buff *skb, struct socket *sock) +{ + if (!skb->protocol && sock->type =3D=3D SOCK_RAW) { + skb_reset_mac_header(skb); + skb->protocol =3D dev_parse_header_protocol(skb); + } + + skb_probe_transport_header(skb); +} =20 /* * Output a raw packet to a device layer. This bypasses all the other @@ -1970,7 +1979,7 @@ static int packet_sendmsg_spkt(struct socket *sock, s= truct msghdr *msg, if (unlikely(extra_len =3D=3D 4)) skb->no_fcs =3D 1; =20 - skb_probe_transport_header(skb); + packet_parse_headers(skb, sock); =20 dev_queue_xmit(skb); rcu_read_unlock(); @@ -2519,7 +2528,7 @@ static int tpacket_fill_skb(struct packet_sock *po, s= truct sk_buff *skb, len =3D ((to_write > len_max) ? len_max : to_write); } =20 - skb_probe_transport_header(skb); + packet_parse_headers(skb, sock); =20 return tp_len; } @@ -2925,7 +2934,7 @@ static int packet_snd(struct socket *sock, struct msg= hdr *msg, size_t len) virtio_net_hdr_set_proto(skb, &vnet_hdr); } =20 - skb_probe_transport_header(skb); + packet_parse_headers(skb, sock); =20 if (unlikely(extra_len =3D=3D 4)) skb->no_fcs =3D 1; --=20 2.19.1