[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20201228124949.642068078@linuxfoundation.org>
Date: Mon, 28 Dec 2020 13:48:14 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-kernel@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
stable@...r.kernel.org, Hulk Robot <hulkci@...wei.com>,
Cornelia Huck <cohuck@...hat.com>,
Qinglang Miao <miaoqinglang@...wei.com>,
Vineeth Vijayan <vneethv@...ux.ibm.com>,
Heiko Carstens <hca@...ux.ibm.com>,
Sasha Levin <sashal@...nel.org>
Subject: [PATCH 5.4 258/453] s390/cio: fix use-after-free in ccw_device_destroy_console
From: Qinglang Miao <miaoqinglang@...wei.com>
[ Upstream commit 14d4c4fa46eeaa3922e8e1c4aa727eb0a1412804 ]
Use of sch->dev reference after the put_device() call could trigger
the use-after-free bugs.
Fix this by simply adjusting the position of put_device.
Fixes: 37db8985b211 ("s390/cio: add basic protected virtualization support")
Reported-by: Hulk Robot <hulkci@...wei.com>
Suggested-by: Cornelia Huck <cohuck@...hat.com>
Signed-off-by: Qinglang Miao <miaoqinglang@...wei.com>
Reviewed-by: Cornelia Huck <cohuck@...hat.com>
Reviewed-by: Vineeth Vijayan <vneethv@...ux.ibm.com>
[vneethv@...ux.ibm.com: Slight modification in the commit-message]
Signed-off-by: Vineeth Vijayan <vneethv@...ux.ibm.com>
Signed-off-by: Heiko Carstens <hca@...ux.ibm.com>
Signed-off-by: Sasha Levin <sashal@...nel.org>
---
drivers/s390/cio/device.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 983f9c9e08deb..23e9227e60fd7 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -1664,10 +1664,10 @@ void __init ccw_device_destroy_console(struct ccw_device *cdev)
struct io_subchannel_private *io_priv = to_io_private(sch);
set_io_private(sch, NULL);
- put_device(&sch->dev);
- put_device(&cdev->dev);
dma_free_coherent(&sch->dev, sizeof(*io_priv->dma_area),
io_priv->dma_area, io_priv->dma_area_dma);
+ put_device(&sch->dev);
+ put_device(&cdev->dev);
kfree(io_priv);
}
--
2.27.0
Powered by blists - more mailing lists