Files
linux/drivers/ata
Gwendal Grignou 16db9205d3 libata: transport: Remove circular dependency at free time
[ Upstream commit d85fc67dd1 ]

Without this patch, failed probe would not free resources like irq.

ata port tdev object currently hold a reference to the ata port
object.  Therefore the ata port object release function will not get
called until the ata_tport_release is called. But that would never
happen, releasing the last reference of ata port dev is done by
scsi_host_release, which is called by ata_host_release when the ata
port object is released.

The ata device objects actually do not need to explicitly hold a
reference to their real counterpart, given the transport objects are
the children of these objects and device_add() is call for each child.
We know the parent will not be deleted until we call the child's
device_del().

Reported-by: Matthew Whitehead <tedheadster@gmail.com>
Tested-by: Matthew Whitehead <tedheadster@gmail.com>
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-10-08 10:26:11 +02:00
..
2017-06-14 15:06:00 +02:00
2016-09-06 12:38:17 -04:00
2016-09-06 12:38:17 -04:00
2017-02-09 08:08:27 +01:00
2014-03-11 08:30:53 -04:00
2015-09-10 17:02:04 -04:00
2008-01-23 05:24:15 -05:00
2015-11-30 10:02:49 -05:00
2007-07-02 10:17:42 -04:00