From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 53D34156C6F for ; Sat, 28 Dec 2024 06:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735367182; cv=none; b=UwMFuZn5UoZIL1Rus21dJhZla3KsNOKvhz5J3QNlmzSC0AjYAC8/PUllQTrHay+jzWqfq3RhKmb8YuAIqkkFQrvQEanVXelXxQhQ4xfUlvsIx60CbpFBMbUz45QkWN+lyut0YoKPLLV0UbibfnnI/8f297rrM2Wv29rh8pBHF8E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735367182; c=relaxed/simple; bh=au64Cqx/6qafw5PjD7DllligEfi2d3TPqFSMC/o7EE8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tqmPAwg09lNh15VlqOxNanWu4bF9U4g2uTlJ38EYNM8kYoDMJSXw3NCgtLr13tZLyRj2TC4vbN2Fx8BF7u4ypz7xpYheOGse6YRsA54ioj05Mh//+gu0Ku6p5/AECWkVT0UXEKBfZY8HGSsZrB8ykLlJIVjle8C5noMt1o6818A= 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=dCUH4A1M; arc=none smtp.client-ip=209.85.214.181 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="dCUH4A1M" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-215464b0432so9329765ad.0 for ; Fri, 27 Dec 2024 22:26:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735367181; x=1735971981; 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=FYwhhUU5+JvkMdb/ARwJEzKq3VTQKIxokm8aUHTCdGc=; b=dCUH4A1Mu7H7HGGKeNUg9H0qljnp3z6Qi35zoJox+S0zUPpBLaZ7CqjwVsp1oowQMP v6P7aAGGGzbErx/MZd3UW+NE/JpJcarnUhLA2pfE14kPx/rwPuHC1fOz9c8kxwaMLVk0 HR5wCCTRviuLf+rvk5Sc5WW2LViij6lhfrg7jjVxnKRjKxt2sVuSoBL93IEoKEHEFAl6 m8RsYEN8v+scHJfEAOmcOVrKWnGQTIefLy2pywn4tB88rz5Fyd82ZxuDt5SMUUen7Ht6 8goOlte0WWJBAmfBbDbxkLexgeOlODlGTMrtgvVze4GjU3aajoe2wyjhkylwNSShtcuY LCgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735367181; x=1735971981; 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=FYwhhUU5+JvkMdb/ARwJEzKq3VTQKIxokm8aUHTCdGc=; b=hCiP582UXPfRDPov1YGiScAPRBmvjV7xOf+o7vm6u5DdRFV18T/Ysv5c38uVA2Hr/p fnetKgkw8Z+HAZiR9vyXFJGzKV1HBlPVDgwd80U4bC4IqP0uzLobkP3pojynYbNR3Kt7 Y0AMeCssUL8NUmIlL3FxOF/ct0zgTjjSbSrsXITTZ7Ht65mKESYQybuS2jIlFfdIehpG 3MwZg4p11CTdo7CLAweEVj6z9HMRYdzc+sZJ+tHbn27TVgg++N3VUZtpARl0nGP88//6 pohy0H6wxC3BPXYCzoh6mgaOaZoJ2iNaoHCE/F1ug0kIvfVz2bngbPq9MT5vwegfow8Z q1qg== X-Forwarded-Encrypted: i=1; AJvYcCVELBj5Ms01JlxvObTfLSxEt3XJ2QXbqhpHcXwpDtXGDFlCd5kZDRFI3zjGtXwA3GGkn+fZfFmape/NATc=@vger.kernel.org X-Gm-Message-State: AOJu0YzJW/DRi59ke9OoW9443au8nSawDS5oWKxis+/HDnpv4oWHFwvy gDN2hvVOXk2Scl9ZClMwvuXiImCySrb7B3+1bpSysEbM+lCcbKsh X-Gm-Gg: ASbGncuk0uBjIFYzaDpWueRmOfWMZ6VzElcIUQ7ccA9PTuJeU0wtEbx4spPNXbFizBi 1SLbTH7eTv0xDBwCjJvBaXoHGhLSsOtaK3z3XLLd5oA69g4G9+Wb67CEsrb8KCPAs+mNib711dN awmnn/3qKw4XF8DU80Izoj+hkRdiBiA3djiSKNDf7Ru+WBjuJD2do18+XQbPeum/pFfWhwYX6AW svOt5vsRKIxSQTtv1Th26sOnHHmd/g4aHYB/BfoJH/RadY3f75ysDw= X-Google-Smtp-Source: AGHT+IGI2ouDUS8lEVfyss0H+CtKbXC/zio4nOllHtiI2aYzRsO3rzRg7NByjNEyx5UYRJ/X9Jxd6A== X-Received: by 2002:a17:902:ecc7:b0:20c:df08:9a78 with SMTP id d9443c01a7336-219e6f26809mr147224445ad.13.1735367180371; Fri, 27 Dec 2024 22:26:20 -0800 (PST) Received: from ice.. ([171.76.83.141]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc9f73f6sm144479455ad.222.2024.12.27.22.26.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Dec 2024 22:26: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 v5 15/15] staging: gpib: tnt4882: Handle gpib_register_driver() errors Date: Sat, 28 Dec 2024 11:38:03 +0530 Message-Id: <20241228060800.107653-16-niharchaithanya@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241228060800.107653-1-niharchaithanya@gmail.com> References: <20241228060800.107653-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: 8bit 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, 74 insertions(+), 13 deletions(-) diff --git a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c b/drivers/staging/gpib/tnt4882/tnt4882_gpib.c index e49a952fa0d8..eab7fd121f0c 100644 --- a/drivers/staging/gpib/tnt4882/tnt4882_gpib.c +++ b/drivers/staging/gpib/tnt4882/tnt4882_gpib.c @@ -1524,29 +1524,90 @@ static int __init tnt4882_init_module(void) result = pci_register_driver(&tnt4882_pci_driver); if (result) { - pr_err("tnt4882: pci_driver_register failed!\n"); + pr_err("tnt4882_gpib: pci_driver_register failed: error = %d\n", result); return result; } - 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 = gpib_register_driver(&ni_isa_interface, THIS_MODULE); + if (result) + goto err_isa; + + result = gpib_register_driver(&ni_isa_accel_interface, THIS_MODULE); + if (result) + goto err_isa_accel; + + result = gpib_register_driver(&ni_nat4882_isa_interface, THIS_MODULE); + if (result) + goto err_nat4882_isa; + + result = gpib_register_driver(&ni_nat4882_isa_accel_interface, THIS_MODULE); + if (result) + goto err_nat4882_isa_accel; + + result = gpib_register_driver(&ni_nec_isa_interface, THIS_MODULE); + if (result) + goto err_nec_isa; + + result = gpib_register_driver(&ni_nec_isa_accel_interface, THIS_MODULE); + if (result) + goto err_nec_isa_accel; + + result = gpib_register_driver(&ni_pci_interface, THIS_MODULE); + if (result) + goto err_pci; + + result = 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 = gpib_register_driver(&ni_pcmcia_interface, THIS_MODULE); + if (result) + goto err_pcmcia; + + result = gpib_register_driver(&ni_pcmcia_accel_interface, THIS_MODULE); + if (result) + goto err_pcmcia_accel; + + result = init_ni_gpib_cs(); + if (result) + goto err_pcmcia_driver; #endif mite_init(); mite_list_devices(); + pr_info("tnt4882_gpib: module init is complete\n"); return 0; + +#ifdef GPIB_PCMCIA +err_pcmcia_driver: + pr_err("tnt4882_gpib: pcmcia_register_driver failed: error = %d\n", result); + 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); + + pr_err("tnt4882_gpib: gpib_register_driver failed\n"); + return result; } static void __exit tnt4882_exit_module(void) -- 2.34.1