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

Commit 77f3f879 authored by Tejun Heo's avatar Tejun Heo
Browse files

[PATCH] libata: fix ata_device_add() error path



In the error path, ata_device_add()

* dereferences null host_set->ports[] element.
* calls scsi_remove_host() on not-yet-added shost.

This patch fixes both bugs.  The first problem was spotted and initial
patch submitted by Dave Jones <davej@redhat.com>.  The second problem
was mentioned and fixed by Jeff Garzik <jgarzik@pobox.com> in a larger
cleanup patch.

Cc: Dave Jones <davej@redhat.com>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
parent 6543bc07
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -5511,11 +5511,11 @@ int ata_device_add(const struct ata_probe_ent *ent)
err_out:
	for (i = 0; i < count; i++) {
		struct ata_port *ap = host_set->ports[i];

		scsi_remove_host(ap->host);
		if (ap) {
			ap->ops->port_stop(ap);
			scsi_host_put(ap->host);
		}
	}
err_free_ret:
	kfree(host_set);
	VPRINTK("EXIT, returning 0\n");