From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (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 AF2D6399374 for ; Sat, 20 Jun 2026 15:53:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781970817; cv=none; b=Gzeez1X4coOwkIkhDtauLHV+huDwmLAbTkWFVtJ53lm1MF9HscJEC9F3Pjx25+DfoG6Eo8JbORePchAISVrH2twQWupdQwXtFZ8TSQhifOdZPDPtj6v/PimC6pre/CAUMLafTICPbUKyB566gEEFKtQV/5DGPZamwwKaABcWBXk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781970817; c=relaxed/simple; bh=27f18OOfD1wCLKfucVJgwaw2m6et21Q/k59tBorfEmY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=rWSKWRzL50eFc51vQFymRvYIDqEwCWJ1QG+QXRsD+i/QnBMY1WqefI5fw9SdPD39vGsyJrDMyG2BLgerggHN9cKczqfi/6doP25gvS3xR4BnkgTGUD5/RscAUMdXWIEGmopFcUtC5l5fGGF3Jm/JyqbNeBvnneFu7Zi0HHt70iw= 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=egpiAvWV; arc=none smtp.client-ip=209.85.210.172 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="egpiAvWV" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-8453bcf7276so1675636b3a.2 for ; Sat, 20 Jun 2026 08:53:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781970812; x=1782575612; 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; bh=enS82+dUPNj0lLplgn6nU4h7gPttfijjEVh4iX+6X1Y=; b=egpiAvWVeKL1+HlZwS6Rxkl+HthOb/nfxCycvBYlT8/feNIa0LODwbEwF9Q31aGZvC n+jMpCJ5dTjwrVp2k+LDZYAbHnmoaz3jcB54zDvlfXUiWj+HP5wzeXElUPX5k0r/t12C yDS6kpJhNU5JTFETTiDZ34p7rblakFAWh42nAzTxUJVaxd7ORdsP77Uh+xIP2+k+AcSY +NiEL0vWbDHvMeCMz85rMT8dKcTDkUP2pU+Yk2A1yr7CMD9vg3CjY05njt9xfLi9lt5t 8HzvZYS5phLIGdRnsTApYry1y44C3J4IqsXIDsh6ao1ByjEZ3XEeHCMlEuyXV8Qp/wor VZhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781970812; x=1782575612; 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; bh=enS82+dUPNj0lLplgn6nU4h7gPttfijjEVh4iX+6X1Y=; b=hsOFZnG+FMpb9NobJ/6mkh+kdA+b113T8MmggL70yD75rmfZercHhR+aRIR8iSr+Rs 98g9h7xHQkGKIY7ROPRnCjq4i+yLXv+hjzOHxx0I0s7L4NbGGSzTcPD/kkrf3V7QyFG8 HPfe5iTLmoCi12ISmY9bP5q7owHCN9R9+6P7UP02ulJ/nGZhiqgbtxb7j+Dnz9INRVj8 xiI+Ge8aKicSMpUTz/ItHkyhNQT47pNNS9kgNhGgt3FQ3Kck1GWAqV8sVut7qNIORT1q 55BduxWTdpdkuZt2x8c9mw4u+CIBXFfyMdlUp0YMB0YDKiLGOzusDF/QXfeeM9H85qVU aObw== X-Forwarded-Encrypted: i=1; AFNElJ8Luetr6D+U4iQmJ3haduNLlZBnqwI7wQx/Mr8hK38TUv8pudnAeBEaAEuAu7N0F6yP6arZU+8byockXPA=@vger.kernel.org X-Gm-Message-State: AOJu0YyR19eIGVxgsU9mbtdc3iF7Fo7h60vA7Rk07dO2LyD3yzu1LN4s hfSpek4B0X7S406c5pcYv5S8xmhD7+YaZEx+GXuAbnFXQy7IXUXH/g4rUuqb1mB3L3A= X-Gm-Gg: AfdE7cmMBDdkC17H7x379Rrtglk9Q8aZ1Rlc0yFC9jacnEetJGz5xQmc9L5P3/VY+Nz o0UWiZicsVHRn4e+nvsnlV+p0N26kwxoFx0cCBcYPnzQDWBFLwHCXAURRV+YDXl/xlcxkKg1jzV umXznzGX99UhMgurJV2MYM+2ZmdtScjPRvEk7dVzs7dO0zlnEecIjFaPRc7qHCljiZR10LJRmp8 mJ3LE5GBAeR2kxNgmvk9QzSeUfB7alNF7vdOy9/30VqEzfOM3tdkwz6X6cCjYvEh6LMcoxVyEKn g22pt00g8NtNw7pMiQRaK4Q8PB6zdkvtthb3lQzjZcA5kGD89XP4p9fy0doJpY19gOOgAgYAzQV hvg5DYK4VvCtYQC/NSgnPpyHXyHI+jApyY7YZcmLJ6qtCy2o6BeG0fqD4MdO8ONPQhTlg51g0Ck OOKlzALobM1QahifjUgrR/c/ZbPH7H6EqC X-Received: by 2002:a05:6a00:882:b0:842:2382:a0ea with SMTP id d2e1a72fcca58-845507de690mr8534471b3a.14.1781970811867; Sat, 20 Jun 2026 08:53:31 -0700 (PDT) Received: from haichao.tail057a43.ts.net ([2001:da8:e000:1206:8e0e:956e:b09c:23cd]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84564ed9516sm2555118b3a.57.2026.06.20.08.53.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Jun 2026 08:53:31 -0700 (PDT) From: Ruoyu Wang To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Ruoyu Wang Subject: [PATCH] net: sungem: fix probe error cleanup Date: Sat, 20 Jun 2026 23:53:26 +0800 Message-ID: <20260620155326.80582-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: 8bit gem_init_one() calls gem_remove_one() when register_netdev() fails. That path unregisters and frees resources owned by the net_device, then probe continues into its own cleanup labels and touches the same state again. Clear the driver data and remove the NAPI instance on this error path, then let the existing probe cleanup labels release the resources once. Signed-off-by: Ruoyu Wang --- drivers/net/ethernet/sun/sungem.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/sun/sungem.c b/drivers/net/ethernet/sun/sungem.c index 8e69d917d827..26974ee71352 100644 --- a/drivers/net/ethernet/sun/sungem.c +++ b/drivers/net/ethernet/sun/sungem.c @@ -2986,10 +2986,10 @@ static int gem_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev->max_mtu = GEM_MAX_MTU; /* Register with kernel */ - if (register_netdev(dev)) { + err = register_netdev(dev); + if (err) { pr_err("Cannot register net device, aborting\n"); - err = -ENOMEM; - goto err_out_free_consistent; + goto err_out_clear_drvdata; } /* Undo the get_cell with appropriate locking (we could use @@ -3003,8 +3003,13 @@ static int gem_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) dev->dev_addr); return 0; +err_out_clear_drvdata: + pci_set_drvdata(pdev, NULL); + netif_napi_del(&gp->napi); + err_out_free_consistent: - gem_remove_one(pdev); + dma_free_coherent(&pdev->dev, sizeof(struct gem_init_block), + gp->init_block, gp->gblock_dvma); err_out_iounmap: gem_put_cell(gp); iounmap(gp->regs);