Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1471970pxb; Fri, 20 Aug 2021 06:23:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw6pq+4dUBh9fYFTSsO+GTDmtnuIMX++NKH8YvALPYREn4jEUXGSUytgS03YVyi46BcD8t8 X-Received: by 2002:a92:d790:: with SMTP id d16mr13898817iln.147.1629465782584; Fri, 20 Aug 2021 06:23:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629465782; cv=none; d=google.com; s=arc-20160816; b=S1/s7EU09D5P64YwCdkjqMBDXh3exWMNgZ6/kZGZzWvfYOuVOoo0iCol/1i5a4XmCk jsMEJb+iEpOKQ0CgVtasS5+R3NMgdglEvGMrKJM4WvWsSgNiw3RH+ZLVqCRgjoTwKJ4E rOiDuw2OIkpmuQizKxuSGenjjMkfXEOg2tAJba0ZL4BA4aVtsZiKqhnm/bJR9/ejYfO0 WAPFXYFl7F+3vXUf+ddXEi/YVlBZYO6MZnsji4jIbI5X82WCBl4zoheRjdxagqfqsykh DwTK8//XMOjtqfP1KMkumbJ9coGrYshLiqSpSzAAjdpo5640mnb87DmctpC1MF/HGVFS 8EuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=ruCXdvTYI/aq0ffqKHA1mKPtUVF9CjA3zUbB+Z5W1x4=; b=X88IqGFNt5dKKx4A0m2LOoDaCRjBvcDvnryP9pzN3XI2JKUM3FEX2kiZijHQLoU9P3 LKNjvP1mLDg22PltbGh8UwattU9JApwtRS4arhro5KEcVbz7q5RCdnmCY1wbc4rJwhOY v3Y9qeTHvwlref04unpaeCQMnpNSDo6ZzK/zitCCCCHJdJXhTUre+SzIELKbTrB0yFJy vxOaSJ8Zptvh8mKNAxRN7/LB6Ft3NLjNn2p7j9BmQs/Mrj6Ui5/NziH9zheU3k2aEwxV LjQysERT5OU6Qrnf9Aekrg2PFA8K2Ry6Jsp3ponUh7OWUspljnS9uwlhI6YCQmGVZoDF KxGA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r20si5219074jad.61.2021.08.20.06.22.50; Fri, 20 Aug 2021 06:23:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240753AbhHTNV2 (ORCPT + 99 others); Fri, 20 Aug 2021 09:21:28 -0400 Received: from mga06.intel.com ([134.134.136.31]:28403 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240614AbhHTNV1 (ORCPT ); Fri, 20 Aug 2021 09:21:27 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10081"; a="277790967" X-IronPort-AV: E=Sophos;i="5.84,337,1620716400"; d="scan'208";a="277790967" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Aug 2021 06:20:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,337,1620716400"; d="scan'208";a="595670659" Received: from linux.intel.com ([10.54.29.200]) by fmsmga001.fm.intel.com with ESMTP; 20 Aug 2021 06:20:48 -0700 Received: from glass.png.intel.com (glass.png.intel.com [10.158.65.69]) by linux.intel.com (Postfix) with ESMTP id 91884580677; Fri, 20 Aug 2021 06:20:45 -0700 (PDT) From: Wong Vee Khee To: Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , "David S . Miller" , Jakub Kicinski , Maxime Coquelin Cc: netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH net] net: stmmac: fix kernel panic due to NULL pointer dereference of plat->est Date: Fri, 20 Aug 2021 21:26:22 +0800 Message-Id: <20210820132622.4175839-1-vee.khee.wong@linux.intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the case of taprio offload is not enabled, the error handling path causes a kernel crash due to kernel NULL pointer deference. Fix this by adding check for NULL before attempt to access 'plat->est' on the mutex_lock() call. The following kernel panic is observed without this patch: RIP: 0010:mutex_lock+0x10/0x20 Call Trace: tc_setup_taprio+0x482/0x560 [stmmac] kmem_cache_alloc_trace+0x13f/0x490 taprio_disable_offload.isra.0+0x9d/0x180 [sch_taprio] taprio_destroy+0x6c/0x100 [sch_taprio] qdisc_create+0x2e5/0x4f0 tc_modify_qdisc+0x126/0x740 rtnetlink_rcv_msg+0x12b/0x380 _raw_spin_lock_irqsave+0x19/0x40 _raw_spin_unlock_irqrestore+0x18/0x30 create_object+0x212/0x340 rtnl_calcit.isra.0+0x110/0x110 netlink_rcv_skb+0x50/0x100 netlink_unicast+0x191/0x230 netlink_sendmsg+0x243/0x470 sock_sendmsg+0x5e/0x60 ____sys_sendmsg+0x20b/0x280 copy_msghdr_from_user+0x5c/0x90 __mod_memcg_state+0x87/0xf0 ___sys_sendmsg+0x7c/0xc0 lru_cache_add+0x7f/0xa0 _raw_spin_unlock+0x16/0x30 wp_page_copy+0x449/0x890 handle_mm_fault+0x921/0xfc0 __sys_sendmsg+0x59/0xa0 do_syscall_64+0x33/0x40 entry_SYSCALL_64_after_hwframe+0x44/0xa9 ---[ end trace b1f19b24368a96aa ]--- Fixes: b60189e0392f ("net: stmmac: Integrate EST with TAPRIO scheduler API") Cc: # 5.10.x Signed-off-by: Wong Vee Khee --- drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c index 4f3b6437b114..8160087ee92f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c @@ -884,11 +884,13 @@ static int tc_setup_taprio(struct stmmac_priv *priv, return 0; disable: - mutex_lock(&priv->plat->est->lock); - priv->plat->est->enable = false; - stmmac_est_configure(priv, priv->ioaddr, priv->plat->est, - priv->plat->clk_ptp_rate); - mutex_unlock(&priv->plat->est->lock); + if (priv->plat->est) { + mutex_lock(&priv->plat->est->lock); + priv->plat->est->enable = false; + stmmac_est_configure(priv, priv->ioaddr, priv->plat->est, + priv->plat->clk_ptp_rate); + mutex_unlock(&priv->plat->est->lock); + } priv->plat->fpe_cfg->enable = false; stmmac_fpe_configure(priv, priv->ioaddr, -- 2.25.1