Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp828278imu; Tue, 11 Dec 2018 08:11:24 -0800 (PST) X-Google-Smtp-Source: AFSGD/WLXZSLAIVmfy7hGASz4XVm9BcADTkYxiKA0/U1am6a/EZViFnlhN8O1SWqxmKCxPQC8FrQ X-Received: by 2002:a63:9712:: with SMTP id n18mr14868134pge.295.1544544684092; Tue, 11 Dec 2018 08:11:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544544684; cv=none; d=google.com; s=arc-20160816; b=ggFc9F+0h89aPu20T5dZzS+qiqD/TAY1o06jH/6yKxbquGLIVXn/Xv53wo+jWaBb2I ZA7WxL6iKb3RgiGqY8CsZcaRMf3rhmEDXK3m1gqQBv9ZIfaSKaY8+YDfw+Xuq1bdq/F/ bXOeMYWhePIaUl7RyfQ2F4eghqZr2x5+zGq5HK99xYGGRM5+GZFgz7EmX0RZWbmfBuX8 kxQIVH5keI0UxlSkGmNOPz/IDg/THoJRit5qbjFpovAze9OqTZ9gDcmwZA0nc7IYrHjU K3NLXBLEkAkWIlc2E3yKDFBOAEf5FWV5ooALfgUxA3ydhMko4ljtjB0LcJrAM+49t+u1 NjYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=dDTEXq0wOEKPzp7c00jFx76CWXWVigc+Y0WMHSleDX4=; b=qeSbEnpn/lIuQzB8emPxHQanlHPxWLcUE2/3xkig0F8JvI382n3p/tCHloYinZnzPy gs//7VKKjWQJkeI9qlAh0xLAI8pQ1bxKmeWIpAkq5LY0bE7Osp1jGqIkFNSUkOkPwRvq vpaE6HtaMkC+ro0F5QfpmSASZHij5L5sL2HnS96PECJQHYc7ng+OcQzmt6WD/SrhpMca DWFG/UdF6cYTg2xvncYl9t+9UYTxKBekb3T3apUX+8/sX2Y2Di5igERRU3JalJSpQ8CI 1x0V+K9A2LmV9wXnW12yFmD4jS/8afDZ4wuOZDE4ZuYmmaDiYZNX4mR5nORuQHGFxxQc Nf4w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=IfQp33GW; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q66si12922300pfb.231.2018.12.11.08.11.09; Tue, 11 Dec 2018 08:11:24 -0800 (PST) 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=@kernel.org header.s=default header.b=IfQp33GW; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729740AbeLKPwe (ORCPT + 99 others); Tue, 11 Dec 2018 10:52:34 -0500 Received: from mail.kernel.org ([198.145.29.99]:41224 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729271AbeLKPwc (ORCPT ); Tue, 11 Dec 2018 10:52:32 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 940D820855; Tue, 11 Dec 2018 15:52:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544543552; bh=uQsCC59JKgkf4GEpfsYbOLXlPETtP4iiaUKEievQhPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IfQp33GW7p97anqMVmrnnoeguyPUm/adaaClG45wTLE1lwhGg6wKsobC+MCtNOcSi J2eLdrrmPvkoApaBtEH7TDf4tUESxgV2p3Vv8SdKKCF+piBUIhgJ+148qoRfCqfkUh bxPMZssAiHsn9fT50jjuGhongAoZ4yHIkXL9EU1A= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Linus=20L=C3=BCssing?= , Sven Eckelmann , Simon Wunderlich , Sasha Levin Subject: [PATCH 4.14 08/67] batman-adv: Use explicit tvlv padding for ELP packets Date: Tue, 11 Dec 2018 16:41:08 +0100 Message-Id: <20181211151630.794271195@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181211151630.378216233@linuxfoundation.org> References: <20181211151630.378216233@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit f4156f9656feac21f4de712fac94fae964c5d402 ] The announcement messages of batman-adv COMPAT_VERSION 15 have the possibility to announce additional information via a dynamic TVLV part. This part is optional for the ELP packets and currently not parsed by the Linux implementation. Still out-of-tree versions are using it to transport things like neighbor hashes to optimize the rebroadcast behavior. Since the ELP broadcast packets are smaller than the minimal ethernet packet, it often has to be padded. This is often done (as specified in RFC894) with octets of zero and thus work perfectly fine with the TVLV part (making it a zero length and thus empty). But not all ethernet compatible hardware seems to follow this advice. To avoid ambiguous situations when parsing the TVLV header, just force the 4 bytes (TVLV length + padding) after the required ELP header to zero. Fixes: d6f94d91f766 ("batman-adv: ELP - adding basic infrastructure") Reported-by: Linus Lüssing Signed-off-by: Sven Eckelmann Signed-off-by: Simon Wunderlich Signed-off-by: Sasha Levin --- net/batman-adv/bat_v_elp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c index e92dfedccc16..fbc132f4670e 100644 --- a/net/batman-adv/bat_v_elp.c +++ b/net/batman-adv/bat_v_elp.c @@ -338,19 +338,21 @@ out: */ int batadv_v_elp_iface_enable(struct batadv_hard_iface *hard_iface) { + static const size_t tvlv_padding = sizeof(__be32); struct batadv_elp_packet *elp_packet; unsigned char *elp_buff; u32 random_seqno; size_t size; int res = -ENOMEM; - size = ETH_HLEN + NET_IP_ALIGN + BATADV_ELP_HLEN; + size = ETH_HLEN + NET_IP_ALIGN + BATADV_ELP_HLEN + tvlv_padding; hard_iface->bat_v.elp_skb = dev_alloc_skb(size); if (!hard_iface->bat_v.elp_skb) goto out; skb_reserve(hard_iface->bat_v.elp_skb, ETH_HLEN + NET_IP_ALIGN); - elp_buff = skb_put_zero(hard_iface->bat_v.elp_skb, BATADV_ELP_HLEN); + elp_buff = skb_put_zero(hard_iface->bat_v.elp_skb, + BATADV_ELP_HLEN + tvlv_padding); elp_packet = (struct batadv_elp_packet *)elp_buff; elp_packet->packet_type = BATADV_ELP; -- 2.19.1