Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp22333478ybl; Tue, 7 Jan 2020 00:10:44 -0800 (PST) X-Google-Smtp-Source: APXvYqxAOqZjdCrMjaUz2hP25Oi8cZEdtkn9gFfYtz/F9Hja+1LJE4ziVQK8VxvjMxG9m0n+9eKb X-Received: by 2002:a9d:6502:: with SMTP id i2mr94537387otl.206.1578384644154; Tue, 07 Jan 2020 00:10:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578384644; cv=none; d=google.com; s=arc-20160816; b=hPoFvTtbtgGOamI+EdWo576aWSiKNYZlz96Nu3dZHJgMgSIzxBL/lTsTfsF+Z/WqUy 5UnDQsSYAf4Oi/9r9eixmRXaSR5WV/T3XhuvwLJ9FyiI7mzEpHpwfAAS30shLYurShJu NHg8ryV81dp3AB7Guy2ZG4aY2FE+XLtDdDTPnBQV5HuO1zljg18Qoj3tvgjDp+FWaPGd xWMgKu/GIUVjLkCf7+CRiZ1k0UlXIqA2z02g+kQYI6uQ3KaYGxUfdBZ4cD+ZoVLfatCy uz4WlzKDsmkjHFWk9+VyTzjjqXKZ50aM7eHwrAIaMte7Cg/XdBXMiqfWT/5HwMc1ZP8N TJRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:authenticated-by; bh=6j54reGSJWKfrq3+OCQphNRy1ln33bu3qSwaOS9rX9s=; b=O+jaPoe0T9FgWgoppJrhNeDq2GV96E+D7X0Gsnb2TVFR28PNU7aVSkCdYh9XFwf/1y I3R73ZFU46gh228AHj3LmBe27jMnN5VQ8QuACWSmy/4HkDBLtxL/u7B63ZL9ISwUt09S 8rLGcbYCPNVYKryTMGI2EHIxQYbZMioq5bAk5zNguPOn+MKzTwU9W1Qfj7oSQSjDPK2N ezMy/OmmuByC0mFClPkcu/3DKiYZy4N2U2u/6FfaYQmUmT7NM95pZsxwrM+jxXhk0mD4 ZRBBm3xLNXxB7QYUVNGAV7cYFhtpjDi2I9z2yHq12MFJvsIRqKWPVM1C43OT0U8sdE78 A3Cg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-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 x68si35687083oia.227.2020.01.07.00.10.23; Tue, 07 Jan 2020 00:10:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726514AbgAGIIU (ORCPT + 99 others); Tue, 7 Jan 2020 03:08:20 -0500 Received: from rtits2.realtek.com ([211.75.126.72]:47730 "EHLO rtits2.realtek.com.tw" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726485AbgAGIIU (ORCPT ); Tue, 7 Jan 2020 03:08:20 -0500 Authenticated-By: X-SpamFilter-By: BOX Solutions SpamTrap 5.62 with qID 00788AFh008457, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (RTITCASV01.realtek.com.tw[172.21.6.18]) by rtits2.realtek.com.tw (8.15.2/2.57/5.78) with ESMTPS id 00788AFh008457 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 7 Jan 2020 16:08:10 +0800 Received: from localhost.localdomain (172.21.68.128) by RTITCASV01.realtek.com.tw (172.21.6.18) with Microsoft SMTP Server id 14.3.468.0; Tue, 7 Jan 2020 16:08:09 +0800 From: To: CC: , , , Subject: [PATCH] rtw88: fix potential NULL skb access in TX ISR Date: Tue, 7 Jan 2020 16:08:07 +0800 Message-ID: <20200107080807.14433-1-yhchuang@realtek.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [172.21.68.128] Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Yan-Hsuan Chuang Sometimes the TX queue may be empty and we could possible dequeue a NULL pointer, crash the kernel. If the skb is NULL then there is nothing to do, just leave the ISR. And the TX queue should not be empty here, so print an error to see if there is anything wrong for DMA ring. Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver") Signed-off-by: Yan-Hsuan Chuang --- drivers/net/wireless/realtek/rtw88/pci.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c index a58e8276a41a..a6746b5a9ff2 100644 --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c @@ -832,6 +832,11 @@ static void rtw_pci_tx_isr(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci, while (count--) { skb = skb_dequeue(&ring->queue); + if (!skb) { + rtw_err(rtwdev, "failed to dequeue %d skb TX queue %d, BD=0x%08x, rp %d -> %d\n", + count, hw_queue, bd_idx, ring->r.rp, cur_rp); + break; + } tx_data = rtw_pci_get_tx_data(skb); pci_unmap_single(rtwpci->pdev, tx_data->dma, skb->len, PCI_DMA_TODEVICE); -- 2.17.1