staging: fsl-mc: fix asymmetry in destroy of mc_io
authorBharat Bhushan <Bharat.Bhushan@nxp.com>
Wed, 22 Jun 2016 21:40:48 +0000 (16:40 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jun 2016 00:14:03 +0000 (17:14 -0700)
commitf93627146f0e371093966ed3d44c065aa077cfb1
treee75a20bcceee608ac69f9319d15fb81637224c3a
parentfde867d308f39dfd4744c8da1695547b20e002b1
staging: fsl-mc: fix asymmetry in destroy of mc_io

An mc_io represents a mapped MC portal.  Previously, an mc_io was
created for the root dprc in fsl_mc_bus_probe() and for child dprcs
in dprc_probe().  But the free of that data structure happened in the
general bus remove callback.  This asymmetry resulted in some bugs due
to unwanted destroys of mc_io object in some scenarios (e.g. vfio).

Fix this bug by making things symmetric-- mc_io created in
fsl_mc_bus_probe() is freed in fsl_mc_bus_remove().  The mc_io created
in dprc_probe() is freed in dprc_remove().

Signed-off-by: Bharat Bhushan <Bharat.Bhushan@nxp.com>
[Stuart: added check for root dprc and reworded commit message]
Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/fsl-mc/bus/dprc-driver.c
drivers/staging/fsl-mc/bus/mc-bus.c