From nobody Mon Feb 9 20:31:02 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 0C6CE1D5AC2 for ; Thu, 26 Dec 2024 19:49:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735242595; cv=none; b=VKvXyg9C7fzmDIFS5luuW85BMU4R3F50/RWxLKrJZRRgdPby0+KHIiozmcvlH3yRVPV8a36e9L5Wbe4YrM0ueqSAvhV3ZpsEdHslstQqcdolFrLEp7rntyVV3sJXuGq7YCHB0CXt7FX8A1RfbmdCjx+xf9XfpNbXvwAVlbS0pqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735242595; c=relaxed/simple; bh=jMiBs8Zgo5YGTHOQOrp9o+SytXIc88kul1rGnthOYqQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NFs2pWRQLbYWHEXVYhCveYtvAK32D+2zm9HYGxgMnc89WqTVm8LpNAUvMyCdewJgK9Wq5Jr23Vcdir4h5D9r9F8QUDEhuaWU8vFFj9uvbCeGjVUBhuwWkSoKTIuEBJNIX/Qv0o3K1eWSDWPZLdUQ0sLUnUgQBUnnMZ75600HDck= 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=dC35ynu4; arc=none smtp.client-ip=209.85.214.176 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="dC35ynu4" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-218c8ac69faso9956745ad.3 for ; Thu, 26 Dec 2024 11:49:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735242593; x=1735847393; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TznYTabiEz88B+6m8vXWxYzFmFYHHBYjakt0e1+7PRs=; b=dC35ynu4JVs1njO1NDs9u8dz473O5Hh1J+Uh5EUre9m04poDanNosKSmtfLVJsgvwf Cn7VeX2oPff2eYiBE6dxuhid8GvQuZht26BulaVnKQx//SxdZjBcTZAZpRISoLkhjzgQ xl7ARur+a8ynIOOGf8KdfSKlPbVvPICws0TKK7u3K0xMqKNQhiR1oTy+eDaHNdgy2c1f LcrNuxV3cjgSiYPz1A7NqaMSNcdWkbiqB90gWVQYUh4e6Toz55VArzhButbLu8C2DGL0 m+NBjbZZRkoi2xsZRgPtN4tFGyBJNCn94xHjDgSvcsRMPpFALP53Rd9Vpv89VphXjIG9 lv/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735242593; x=1735847393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TznYTabiEz88B+6m8vXWxYzFmFYHHBYjakt0e1+7PRs=; b=sjMURnU1Ry0BL/W6yEa6eARLt7b3u3fc/xRSRMtKUIoj7Ic7xvUS9dVDaSmNXsErmc ZS0tQgkYSXJc41SxOhDk0Ck6PuLGSRmDMeYbqAGrIhX6qhbIiyRNA8ewPjgjnB5qyAL/ +jereQk+v1S/N1KB2a1Gcxi1qOYeuvkam7exz8TX5K+eBpv27gjfZ9GwvKKXIxhryZUS ds8mcSLuL5z307ZgoHUu3Lng/1leOgRr3sTkOc9yG5fOKdIaYDYiW2m2pDsrnuTLW7kb lbbE5VMq5hVSZJi+mTUTYqt2DbWd8Go0yR92+ANri7QcfWXDk74B2Q6kLPgNWNduqySb g3zw== X-Forwarded-Encrypted: i=1; AJvYcCUpTyHtVzyzJyu5KsARsh9lmgPQEJ9kwP/tiRgtxLl5EnMvf8++g0ykr3T+13JpHtatAIHhi4M28mAUDPQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxgoQfFC2bblDwe3wvocvyUhEfGK+RRkgVYLgsxYPpwxt1uO64O NQDzD37a66KFXCXKLNiqHNaH5eskDsrWbAt3e07eiNmuZ2k1TpkeQfU80H/x3Is= X-Gm-Gg: ASbGncvGrvKGLGufzKmOsIVu6luErKTy4JWu6qpcIIIFhJPtEcxWT7GYxCnsISFrdo3 2Eb1FyjQwmHaU/9zdiyjqjUtlh9adD1a2S0gGu1y9X8puhc0d+rDBQkU2qfJ3OMwdsc4FIYloHK bgHqwwWZ5yVI7eByTi8NbaqwSCuRY7CTQC7cc/06ouSuCNZAxHxzLFPXAQPeMAL03NHWrpuZmK/ pnzkjai9JeOSWRLsK89TM1H9dGC5QInDQLppCTs4iWMrM7I/v1fzQ0= X-Google-Smtp-Source: AGHT+IGVQ1GV579fliUueCO8/2rXvmGwAYSEBRixGbdMRH6zyr2YWj1JDjubZFf5hRUy/jJrfRJn2Q== X-Received: by 2002:a17:902:f681:b0:215:5f17:4296 with SMTP id d9443c01a7336-219e6eb3ac4mr119249375ad.8.1735242593286; Thu, 26 Dec 2024 11:49:53 -0800 (PST) Received: from ice.. ([171.76.83.141]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-842e35d4becsm10304580a12.79.2024.12.26.11.49.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Dec 2024 11:49:53 -0800 (PST) From: Nihar Chaithanya To: dpenkler@gmail.com, gregkh@linuxfoundation.org Cc: dan.carpenter@linaro.org, skhan@linuxfoundation.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Nihar Chaithanya Subject: [PATCH v4 15/15] staging: gpib: tnt4882: Handle gpib_register_driver() errors Date: Fri, 27 Dec 2024 01:06:39 +0530 Message-Id: <20241226193637.241049-16-niharchaithanya@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241226193637.241049-1-niharchaithanya@gmail.com> References: <20241226193637.241049-1-niharchaithanya@gmail.com> 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" The error value from the init_ni_gpib_cs() function is not returned and the previous registering functions are not unregistered. The function gpib_register_driver() can fail and similar to pcmcia_register_driver() function failing, the previous registering functions are not unregistered. Unregister the gpib and pci register functions if the subsequent gpib or pcmcia register functions fail and return the error value. Signed-off-by: Nihar Chaithanya --- drivers/staging/gpib/tnt4882/tnt4882_gpib.c | 87 +++++++++++++++++---- 1 file changed, 71 insertions(+), 16 deletions(-) diff --git a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c b/drivers/staging/= gpib/tnt4882/tnt4882_gpib.c index e49a952fa0d8..573544e86598 100644 --- a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c +++ b/drivers/staging/gpib/tnt4882/tnt4882_gpib.c @@ -1523,30 +1523,85 @@ static int __init tnt4882_init_module(void) int result; =20 result =3D pci_register_driver(&tnt4882_pci_driver); - if (result) { - pr_err("tnt4882: pci_driver_register failed!\n"); + if (result) return result; - } =20 - gpib_register_driver(&ni_isa_interface, THIS_MODULE); - gpib_register_driver(&ni_isa_accel_interface, THIS_MODULE); - gpib_register_driver(&ni_nat4882_isa_interface, THIS_MODULE); - gpib_register_driver(&ni_nat4882_isa_accel_interface, THIS_MODULE); - gpib_register_driver(&ni_nec_isa_interface, THIS_MODULE); - gpib_register_driver(&ni_nec_isa_accel_interface, THIS_MODULE); - gpib_register_driver(&ni_pci_interface, THIS_MODULE); - gpib_register_driver(&ni_pci_accel_interface, THIS_MODULE); + result =3D gpib_register_driver(&ni_isa_interface, THIS_MODULE); + if (result) + goto err_isa; + + result =3D gpib_register_driver(&ni_isa_accel_interface, THIS_MODULE); + if (result) + goto err_isa_accel; + + result =3D gpib_register_driver(&ni_nat4882_isa_interface, THIS_MODULE); + if (result) + goto err_nat4882_isa; + + result =3D gpib_register_driver(&ni_nat4882_isa_accel_interface, THIS_MOD= ULE); + if (result) + goto err_nat4882_isa_accel; + + result =3D gpib_register_driver(&ni_nec_isa_interface, THIS_MODULE); + if (result) + goto err_nec_isa; + + result =3D gpib_register_driver(&ni_nec_isa_accel_interface, THIS_MODULE); + if (result) + goto err_nec_isa_accel; + + result =3D gpib_register_driver(&ni_pci_interface, THIS_MODULE); + if (result) + goto err_pci; + + result =3D gpib_register_driver(&ni_pci_accel_interface, THIS_MODULE); + if (result) + goto err_pci_accel; + #ifdef GPIB_PCMCIA - gpib_register_driver(&ni_pcmcia_interface, THIS_MODULE); - gpib_register_driver(&ni_pcmcia_accel_interface, THIS_MODULE); - if (init_ni_gpib_cs() < 0) - return -1; + result =3D gpib_register_driver(&ni_pcmcia_interface, THIS_MODULE); + if (result) + goto err_pcmcia; + + result =3D gpib_register_driver(&ni_pcmcia_accel_interface, THIS_MODULE); + if (result) + goto err_pcmcia_accel; + + result =3D init_ni_gpib_cs(); + if (result) + goto err_pcmcia_driver; #endif =20 mite_init(); mite_list_devices(); - return 0; + +#ifdef GPIB_PCMCIA +err_pcmcia_driver: + gpib_unregister_driver(&ni_pcmcia_accel_interface); +err_pcmcia_accel: + gpib_unregister_driver(&ni_pcmcia_interface); +err_pcmcia: +#endif + gpib_unregister_driver(&ni_pci_accel_interface); +err_pci_accel: + gpib_unregister_driver(&ni_pci_interface); +err_pci: + gpib_unregister_driver(&ni_nec_isa_accel_interface); +err_nec_isa_accel: + gpib_unregister_driver(&ni_nec_isa_interface); +err_nec_isa: + gpib_unregister_driver(&ni_nat4882_isa_accel_interface); +err_nat4882_isa_accel: + gpib_unregister_driver(&ni_nat4882_isa_interface); +err_nat4882_isa: + gpib_unregister_driver(&ni_isa_accel_interface); +err_isa_accel: + gpib_unregister_driver(&ni_isa_interface); +err_isa: + pci_unregister_driver(&tnt4882_pci_driver); + + return result; } =20 static void __exit tnt4882_exit_module(void) --=20 2.34.1