From patchwork Wed Jul 11 16:00:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Willem de Bruijn X-Patchwork-Id: 942589 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="kH5Hjm6g"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41QkLt5Djgz9s0n for ; Thu, 12 Jul 2018 02:00:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732685AbeGKQFw (ORCPT ); Wed, 11 Jul 2018 12:05:52 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:43929 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726429AbeGKQFv (ORCPT ); Wed, 11 Jul 2018 12:05:51 -0400 Received: by mail-qt0-f194.google.com with SMTP id f18-v6so21497755qtp.10 for ; Wed, 11 Jul 2018 09:00:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=g7w2ahAr2CNSv/bWMAMQPuY1L3BQL93bl6FZtM2FKDQ=; b=kH5Hjm6gjPhhETpsk2WLL5wg7oJzr7LeMHBhbJtikUlUAAg4JSWFDEwNQ8w4w0OwPc FIDFzdY9ymo1fBXVf+ib7WO1gPuB/uSe9H/EdlZAdIhdiIDtc7/A9FBuezGnW3ycx5QB NGPXvn7as+9U9Q3hf9mV21JbNUWfzUG3n4KEP8fkoLnYeuS9JkKpxo83JGV9I9o0bYLi ljw++91sESbOsU2tvAq63myCVZ4Kh312W2DIBeeXk+i3imdt8W/iynDcauVuKWw3hkBE GDJHHbhpmfVSwW+wiH2E4NWN+dpVztA+gMXNuAZKC69o9S8C6+a9DqbZ7ERD4e6YloWI /WsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=g7w2ahAr2CNSv/bWMAMQPuY1L3BQL93bl6FZtM2FKDQ=; b=h2raPwlo0RVgw4S9jkFEXxRpWi7ctODyCw+O09jSNxMsz6jwf7yPq79+WEanOm3gsK X1+kdlbUPsa9L6ssJvXVhGw/+p16zDCKA5p5CZDyJXnyKh73z1fYIinpYowRVPUKEfEi v48SMupaRMpK/5fvoKPHKpIA8J8lDVsPXJ8iFU2CGqKTGiH5AYdWbgvFukiIZ2LSA2Os SIyJLyV8DNckxVIpXzGZtseWZwL4NQFdaIfYDi133J5va/bHmJfVS+gon9iKXrLJs4zn J6ZFCAvK7WcPIG1v1w5X6xigzoazN3WNnVK4e0Ryi8WZO4gxIn6bLGbOgqy7AtDUSxqb GX2A== X-Gm-Message-State: APt69E1+dJxpzMAUduEPPaArZUWBU6bjg1CZFeqpXMGxYUIesJGdgtTC eRBBEUfRLCn6+jSEhP2enuNWYqHd X-Google-Smtp-Source: AAOMgpdjchLouyApRLzBHnrgLj7gpTyWN1C9oZMP8EMyiT0wm2CWVgKDRuR64X67v+IQ4jqS6QnkIg== X-Received: by 2002:aed:3c8c:: with SMTP id d12-v6mr28629978qtf.203.1531324850730; Wed, 11 Jul 2018 09:00:50 -0700 (PDT) Received: from willemb1.nyc.corp.google.com ([2620:0:1003:315:3fa1:a34c:1128:1d39]) by smtp.gmail.com with ESMTPSA id s64-v6sm8615694qkc.70.2018.07.11.09.00.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jul 2018 09:00:49 -0700 (PDT) From: Willem de Bruijn To: netdev@vger.kernel.org Cc: davem@davemloft.net, Willem de Bruijn Subject: [PATCH net] packet: reset network header if packet shorter than ll reserved space Date: Wed, 11 Jul 2018 12:00:45 -0400 Message-Id: <20180711160046.198091-2-willemdebruijn.kernel@gmail.com> X-Mailer: git-send-email 2.18.0.203.gfac676dfb9-goog In-Reply-To: <20180711160046.198091-1-willemdebruijn.kernel@gmail.com> References: <20180711160046.198091-1-willemdebruijn.kernel@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Willem de Bruijn If variable length link layer headers result in a packet shorter than dev->hard_header_len, reset the network header offset. Else skb->mac_len may exceed skb->len after skb_mac_reset_len. packet_sendmsg_spkt already has similar logic. Fixes: b84bbaf7a6c8 ("packet: in packet_snd start writing at link layer allocation") Signed-off-by: Willem de Bruijn --- net/packet/af_packet.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 57634bc3da74..9b27d0cd766d 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -2878,6 +2878,8 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len) goto out_free; } else if (reserve) { skb_reserve(skb, -reserve); + if (len < reserve) + skb_reset_network_header(skb); } /* Returns -EFAULT on error */