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

Commit 42caa0ed authored by James Bottomley's avatar James Bottomley Committed by Martin K. Petersen
Browse files

scsi: aic94xx: fix module loading



The aic94xx driver is currently failing to load with errors like

sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:03.0/0000:02:00.3/0000:07:02.0/revision'

Because the PCI code had recently added a file named 'revision' to every
PCI device.  Fix this by renaming the aic94xx revision file to
aic_revision.  This is safe to do for us because as far as I can tell,
there's nothing in userspace relying on the current aic94xx revision file
so it can be renamed without breaking anything.

Fixes: 702ed3be (PCI: Create revision file in sysfs)
Cc: stable@vger.kernel.org
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 8437fcf1
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -280,7 +280,7 @@ static ssize_t asd_show_dev_rev(struct device *dev,
	return snprintf(buf, PAGE_SIZE, "%s\n",
	return snprintf(buf, PAGE_SIZE, "%s\n",
			asd_dev_rev[asd_ha->revision_id]);
			asd_dev_rev[asd_ha->revision_id]);
}
}
static DEVICE_ATTR(revision, S_IRUGO, asd_show_dev_rev, NULL);
static DEVICE_ATTR(aic_revision, S_IRUGO, asd_show_dev_rev, NULL);


static ssize_t asd_show_dev_bios_build(struct device *dev,
static ssize_t asd_show_dev_bios_build(struct device *dev,
				       struct device_attribute *attr,char *buf)
				       struct device_attribute *attr,char *buf)
@@ -477,7 +477,7 @@ static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
{
{
	int err;
	int err;


	err = device_create_file(&asd_ha->pcidev->dev, &dev_attr_revision);
	err = device_create_file(&asd_ha->pcidev->dev, &dev_attr_aic_revision);
	if (err)
	if (err)
		return err;
		return err;


@@ -499,13 +499,13 @@ static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
err_biosb:
err_biosb:
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_bios_build);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_bios_build);
err_rev:
err_rev:
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_revision);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_aic_revision);
	return err;
	return err;
}
}


static void asd_remove_dev_attrs(struct asd_ha_struct *asd_ha)
static void asd_remove_dev_attrs(struct asd_ha_struct *asd_ha)
{
{
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_revision);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_aic_revision);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_bios_build);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_bios_build);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_pcba_sn);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_pcba_sn);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_update_bios);
	device_remove_file(&asd_ha->pcidev->dev, &dev_attr_update_bios);