diff options
author | Tejun Heo <htejun@gmail.com> | 2010-09-21 09:25:48 +0200 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2010-09-28 15:14:51 -0400 |
commit | fad16e7a7f67eef8d33f8ad58850db89382b09ce (patch) | |
tree | 09afb3e939cd4cc85e6aec76965c16fcc03c5798 /drivers/ata/ahci.c | |
parent | 050026feae5bd4fe2db4096b63b15abce7c47faa (diff) | |
download | kernel_samsung_smdk4412-fad16e7a7f67eef8d33f8ad58850db89382b09ce.tar.gz kernel_samsung_smdk4412-fad16e7a7f67eef8d33f8ad58850db89382b09ce.tar.bz2 kernel_samsung_smdk4412-fad16e7a7f67eef8d33f8ad58850db89382b09ce.zip |
ahci: fix module refcount breakage introduced by libahci split
libata depends on scsi_host_template for module reference counting and
sht's should be owned by each low level driver. During libahci split,
the sht was left with libahci.ko leaving the actual low level drivers
not reference counted. This made ahci and ahci_platform always
unloadable even while they're being actively used.
Fix it by defining AHCI_SHT() macro in ahci.h and defining a sht for
each low level ahci driver.
stable: only applicable to 2.6.35.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Pedro Francisco <pedrogfrancisco@gmail.com>
Tested-by: Michael Tokarev <mjt@tls.msk.ru>
Cc: stable@kernel.org
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata/ahci.c')
-rw-r--r-- | drivers/ata/ahci.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index ff1c945fba9..99d0e5a5114 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -90,6 +90,10 @@ static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg); static int ahci_pci_device_resume(struct pci_dev *pdev); #endif +static struct scsi_host_template ahci_sht = { + AHCI_SHT("ahci"), +}; + static struct ata_port_operations ahci_vt8251_ops = { .inherits = &ahci_ops, .hardreset = ahci_vt8251_hardreset, |