From nobody Sun Jul 26 15:55:22 2026 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7F613B3BE7 for ; Wed, 8 Jul 2026 14:34:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783521263; cv=none; b=J+EGLNGBfqomwnSH8gLnBjqS1sCckehywlhjk27O8IN4pTBKNXuXeRbF0XIyvvWBTB+SyGYeHcJ7c5WrOQtqIViP0UdasuZc6bKJjDY/jWrFfeGNsqjXDyMHq+M8y/A4SCORLxOo/S9VaMpbFygsHkexf3olJkJBz6lrfLVyeiY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783521263; c=relaxed/simple; bh=WBc5/6p3zTwCgODy+MFv7Tx3YTqZQNBHukSBiobNYOM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=sGQLqP9Ei9TVQVSsxQpatg9sh7OFj7DuwxuFyj/61mRp9EE7+98OM2tbN+99d+J3Ruh4qlMwf+YiirIlPJbOCz5Kgew+2k39bT2W2gJBcKwBdYVnSpwvnpJQhoaEYoguX/hVMYHcUUglXcCgowTNXFCkGUhotmkP8p+QCizW250= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AZaRDU7h; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AZaRDU7h" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-8484a0b998fso655375b3a.2 for ; Wed, 08 Jul 2026 07:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783521261; x=1784126061; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=urwnk6AEILAyT861SpE2b4pteus/YCwOK1b7DC6yhBY=; b=AZaRDU7hPWG+gCnkfwHU2/po4beerva/rUCXw6psVr3/MBeyZi3yij7hReBO0d9nX4 hFtUTt4mwK00owmiVLJ965myPBzM+gmNi8z+I7hN8katMlZT3sim+vFyf3AMHkQIrU67 qpiNY9+az9sO/1PRuysrt+PSTY+eM/pw+bGLibwffmZo97sOkimJolvHD6VaKtO19y2e 7TNApxwkwPdU/z9RtWUvVcU75TxbjVyDWhEBiQbkXHpYNBGqfikVjF7rIZrudP+xnMr9 JnlgBrUYUrkxzmu0oQQl2qe7THoHy2nT2xYggnzGCrAN5qbQrx0dHQz7b9/uUqxSasMh W46g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783521261; x=1784126061; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=urwnk6AEILAyT861SpE2b4pteus/YCwOK1b7DC6yhBY=; b=ka1lFa2dvqknhGSmGLQIazrBOg80l/6T9CWH6iS7WU3KFCUErbEfhWf2LI5rdYm6Ye x+ygxpdrYCHvInIs2wXFflkg4zzFEHQAUUhdfBb+DgVzbORPHIzOuoYqKdO7GFKXxTsm SajhpxcAvUAWsm9OU7WkmPfwdIlN93tckYmFkP1dZMA0OECoLaRH/XwHcN6Nr6z7ddgt L+cjSMlODsuIHF9kO5q+qSoK0AOdhwoYqR2hvE9Lf12r+oLdsoHblyfhxuNxPiG6h547 ekDFpSyGxjd8QN5UVmM6yrpOSHO866E80Ol9kT183klfdW++mNrcmgOyR7T2IRHQKZXv gOcg== X-Forwarded-Encrypted: i=1; AHgh+Rr7x3XvquVrRytxFO7g3C1ESF1xE7GvY+dilq7e5aMe+XbCOBJQjc9BIkwgm9KjNfNufTMpwtxBEYB7Yi4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+hXjwoWFvVyOpLzOgJOmulNCt5JuWrK7GfMyhMN+D9E+w+WC8 Ds+xv+UU9w8Z0nJ23UjJloW9r+jn+2KT/9CDXH35bsEkM0u1Sv+hufmR X-Gm-Gg: AfdE7cmofL61PVbBVKfAQcm2mP4mrToTa+ZOCvDfGFPqP/IFyLuXTM4lWhTNHq/kujn 5B1YUm+WVR9Cwz8eLtQjIQPuyNnoy6r8LKg3uh0NWSSbf2egAF2wtBAdyNGD+n0PeF/MZxJYK0T 2LbS3fQeaN7il+xRo91bvJ/CAVxR7w6y6k1fjs6VztdpPsBOhJk4GrO6+tFuxn7o/nKISWYeJHz hs2YT/QirvtmqRZd4KaAsZ1/Vp56UA8bywy+jB80xWx6g8I7+54N9utlhwWSl8eKutcMoSf/Q1L y0700PsRS42g8JFZqZEFkqV6aU3OC8yU6Q+dTz049gRZm2P/7nGPKXtdKHm0fhjW7hD1fqkZYJO xr8Hz6PBrDYNnhBz29e2nAN6TsqrTuC0zkGi58RwA0vDwuEV8LNYj22Gakid8bY+JdZwJv9I1vj KdtEbZbxNNDZ9xZDmwl7odX6RTQdDcQPxX X-Received: by 2002:a05:6a00:12e0:b0:847:8b11:5966 with SMTP id d2e1a72fcca58-8484323bb1bmr3093018b3a.1.1783521261084; Wed, 08 Jul 2026 07:34:21 -0700 (PDT) Received: from haichao.tail057a43.ts.net ([2001:da8:e000:1206:1b95:b995:f60c:5c67]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8483dc66f2asm1490035b3a.24.2026.07.08.07.34.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2026 07:34:20 -0700 (PDT) From: Ruoyu Wang To: khc@pm.waw.pl, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Ruoyu Wang Subject: [PATCH net] wan: wanxl: Only reset hardware after BAR mapping Date: Wed, 8 Jul 2026 22:34:15 +0800 Message-ID: <20260708143415.3169358-1-ruoyuw560@gmail.com> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" wanxl_pci_init_one() stores the freshly allocated card in driver data before the PLX BAR is mapped. Several early probe failures then unwind through wanxl_pci_remove_one(), including failure to allocate the coherent status area or to restore the DMA mask. wanxl_pci_remove_one() unconditionally calls wanxl_reset(), and wanxl_reset() dereferences card->plx. On those early failures card->plx is still NULL, so the error path can dereference a NULL MMIO pointer. Only issue the hardware reset once the BAR mapping exists. The remaining cleanup in wanxl_pci_remove_one() already checks whether later resources were allocated. This issue was found by a static analysis checker and confirmed by manual source review. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Ruoyu Wang --- drivers/net/wan/wanxl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wan/wanxl.c b/drivers/net/wan/wanxl.c index d4da88c771129..065c00c12cc16 100644 --- a/drivers/net/wan/wanxl.c +++ b/drivers/net/wan/wanxl.c @@ -514,7 +514,8 @@ static void wanxl_pci_remove_one(struct pci_dev *pdev) if (card->irq) free_irq(card->irq, card); =20 - wanxl_reset(card); + if (card->plx) + wanxl_reset(card); =20 for (i =3D 0; i < RX_QUEUE_LENGTH; i++) if (card->rx_skbs[i]) { --=20 2.51.0