Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13477471ybl; Sun, 29 Dec 2019 12:51:23 -0800 (PST) X-Google-Smtp-Source: APXvYqx3GaaIZgQzXGW02Td2opSQvTuZO6+rXgJw6xWiWA6Jt5cpGKePFqqOGs6ZXl60HlTIe5Up X-Received: by 2002:a05:6830:1116:: with SMTP id w22mr72080746otq.63.1577652683119; Sun, 29 Dec 2019 12:51:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577652683; cv=none; d=google.com; s=arc-20160816; b=HhlflDyPKR7fz66gEJYC4RDRksNXw7KisPZZprUMHMs02FCnPfZqccbPVO1lCued+o CGaWp4adnRYOC35Xan/8GLLypzCmmAVClKaKb1MjvLOvtMSGq6d6CMrZwULG3WRquRcN hGpZKzMpKHfKUYwmDp3EKlrW9SThUrzN5MBwYDcdQLR2+38yOYu9lp7++j0QUoLZGNRL 5/SP6tXvaIbWbE/o+Hyc+hePVPWXkVlMrHg1ku3sBEhs4GB37slgsXS3SPX+TIaTNxk8 PY4Pmne68faBbe4E6v9jGeW+94Men/172eRyUBAKKrvPlRiwG6MBEraQ0budh8lk4Qgr ycrA== 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=cnHqJVmTWg6PTtbX/0wl9e1PUVD5sTV5Evp9LtXfoQ8=; b=x3bx7qwbpqYuJlVIh3sI9in5YED7AI+aW51eeSNFhkiMnIdt+hf1rv1pLZnG9EGvnv bRf9aFCs79nsDKNkMarz6GA3dfOZBrfO0lF7TFythu2RBqBdl52f2F+Yb886fjAVGrNw gD4KRbS2Z9bfS8Y2E65w+k7/sTe6YbysJ+iKK3y4Al6Kg319RSJed92NUdn5Kc9jgQl1 zBaajNPpBFGW5L2I6tLO3tfCqPcUeRDErS88q/vmw1ZaBpUmAkAWkHLZsRupYEk8VvXK OZlIBgEB4QaK52OThFqEKyaW4e2Lp7Kjcz3sa9KNWJJtCWW0HM6xbhj/X+V0d7t4hfcq EYig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bNhZ4t0J; 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 q28si18889253oij.149.2019.12.29.12.51.12; Sun, 29 Dec 2019 12:51:23 -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=bNhZ4t0J; 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 S1730740AbfL2SMy (ORCPT + 99 others); Sun, 29 Dec 2019 13:12:54 -0500 Received: from mail.kernel.org ([198.145.29.99]:53080 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728348AbfL2R3D (ORCPT ); Sun, 29 Dec 2019 12:29:03 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.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 248B9208E4; Sun, 29 Dec 2019 17:29:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640542; bh=qLCkHzYjg1XN8CjF2YR7S7UokIURdV6DJNPAz4I1i/w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bNhZ4t0JN6z3zmu3sgCRqwgJ1eTfDsaUxM6+3fzBDXsZu6cZoMvgQrMgh4xTFpDTb ZQ3n9a/1b3eQdFLAhPHbfPFnhECKShN5ognvNZc0CNyR/17+bRabHxrjFmdRiXGFKW SAYoqPodRClgmMzj+opQNapqcCkAFlAaiMtAdRgc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Anilkumar Kolli , Kalle Valo , Sasha Levin Subject: [PATCH 4.19 037/219] ath10k: fix backtrace on coredump Date: Sun, 29 Dec 2019 18:17:19 +0100 Message-Id: <20191229162513.982146155@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162508.458551679@linuxfoundation.org> References: <20191229162508.458551679@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Anilkumar Kolli [ Upstream commit d98ddae85a4a57124f87960047b1b6419312147f ] In a multiradio board with one QCA9984 and one AR9987 after enabling the crashdump with module parameter coredump_mask=7, below backtrace is seen. vmalloc: allocation failure: 0 bytes kworker/u4:0: page allocation failure: order:0, mode:0x80d2 CPU: 0 PID: 6 Comm: kworker/u4:0 Not tainted 3.14.77 #130 Workqueue: ath10k_wq ath10k_core_register_work [ath10k_core] (unwind_backtrace) from [] (show_stack+0x10/0x14) (dump_stack+0x80/0xa0) (warn_alloc_failed+0xd0/0xfc) (__vmalloc_node_range+0x1b4/0x1d8) (__vmalloc_node+0x34/0x40) (vzalloc+0x24/0x30) (ath10k_coredump_register+0x6c/0x88 [ath10k_core]) (ath10k_core_register_work+0x350/0xb34 [ath10k_core]) (process_one_work+0x20c/0x32c) (worker_thread+0x228/0x360) This is due to ath10k_hw_mem_layout is not defined for AR9987. For coredump undefined hw ramdump_size is 0. Check for the ramdump_size before allocation memory. Tested on: AR9987, QCA9984 FW version: 10.4-3.9.0.2-00044 Signed-off-by: Anilkumar Kolli Signed-off-by: Kalle Valo Signed-off-by: Sasha Levin --- drivers/net/wireless/ath/ath10k/coredump.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/coredump.c b/drivers/net/wireless/ath/ath10k/coredump.c index 4d28063052fe..385b84f24322 100644 --- a/drivers/net/wireless/ath/ath10k/coredump.c +++ b/drivers/net/wireless/ath/ath10k/coredump.c @@ -1105,9 +1105,11 @@ static struct ath10k_dump_file_data *ath10k_coredump_build(struct ath10k *ar) dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar); dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_RAM_DATA); dump_tlv->tlv_len = cpu_to_le32(crash_data->ramdump_buf_len); - memcpy(dump_tlv->tlv_data, crash_data->ramdump_buf, - crash_data->ramdump_buf_len); - sofar += sizeof(*dump_tlv) + crash_data->ramdump_buf_len; + if (crash_data->ramdump_buf_len) { + memcpy(dump_tlv->tlv_data, crash_data->ramdump_buf, + crash_data->ramdump_buf_len); + sofar += sizeof(*dump_tlv) + crash_data->ramdump_buf_len; + } } spin_unlock_bh(&ar->data_lock); @@ -1154,6 +1156,9 @@ int ath10k_coredump_register(struct ath10k *ar) if (test_bit(ATH10K_FW_CRASH_DUMP_RAM_DATA, &ath10k_coredump_mask)) { crash_data->ramdump_buf_len = ath10k_coredump_get_ramdump_size(ar); + if (!crash_data->ramdump_buf_len) + return 0; + crash_data->ramdump_buf = vzalloc(crash_data->ramdump_buf_len); if (!crash_data->ramdump_buf) return -ENOMEM; -- 2.20.1