From: Dave Jones ata_device_add fails, calls ata_host_remove with pointers to unitialized memory. Signed-off-by: Dave Jones Cc: Jeff Garzik Cc: Tejun Heo Signed-off-by: Andrew Morton --- drivers/ata/libata-core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff -puN drivers/ata/libata-core.c~via-sata-oops-on-init drivers/ata/libata-core.c --- a/drivers/ata/libata-core.c~via-sata-oops-on-init +++ a/drivers/ata/libata-core.c @@ -5457,11 +5457,10 @@ int ata_device_add(const struct ata_prob int irq_line = ent->irq; ap = ata_port_add(ent, host, i); + host->ports[i] = ap; if (!ap) goto err_out; - host->ports[i] = ap; - /* dummy? */ if (ent->dummy_port_mask & (1 << i)) { ata_port_printk(ap, KERN_INFO, "DUMMY\n"); _