Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2343751imm; Thu, 11 Oct 2018 08:49:45 -0700 (PDT) X-Google-Smtp-Source: ACcGV61zUnaz2G5oMIkXl//Jq4IXxjR7MxIjLuFExfn5qEZJZ7KnSdaJ9JS2WtXu3HdgAfB8s/EI X-Received: by 2002:a63:6a42:: with SMTP id f63-v6mr1974647pgc.48.1539272985118; Thu, 11 Oct 2018 08:49:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539272985; cv=none; d=google.com; s=arc-20160816; b=qTnCSBv2fmCqem8lyOedJCQ8HPT8koz1Ckindm5J4a4mLWiwH8vW+KK490hfypzuhe dYLV+uRMlyIC9nkdun4O18Dr6bzL64W45g6XAD9DpubXmbv4XJo3vi+TWXuvmDsqvY9a QyWE4nl9vy9g+N1dWbFWqZVBimp9C7XBAarx/mHvZ+oVcztxhUDrq2VEj8uTJQXoWNFR frWzC/D9vzc4Nq7bM3auiOTtitSWwgjHLOFVk6jkt8cwyl/2rQ/XFgWeZjml9mJYAeyh 32ujkyWMN5sYhgXuA3ZtW1hlX7L1iUBU61VjnF1kjE1OSi6Wl0O0Mv2q19+l838Sx9nQ r46A== 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=4hBLJulW1kvuu1z1U1fgHdhSVwOMtqcIuM22RxbTXZI=; b=KkWFckPn+TjOVRqgNsMhHnjFZb0KqFRNxA30wdqbFVCNABsspf7wys8xvPQxc6P4XR FEL+WDenLxW29VwFhwv3EsxOJGbHqyqLSriYJMag1VfNinzaYh7b+wkF8ZVxZf2idJND BzIgwTWZvNO4lT+4TALUcGmdmrZ6UgEVs8f2qwkriMjHV4w4pX/7nYpswz1RzwDxhf7p nk1HIP4FQssFKtzZ8UbXE7Ubk527BxuzSYx7U91oM+y5ClbtAQyfPNrmLOfIp7yV7BGt h5uKOAd0KQuHgcoiu2isOw+n4g3sjL12V6I23jtEcbUfr+OmVxCIASg2fIKMHTlsRmBc va5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2qbkopTD; 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 q19-v6si3495631pll.286.2018.10.11.08.49.30; Thu, 11 Oct 2018 08:49:45 -0700 (PDT) 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=2qbkopTD; 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 S1731739AbeJKXOv (ORCPT + 99 others); Thu, 11 Oct 2018 19:14:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:48056 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731144AbeJKXOu (ORCPT ); Thu, 11 Oct 2018 19:14:50 -0400 Received: from localhost (ip-213-127-77-176.ip.prioritytelecom.net [213.127.77.176]) (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 4D35C2085B; Thu, 11 Oct 2018 15:47:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539272824; bh=BSqnccpsFn+B7Jh7//U55stznKg7IkUV8y7X5SM5Q2E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2qbkopTD87sivo5yo7urtapUE9aE38Eiu5r3ol1nb/E9Q14nMw9ahVBKdtX3V+jrS 9E12JIDP80LkU8sUGCSLYy3nN9TjAk16b53c20qT/xtyoTV+IDv7hLMmQnHQX9Uehz HsHbfomtt8YEHmhycfgs5auaTmCplIrBWk+NKbic= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Zhi Chen , Kalle Valo , Brian Norris Subject: [PATCH 4.14 45/45] ath10k: fix scan crash due to incorrect length calculation Date: Thu, 11 Oct 2018 17:40:12 +0200 Message-Id: <20181011152510.904872314@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181011152508.885515042@linuxfoundation.org> References: <20181011152508.885515042@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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. ------------------ From: Zhi Chen commit c8291988806407e02a01b4b15b4504eafbcc04e0 upstream. Length of WMI scan message was not calculated correctly. The allocated buffer was smaller than what we expected. So WMI message corrupted skb_info, which is at the end of skb->data. This fix takes TLV header into account even if the element is zero-length. Crash log: [49.629986] Unhandled kernel unaligned access[#1]: [49.634932] CPU: 0 PID: 1176 Comm: logd Not tainted 4.4.60 #180 [49.641040] task: 83051460 ti: 8329c000 task.ti: 8329c000 [49.646608] $ 0 : 00000000 00000001 80984a80 00000000 [49.652038] $ 4 : 45259e89 8046d484 8046df30 8024ba70 [49.657468] $ 8 : 00000000 804cc4c0 00000001 20306320 [49.662898] $12 : 33322037 000110f2 00000000 31203930 [49.668327] $16 : 82792b40 80984a80 00000001 804207fc [49.673757] $20 : 00000000 0000012c 00000040 80470000 [49.679186] $24 : 00000000 8024af7c [49.684617] $28 : 8329c000 8329db88 00000001 802c58d0 [49.690046] Hi : 00000000 [49.693022] Lo : 453c0000 [49.696013] epc : 800efae4 put_page+0x0/0x58 [49.700615] ra : 802c58d0 skb_release_data+0x148/0x1d4 [49.706184] Status: 1000fc03 KERNEL EXL IE [49.710531] Cause : 00800010 (ExcCode 04) [49.714669] BadVA : 45259e89 [49.717644] PrId : 00019374 (MIPS 24Kc) Signed-off-by: Zhi Chen Signed-off-by: Kalle Valo Cc: Brian Norris Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/ath/ath10k/wmi-tlv.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c @@ -1486,10 +1486,10 @@ ath10k_wmi_tlv_op_gen_start_scan(struct bssid_len = arg->n_bssids * sizeof(struct wmi_mac_addr); ie_len = roundup(arg->ie_len, 4); len = (sizeof(*tlv) + sizeof(*cmd)) + - (arg->n_channels ? sizeof(*tlv) + chan_len : 0) + - (arg->n_ssids ? sizeof(*tlv) + ssid_len : 0) + - (arg->n_bssids ? sizeof(*tlv) + bssid_len : 0) + - (arg->ie_len ? sizeof(*tlv) + ie_len : 0); + sizeof(*tlv) + chan_len + + sizeof(*tlv) + ssid_len + + sizeof(*tlv) + bssid_len + + sizeof(*tlv) + ie_len; skb = ath10k_wmi_alloc_skb(ar, len); if (!skb)