Re: hpt366-0.37.patch.bz2 K.O.

From: Sergey Vlasov
Date: Fri Mar 19 2004 - 12:25:13 EST


On Fri, 19 Mar 2004 04:53:22 -0800 (PST) Andre Hedrick wrote:

> http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.4.25/hpt366-0.37.patch.bz2
>
> Fixes fifo dma data corruption on RocketRaid404
> Fixes native HPT372 detection/setup for HPT372/HPT372A/HPT372N
>
> HPT372N's previous code seems kooky, but then again do not have specific
> hardware rev in question.

static void __init init_setup_hpt37x (struct pci_dev *dev, ide_pci_device_t *d)
{
+ if (d->device == PCI_DEVICE_ID_TTI_HPT372) {
+ unsigned int class_rev;
+ static char *chipset_names[] = {"HPT372", "HPT372A", "HPT372N"};
+
+ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev);
+ class_rev &= 0xff;
+ d->name = chipset_names[class_rev];
+ }
+
ide_setup_pci_device(dev, d);
}

This will blow up if a chip with the same PCI ID and a revision larger
than 2 ever appears.

Also, hpt366_init_one() is __devinit, but it calls d->init_setup, and
all init_setup_*() functions are __init - does not look good. Hmm,
this is present in many drivers, also in 2.6.x... apparently this is
safe because such devices cannot be hotplugged.

Attachment: pgp00000.pgp
Description: PGP signature