Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp2341625imm; Thu, 11 Oct 2018 08:47:40 -0700 (PDT) X-Google-Smtp-Source: ACcGV62YF8l5YSOM/lUIaimF9zGe/1yXAy0UjT1gP9+ipbij1cVa0u70oGWaHZ2rbIvdwGdVUQme X-Received: by 2002:a17:902:a702:: with SMTP id w2-v6mr2073682plq.334.1539272860792; Thu, 11 Oct 2018 08:47:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539272860; cv=none; d=google.com; s=arc-20160816; b=KLGApnVXMYJnCmT2C2gENPO0L6U4ZhH9wbB2zOrWpJoFeM9RE9zaVKQHd7ygtN3KSh Jf490ia4Co3lFzogWaI0g0tuzTB5fVfkRZs6Wf2Fi/+Qvxc38F6DV/bP3AbUqjAP8bgz +9b8NgGgZYjl9nBYBR8ANX2xm8rOC9vetOe3VklqLYD0mMXc/Hdz9p3PlPRUsLTqMJWc tX056bxiihNk5kuc7t5MpKaUVLtURnLOy8ibwu2xZJOnnIGzf9KXi0uHT0RKs624IzF0 scAJK4Xk865LjSnWMGd1USgZn5A69Qlh15mkGYg1aPG/vJkHxAVwRqheaioKSFGfZrfi WQiw== 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=YbZ+7a+RbeVF2EcAJas8dY9VUDWqdrmS7XJnB4b43V8=; b=Uq1YeyNlVQU7RCMFFrgEE9Ldk21IU94xLR4RdyIJrK+M1j9KckNyY7/3Q3e8VemmYI lDheYhVRUl1Q3YR7xTEUQSmUwiqwCLtf2qaTS+AZ828nMEHxR7m2BnVSiOzdkfxqAWem NZNvQ5h32+FA+wDz0HhyV9NRa1OOjSuDTdLuSBgjQeRozI8cHyzhwt819VOk0Qg+W6fv OGXmF1aLBnKihAAYTY9LJ6w8umSJj2kv5IP2Ln3M+QAmi42IWe5sh5vRC8NWoRtC/nVd G8JJrdB9A4W0hH9+5qSgo+hXVTrfyT80Xft2XIOuuVz2XI0ElHeqLQDvNF7WxnrMjzc5 1qXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=eVfxFD9S; 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 h13-v6si23998090pgp.138.2018.10.11.08.47.25; Thu, 11 Oct 2018 08:47:40 -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=eVfxFD9S; 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 S1731504AbeJKXNz (ORCPT + 99 others); Thu, 11 Oct 2018 19:13:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:46710 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726700AbeJKXNy (ORCPT ); Thu, 11 Oct 2018 19:13:54 -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 5A564213A2; Thu, 11 Oct 2018 15:46:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1539272768; bh=CR9Qdvu+8w7qU5OyI+86oAIwTPyKI0HKEFAg3FXJSW0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eVfxFD9ScvMxUnkCRfHb1Sz5GyxcBYphoGCk1nU9HNheZ/9aLOJt05qszWrrq/++l BGJKSeAqjrS2mnwSzJ4WthszcEwJS6fagx/2V1L1Ptfp3KsJcjIcTnSj2Sby1cQnAF Wie+Mab6YmoKbpyaePP4U51dsQ6YYKfawzd8nNxo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Yu Wang , Kalle Valo , Amit Pundir Subject: [PATCH 4.14 31/45] ath10k: fix kernel panic issue during pci probe Date: Thu, 11 Oct 2018 17:39:58 +0200 Message-Id: <20181011152510.250785534@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: Yu Wang commit 50e79e25250bf928369996277e85b00536b380c7 upstream. If device gone during chip reset, ar->normal_mode_fw.board is not initialized, but ath10k_debug_print_hwfw_info() will try to access its member, which will cause 'kernel NULL pointer' issue. This was found using a faulty device (pci link went down sometimes) in a random insmod/rmmod/other-op test. To fix it, check ar->normal_mode_fw.board before accessing the member. pci 0000:02:00.0: BAR 0: assigned [mem 0xf7400000-0xf75fffff 64bit] ath10k_pci 0000:02:00.0: enabling device (0000 -> 0002) ath10k_pci 0000:02:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0 ath10k_pci 0000:02:00.0: failed to read device register, device is gone ath10k_pci 0000:02:00.0: failed to wait for target init: -5 ath10k_pci 0000:02:00.0: failed to warm reset: -5 ath10k_pci 0000:02:00.0: firmware crashed during chip reset ath10k_pci 0000:02:00.0: firmware crashed! (uuid 5d018951-b8e1-404a-8fde-923078b4423a) ath10k_pci 0000:02:00.0: (null) target 0x00000000 chip_id 0x00340aff sub 0000:0000 ath10k_pci 0000:02:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 1 testmode 1 ath10k_pci 0000:02:00.0: firmware ver api 0 features crc32 00000000 ... BUG: unable to handle kernel NULL pointer dereference at 00000004 ... Call Trace: [] ath10k_print_driver_info+0x12/0x20 [ath10k_core] [] ath10k_pci_fw_crashed_dump+0x6d/0x4d0 [ath10k_pci] [] ? ath10k_pci_sleep.part.19+0x57/0xc0 [ath10k_pci] [] ath10k_pci_hif_power_up+0x14e/0x1b0 [ath10k_pci] [] ? do_page_fault+0xb/0x10 [] ath10k_core_register_work+0x24/0x840 [ath10k_core] [] ? netlbl_unlhsh_remove+0x178/0x410 [] ? __do_page_fault+0x480/0x480 [] process_one_work+0x114/0x3e0 [] worker_thread+0x37/0x4a0 [] kthread+0xa4/0xc0 [] ? create_worker+0x180/0x180 [] ? kthread_park+0x50/0x50 [] ret_from_fork+0x1b/0x28 Code: 78 80 b8 50 09 00 00 00 75 5d 8d 75 94 c7 44 24 08 aa d7 52 fb c7 44 24 04 64 00 00 00 89 34 24 e8 82 52 e2 c5 8b 83 dc 08 00 00 <8b> 50 04 8b 08 31 c0 e8 20 57 e3 c5 89 44 24 10 8b 83 58 09 00 EIP: []- ath10k_debug_print_board_info+0x34/0xb0 [ath10k_core] SS:ESP 0068:f4921d90 CR2: 0000000000000004 Signed-off-by: Yu Wang Signed-off-by: Kalle Valo [AmitP: Minor rebasing for 4.14.y and 4.9.y] Signed-off-by: Amit Pundir Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/ath/ath10k/debug.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) --- a/drivers/net/wireless/ath/ath10k/debug.c +++ b/drivers/net/wireless/ath/ath10k/debug.c @@ -1,6 +1,7 @@ /* * Copyright (c) 2005-2011 Atheros Communications Inc. * Copyright (c) 2011-2013 Qualcomm Atheros, Inc. + * Copyright (c) 2018, The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -163,6 +164,8 @@ void ath10k_debug_print_hwfw_info(struct void ath10k_debug_print_board_info(struct ath10k *ar) { char boardinfo[100]; + const struct firmware *board; + u32 crc; if (ar->id.bmi_ids_valid) scnprintf(boardinfo, sizeof(boardinfo), "%d:%d", @@ -170,11 +173,16 @@ void ath10k_debug_print_board_info(struc else scnprintf(boardinfo, sizeof(boardinfo), "N/A"); + board = ar->normal_mode_fw.board; + if (!IS_ERR_OR_NULL(board)) + crc = crc32_le(0, board->data, board->size); + else + crc = 0; + ath10k_info(ar, "board_file api %d bmi_id %s crc32 %08x", ar->bd_api, boardinfo, - crc32_le(0, ar->normal_mode_fw.board->data, - ar->normal_mode_fw.board->size)); + crc); } void ath10k_debug_print_boot_info(struct ath10k *ar)