From: Stuart Yoder <stuart.yoder@nxp.com>
To: <gregkh@linuxfoundation.org>
Cc: <german.rivera@nxp.com>, <devel@driverdev.osuosl.org>,
<linux-kernel@vger.kernel.org>, <agraf@suse.de>, <arnd@arndb.de>,
<leoyang.li@nxp.com>, Bharat Bhushan <Bharat.Bhushan@nxp.com>,
Stuart Yoder <stuart.yoder@nxp.com>
Subject: [PATCH 07/11] staging: fsl-mc: fix asymmetry in destroy of mc_io
Date: Wed, 22 Jun 2016 16:40:48 -0500 [thread overview]
Message-ID: <1466631652-25731-8-git-send-email-stuart.yoder@nxp.com> (raw)
In-Reply-To: <1466631652-25731-1-git-send-email-stuart.yoder@nxp.com>
From: Bharat Bhushan <Bharat.Bhushan@nxp.com>
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>
---
drivers/staging/fsl-mc/bus/dprc-driver.c | 5 +++++
drivers/staging/fsl-mc/bus/mc-bus.c | 8 ++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c
index f865d18..1a6bcc4 100644
--- a/drivers/staging/fsl-mc/bus/dprc-driver.c
+++ b/drivers/staging/fsl-mc/bus/dprc-driver.c
@@ -801,6 +801,11 @@ static int dprc_remove(struct fsl_mc_device *mc_dev)
dev_set_msi_domain(&mc_dev->dev, NULL);
}
+ if (!fsl_mc_is_root_dprc(&mc_dev->dev)) {
+ fsl_destroy_mc_io(mc_dev->mc_io);
+ mc_dev->mc_io = NULL;
+ }
+
dev_info(&mc_dev->dev, "DPRC device unbound from driver");
return 0;
}
diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c
index a49186e..db3afdb 100644
--- a/drivers/staging/fsl-mc/bus/mc-bus.c
+++ b/drivers/staging/fsl-mc/bus/mc-bus.c
@@ -579,10 +579,6 @@ void fsl_mc_device_remove(struct fsl_mc_device *mc_dev)
if (strcmp(mc_dev->obj_desc.type, "dprc") == 0) {
mc_bus = to_fsl_mc_bus(mc_dev);
- if (mc_dev->mc_io) {
- fsl_destroy_mc_io(mc_dev->mc_io);
- mc_dev->mc_io = NULL;
- }
if (fsl_mc_is_root_dprc(&mc_dev->dev)) {
if (atomic_read(&root_dprc_count) > 0)
@@ -810,6 +806,10 @@ static int fsl_mc_bus_remove(struct platform_device *pdev)
return -EINVAL;
fsl_mc_device_remove(mc->root_mc_bus_dev);
+
+ fsl_destroy_mc_io(mc->root_mc_bus_dev->mc_io);
+ mc->root_mc_bus_dev->mc_io = NULL;
+
dev_info(&pdev->dev, "Root MC bus device removed");
return 0;
}
--
1.9.0
next prev parent reply other threads:[~2016-06-22 21:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-22 21:40 [PATCH 00/11] staging: fsl-mc: module loading support, fixes, and cleanup Stuart Yoder
2016-06-22 21:40 ` [PATCH 01/11] staging: fsl-mc: add support for the modalias sysfs attribute Stuart Yoder
2016-06-22 21:40 ` [PATCH 02/11] staging: fsl-mc: implement uevent callback and set the modalias Stuart Yoder
2016-06-22 21:40 ` [PATCH 03/11] staging: fsl-mc: clean up the device id struct Stuart Yoder
2016-06-29 15:03 ` Matthias Brugger
2016-06-22 21:40 ` [PATCH 04/11] staging: fsl-mc: add support for device table matching Stuart Yoder
2016-06-22 21:40 ` [PATCH 05/11] staging: fsl-mc: export mc_get_version Stuart Yoder
2016-06-22 21:40 ` [PATCH 06/11] staging: fsl-mc: make fsl_mc_is_root_dprc() global Stuart Yoder
2016-06-29 14:17 ` Matthias Brugger
2016-06-29 14:25 ` Stuart Yoder
2016-06-29 15:01 ` Matthias Brugger
2016-06-22 21:40 ` Stuart Yoder [this message]
2016-06-22 21:40 ` [PATCH 08/11] staging: fsl-mc: dprc: add missing irq free Stuart Yoder
2016-06-22 21:40 ` [PATCH 09/11] staging: fsl-mc: dprc: fix ordering problem freeing resources in remove of dprc Stuart Yoder
2016-06-22 21:40 ` [PATCH 10/11] staging: fsl-mc: properly set hwirq in msi set_desc Stuart Yoder
2016-06-22 21:40 ` [PATCH 11/11] staging: fsl-mc: convert mc command build/parse to use C structs Stuart Yoder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1466631652-25731-8-git-send-email-stuart.yoder@nxp.com \
--to=stuart.yoder@nxp.com \
--cc=Bharat.Bhushan@nxp.com \
--cc=agraf@suse.de \
--cc=arnd@arndb.de \
--cc=devel@driverdev.osuosl.org \
--cc=german.rivera@nxp.com \
--cc=gregkh@linuxfoundation.org \
--cc=leoyang.li@nxp.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.