Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a85591fd authored by James Bottomley's avatar James Bottomley
Browse files

[SCSI] gdth: fix Error: Driver 'gdth' is already registered, aborting...



This message appears on modprobe/rmmod/modprobe of the driver.  It's
caused because if the driver has no instances, it returns an error
from gdth_init, which causes the module to fail to load.
Unfortunately, the module's pci driver is still registered at this
point.

Fix this by making gdth behave like a modern driver and insert even if
it doesn't find any instances (in case of hot plug or software driven
binding).

Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 2d6f0d0c
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -550,7 +550,6 @@ static int __init gdth_search_isa(ulong32 bios_adr)
#endif /* CONFIG_ISA */

#ifdef CONFIG_PCI
static bool gdth_pci_registered;

static bool gdth_search_vortex(ushort device)
{
@@ -5157,8 +5156,13 @@ static int __init gdth_init(void)

#ifdef CONFIG_PCI
	/* scanning for PCI controllers */
	if (pci_register_driver(&gdth_pci_driver) == 0)
		gdth_pci_registered = true;
	if (pci_register_driver(&gdth_pci_driver)) {
		gdth_ha_str *ha;

		list_for_each_entry(ha, &gdth_instances, list)
			gdth_remove_one(ha);
		return -ENODEV;
	}
#endif /* CONFIG_PCI */

	TRACE2(("gdth_detect() %d controller detected\n", gdth_ctr_count));
@@ -5181,7 +5185,6 @@ static void __exit gdth_exit(void)
#endif

#ifdef CONFIG_PCI
	if (gdth_pci_registered)
	pci_unregister_driver(&gdth_pci_driver);
#endif