[XFS] fix use after free with external logs or real-time devices
SGI-PV: 983806 SGI-Modid: xfs-linux-melb:xfs-kern:31666a Signed-off-by: Lachlan McIlroy <lachlan@sgi.com> Signed-off-by: Christoph Hellwig <hch@infradead.org>
This commit is contained in:
committed by
Niv Sardi
parent
6a617dd22b
commit
c032bfcf46
@@ -792,12 +792,14 @@ xfs_close_devices(
|
|||||||
struct xfs_mount *mp)
|
struct xfs_mount *mp)
|
||||||
{
|
{
|
||||||
if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
|
if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
|
||||||
|
struct block_device *logdev = mp->m_logdev_targp->bt_bdev;
|
||||||
xfs_free_buftarg(mp->m_logdev_targp);
|
xfs_free_buftarg(mp->m_logdev_targp);
|
||||||
xfs_blkdev_put(mp->m_logdev_targp->bt_bdev);
|
xfs_blkdev_put(logdev);
|
||||||
}
|
}
|
||||||
if (mp->m_rtdev_targp) {
|
if (mp->m_rtdev_targp) {
|
||||||
|
struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev;
|
||||||
xfs_free_buftarg(mp->m_rtdev_targp);
|
xfs_free_buftarg(mp->m_rtdev_targp);
|
||||||
xfs_blkdev_put(mp->m_rtdev_targp->bt_bdev);
|
xfs_blkdev_put(rtdev);
|
||||||
}
|
}
|
||||||
xfs_free_buftarg(mp->m_ddev_targp);
|
xfs_free_buftarg(mp->m_ddev_targp);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user