From nobody Sun Feb 8 21:27:11 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 5B6121B4220 for ; Mon, 30 Dec 2024 19:10:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735585822; cv=none; b=przQYhZQai0TSFJ1LrNHxparqaj9zu+McfHZEfvr5VqmAydjOlw1KhCO9I5gKxyDAqiVsPFzEj9+ZPYq4UMz4I/bEcxrFDrthQbuF9y47m7u1ewWyosZqHSxEpAc24dy1FwgMAMyjSykari//ihJJkNN2i5FIJxTNNO4YpAIWnI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735585822; c=relaxed/simple; bh=FdOBvm07WRhrc8V9WZ8IHPlwLxj3SskqRFpD13/zpOI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ujUJ++cwdWcUbl8CTCGelb/QiU8C22UzgKo0QZzFvesxFSO0A/eYbtWcnKAPS5+6h6A8ZytXDk0T2f0jPV3Z9j3YxyWwG4I4l8TNkoC/ma6fm9bA+fyZTMmfRVmP4cULvkJMae+LcApY3ZDgkETJTRU20XmhBJAST00vKV2QwNU= 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=GqxJ+Z+9; arc=none smtp.client-ip=209.85.214.177 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="GqxJ+Z+9" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-215607278acso10737315ad.1 for ; Mon, 30 Dec 2024 11:10:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735585821; x=1736190621; 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=FuC1Eh4GEIAGfeAVn4Tmrg5GI4z8tK+6QbisFE+dYUM=; b=GqxJ+Z+9yc2mSNxUeBeEzIpHPmh8+Tq6Vc9HHKFzrPBKDU9tas0fwjRqtIXcpPEIMa XLV5kXcZFh13zBqW3jHa6BlthKwgmsxu+dm4cicwez+FsMGGpNcp/6+3FOkAdVtcGl/e DobEthKfS5wZ6Mvwrlk2SPPY8YkDGEUL6Cr/5JfZ/bgtmrOHaXrqeTgnV3CYIDj4c3zo yuOdeLyzjweylyqnau4Hlnag0cCiQtMUj+8AEjQsjkMzQW9DYK2cV89mAFrydhltABEP CyUFfDu9ydyv7u9jTMLzGAwGWKpUW9/gPZcq0OntYRP9qDYX2mYsGhzClDLOISKA8qvM 8rvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735585821; x=1736190621; 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=FuC1Eh4GEIAGfeAVn4Tmrg5GI4z8tK+6QbisFE+dYUM=; b=i7CWMTakmeHtawX5HplNmCa0Sr31flPPJDavl6SwPH34XFFggPrdqgNnGfEo9iBImF ZbzK0J2EhFGbkE1z1sIxAaE8QSuPSUwL3BBJg+gn4fE5M6JaKeze+wfJoQ19p8QLFUj/ rR/mcQYUb/YfjEq3OurVKXJ10VoD2/8bfZAf3pXngnJ/EWPvP21YkW2GswBl082n2Mzi Zzmrfgo8S+HOA9txK2Nq8AAE7GpHbzXPkx4f8qVnQqNBDd3vhGLOlohGjjHdMT2MLVqR fLcotMboKcUdBae881rUPOccJHp2Ir9jPiUrQp8uAZHx+TVU7z0G9qwvFhEY0LvR8Ki5 wKiQ== X-Forwarded-Encrypted: i=1; AJvYcCUCVr/BPKA4fvGD+49Z4m4zqc3yrv++/r4yQC+WwA2wE1Y5DEX+1G/HeZZm9LQxfZ+vXPBLdmLmbNdt+YE=@vger.kernel.org X-Gm-Message-State: AOJu0Yyhmtt5YyhGPNevEwdz+n9aue+/nNabek2CtHiij3DuCjIZq/Qg YmVC155P7GzOxpaULjkMppL9JzwFm1Krzqoh8LhpNi30ujKpf39fU0BXZg== X-Gm-Gg: ASbGncs5K6jR5rl+bKeXeOL3JPBWgcAzAYd9VNJ8AUZqH/yPWfi+Yr1wfWvqqlZM37p J43yDvbpiqnZde0KX1ecY7dW/A1TIinkDM1Em5TqBEX98jh8b6oHKDYiZp3mp+JnFxWdCAia+IF jVVaT7csiU8cPpBONpCkGtWE2JvYHCrvSJ8/kx7C68dTt5+Br3Kx7V7MV7qHHPPGjZnQggKbq1K fs4a4F6tpEkJTkDS+0f9LzX6NjRVSRGBXbBL48UFujD09nIzKOKXYg= X-Google-Smtp-Source: AGHT+IGfpqExbRHhT2oGTBmtIB59layh645hggslp/7+X7S0rB9BspfBOlWo2UqWWUp2+bSyttdBJQ== X-Received: by 2002:a17:902:e810:b0:216:69ca:772f with SMTP id d9443c01a7336-219e6f1db82mr190732765ad.14.1735585820739; Mon, 30 Dec 2024 11:10:20 -0800 (PST) Received: from ice.. ([171.76.81.193]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc964f09sm182886795ad.26.2024.12.30.11.10.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Dec 2024 11:10:20 -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 v6 15/15] staging: gpib: tnt4882: Handle gpib_register_driver() errors Date: Tue, 31 Dec 2024 00:26:35 +0530 Message-Id: <20241230185633.175690-16-niharchaithanya@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241230185633.175690-1-niharchaithanya@gmail.com> References: <20241230185633.175690-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. Add pr_err() statements indicating the fail and the error value. Signed-off-by: Nihar Chaithanya --- drivers/staging/gpib/tnt4882/tnt4882_gpib.c | 106 +++++++++++++++++--- 1 file changed, 93 insertions(+), 13 deletions(-) diff --git a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c b/drivers/staging/= gpib/tnt4882/tnt4882_gpib.c index e49a952fa0d8..a2549231525b 100644 --- a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c +++ b/drivers/staging/gpib/tnt4882/tnt4882_gpib.c @@ -1524,29 +1524,109 @@ static int __init tnt4882_init_module(void) =20 result =3D pci_register_driver(&tnt4882_pci_driver); if (result) { - pr_err("tnt4882: pci_driver_register failed!\n"); + pr_err("tnt4882_gpib: pci_register_driver failed: error =3D %d\n", resul= t); 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) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_isa; + } + + result =3D gpib_register_driver(&ni_isa_accel_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_isa_accel; + } + + result =3D gpib_register_driver(&ni_nat4882_isa_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_nat4882_isa; + } + + result =3D gpib_register_driver(&ni_nat4882_isa_accel_interface, THIS_MOD= ULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_nat4882_isa_accel; + } + + result =3D gpib_register_driver(&ni_nec_isa_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_nec_isa; + } + + result =3D gpib_register_driver(&ni_nec_isa_accel_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_nec_isa_accel; + } + + result =3D gpib_register_driver(&ni_pci_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_pci; + } + + result =3D gpib_register_driver(&ni_pci_accel_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + 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) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_pcmcia; + } + + result =3D gpib_register_driver(&ni_pcmcia_accel_interface, THIS_MODULE); + if (result) { + pr_err("tnt4882_gpib: gpib_register_driver failed: error =3D %d\n", resu= lt); + goto err_pcmcia_accel; + } + + result =3D init_ni_gpib_cs(); + if (result) { + pr_err("tnt4882_gpib: pcmcia_register_driver failed: error =3D %d\n", re= sult); + goto err_pcmcia_driver; + } #endif =20 mite_init(); mite_list_devices(); =20 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