Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp245338imj; Thu, 7 Feb 2019 03:44:08 -0800 (PST) X-Google-Smtp-Source: AHgI3Ia4DQJaXgGHcEFXiigMrPNUxFh7QZxzY1vWZVcJaVkMLf0jTZrIlnI87ojuNY1aq1bnKzcx X-Received: by 2002:a17:902:3181:: with SMTP id x1mr15863942plb.58.1549539848609; Thu, 07 Feb 2019 03:44:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549539848; cv=none; d=google.com; s=arc-20160816; b=eB218LQOZ3fuMjBDU8v7qWXaAagN0V46O8h0eziSYo2nofbcXUsAwM/EavoMGozkSI QOuJB2HizSOpsbqBgUDHCMbdmEtpsWTiKL8f6DIUURVDc6u85bJSMqAjW0FuBW/xPStI bmhGJZsscF5A5AZA36VKvpRCQMS6vG3YaYpVPioiea0yinSL+lyTmhUo/tCRKmx0jgsm +DJiEi3rLeE7KcSotBaSROXU/51cLba/6Mbv4V6ar+8LFChMh9L/McfyA80i49+XZClv YaX6OLRwtx6o3Jb9Y65izjjeahfhG2nmfF/HkSAECOeYQz1hS1ivrD85Gkpo4Jh0j6T/ 7Gcw== 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=xjLT4C1GG1WLdDvBZm1YKAdQLf8+XTIcSEu51tmTl1w=; b=WORQxr5qte8TICaS9RhqeC4r63CiO+VRD/Xrk+nkplXSYvuzUq9lZhDTu7BHgyEaQi 8WUPMZ4ZVPEfg6fQctysrG2RES0stRrnI/JRXRQsMUkTTJiSfalmUy82czXyz+XOIVUO UQgciXhJ80rh6+6k6IHIPdHJnISAtHWLF8holaKfLJb5s/BRkJQ0cwhOyFjQHQUW6gYd ZLdyRP5j0Fv24hTkdGfLDz9cQqoRLmdAxfusalWlZYofZw/VyP90MY/MDJ19NJgCRuAw M8Vki2tOK1GXwgBkJIOzIkFySp0lzyjdldkEa6QAb1uFez92Rz0RnEmtEHAeawDQ298I r7Ww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Lztnsru2; 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 o13si8082340pgp.540.2019.02.07.03.43.52; Thu, 07 Feb 2019 03:44:08 -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=Lztnsru2; 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 S1727365AbfBGLnP (ORCPT + 99 others); Thu, 7 Feb 2019 06:43:15 -0500 Received: from mail.kernel.org ([198.145.29.99]:33388 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727325AbfBGLnN (ORCPT ); Thu, 7 Feb 2019 06:43:13 -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 A3B08218FE; Thu, 7 Feb 2019 11:43:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549539793; bh=RMvcEMq1vmc8Sj9yR7Dd8qNRZp5x7nYml1Rf8VdZA3A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lztnsru2MsihyFV9Pn+RLiWHVzBhTqhlS3ICZIH87bt7lKh8R/0b9Eh29OrhAO3WK uA6rFqaNcxqg7RKbkC4mRGgiWyueAk3kA8OHaIk9DZaI6QYdaNIXSRqCTSFVU0gVCl mFLiKHQNR8PB7wzhllPtBalprNqULknoLJ5q1gz4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alexander Aring , Stefan Schmidt , Ben Hutchings Subject: [PATCH 4.4 10/34] net: ieee802154: 6lowpan: fix frag reassembly Date: Thu, 7 Feb 2019 12:41:52 +0100 Message-Id: <20190207113025.986174348@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190207113025.552605181@linuxfoundation.org> References: <20190207113025.552605181@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.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Alexander Aring commit f18fa5de5ba7f1d6650951502bb96a6e4715a948 upstream. This patch initialize stack variables which are used in frag_lowpan_compare_key to zero. In my case there are padding bytes in the structures ieee802154_addr as well in frag_lowpan_compare_key. Otherwise the key variable contains random bytes. The result is that a compare of two keys by memcmp works incorrect. Fixes: 648700f76b03 ("inet: frags: use rhashtables for reassembly units") Signed-off-by: Alexander Aring Reported-by: Stefan Schmidt Signed-off-by: Stefan Schmidt Signed-off-by: Ben Hutchings Signed-off-by: Greg Kroah-Hartman --- net/ieee802154/6lowpan/6lowpan_i.h | 4 ++-- net/ieee802154/6lowpan/reassembly.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) --- a/net/ieee802154/6lowpan/6lowpan_i.h +++ b/net/ieee802154/6lowpan/6lowpan_i.h @@ -19,8 +19,8 @@ typedef unsigned __bitwise__ lowpan_rx_r struct frag_lowpan_compare_key { u16 tag; u16 d_size; - const struct ieee802154_addr src; - const struct ieee802154_addr dst; + struct ieee802154_addr src; + struct ieee802154_addr dst; }; /* Equivalent of ipv4 struct ipq --- a/net/ieee802154/6lowpan/reassembly.c +++ b/net/ieee802154/6lowpan/reassembly.c @@ -74,14 +74,14 @@ fq_find(struct net *net, const struct lo { struct netns_ieee802154_lowpan *ieee802154_lowpan = net_ieee802154_lowpan(net); - struct frag_lowpan_compare_key key = { - .tag = cb->d_tag, - .d_size = cb->d_size, - .src = *src, - .dst = *dst, - }; + struct frag_lowpan_compare_key key = {}; struct inet_frag_queue *q; + key.tag = cb->d_tag; + key.d_size = cb->d_size; + key.src = *src; + key.dst = *dst; + q = inet_frag_find(&ieee802154_lowpan->frags, &key); if (IS_ERR_OR_NULL(q)) { inet_frag_maybe_warn_overflow(q, pr_fmt()); @@ -372,7 +372,7 @@ int lowpan_frag_rcv(struct sk_buff *skb, struct lowpan_frag_queue *fq; struct net *net = dev_net(skb->dev); struct lowpan_802154_cb *cb = lowpan_802154_cb(skb); - struct ieee802154_hdr hdr; + struct ieee802154_hdr hdr = {}; int err; if (ieee802154_hdr_peek_addrs(skb, &hdr) < 0)