summaryrefslogtreecommitdiffstats
path: root/drivers/xen
diff options
context:
space:
mode:
authorJan Beulich <JBeulich@suse.com>2012-03-05 17:11:31 +0000
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2012-03-13 14:15:29 -0400
commitbd0d5aa417d40d6b996fb7b5c926bcecd56c8984 (patch)
tree7e05120b899c9bcabe1422d0c582c49d97cd1037 /drivers/xen
parent73c154c60be106b47f15d1111fc2d75cc7a436f2 (diff)
downloadlinux-stable-bd0d5aa417d40d6b996fb7b5c926bcecd56c8984.tar.gz
linux-stable-bd0d5aa417d40d6b996fb7b5c926bcecd56c8984.tar.bz2
linux-stable-bd0d5aa417d40d6b996fb7b5c926bcecd56c8984.zip
xenbus: don't free other end details too early
The individual drivers' remove functions could legitimately attempt to access this information (for logging messages if nothing else). Note that I did not in fact observe a problem anywhere, but I came across this while looking into the reasons for what turned out to need the fix at https://lkml.org/lkml/2012/3/5/336 to vsprintf(). Signed-off-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers/xen')
-rw-r--r--drivers/xen/xenbus/xenbus_probe.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c
index 3864967202b5..b793723e724d 100644
--- a/drivers/xen/xenbus/xenbus_probe.c
+++ b/drivers/xen/xenbus/xenbus_probe.c
@@ -257,11 +257,12 @@ int xenbus_dev_remove(struct device *_dev)
DPRINTK("%s", dev->nodename);
free_otherend_watch(dev);
- free_otherend_details(dev);
if (drv->remove)
drv->remove(dev);
+ free_otherend_details(dev);
+
xenbus_switch_state(dev, XenbusStateClosed);
return 0;
}