From f17cf96ba5b5468d050da313a9aedfb2fc9f2e5d Mon Sep 17 00:00:00 2001 From: Jesper Juhl Date: Thu, 16 Aug 2007 16:25:42 +1000 Subject: [PATCH] --- yaml --- r: 70825 b: refs/heads/master c: 49ee6c911f0ae5b3a9a04e0589e3265e52f94f53 h: refs/heads/master i: 70823: c396f95d91e26cd9e0489acb95649b586c060136 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_mount.c | 2 +- trunk/fs/xfs/xfs_vfsops.c | 10 ++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 8ff38d9016d4..708ffef8ba57 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dcb3b83febd1028afbc4a32cf7642a6580e349c6 +refs/heads/master: 49ee6c911f0ae5b3a9a04e0589e3265e52f94f53 diff --git a/trunk/fs/xfs/xfs_mount.c b/trunk/fs/xfs/xfs_mount.c index cfe4de5def89..eef27f21f9ab 100644 --- a/trunk/fs/xfs/xfs_mount.c +++ b/trunk/fs/xfs/xfs_mount.c @@ -1262,7 +1262,7 @@ xfs_unmountfs(xfs_mount_t *mp, struct cred *cr) void xfs_unmountfs_close(xfs_mount_t *mp, struct cred *cr) { - if (mp->m_logdev_targp != mp->m_ddev_targp) + if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) xfs_free_buftarg(mp->m_logdev_targp, 1); if (mp->m_rtdev_targp) xfs_free_buftarg(mp->m_rtdev_targp, 1); diff --git a/trunk/fs/xfs/xfs_vfsops.c b/trunk/fs/xfs/xfs_vfsops.c index 47c890778bb6..ba8f7a3e4028 100644 --- a/trunk/fs/xfs/xfs_vfsops.c +++ b/trunk/fs/xfs/xfs_vfsops.c @@ -480,13 +480,19 @@ xfs_mount( } if (rtdev) { mp->m_rtdev_targp = xfs_alloc_buftarg(rtdev, 1); - if (!mp->m_rtdev_targp) + if (!mp->m_rtdev_targp) { + xfs_blkdev_put(logdev); + xfs_blkdev_put(rtdev); goto error0; + } } mp->m_logdev_targp = (logdev && logdev != ddev) ? xfs_alloc_buftarg(logdev, 1) : mp->m_ddev_targp; - if (!mp->m_logdev_targp) + if (!mp->m_logdev_targp) { + xfs_blkdev_put(logdev); + xfs_blkdev_put(rtdev); goto error0; + } /* * Setup flags based on mount(2) options and then the superblock