xfs: destroy mutex pag_ici_reclaim_lock before free
authorXiongwei Song <sxwjean@me.com>
Thu, 11 Jan 2018 17:45:51 +0000 (09:45 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Fri, 12 Jan 2018 22:09:08 +0000 (14:09 -0800)
The mutex pag_ici_reclaim_lock of xfs_perag_t structure is initialized in
xfs_initialize_perag. If happen errors in xfs_initialize_perag, or free
resources in xfs_free_perag, wo need to destroy the mutex before free
perag.

Signed-off-by: Xiongwei Song <sxwjean@me.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_mount.c

index c879b517cc94482e5a51506f3da1448e2404a6c1..98fd41cbb9e10a3331ede6273271d6dc32da262f 100644 (file)
@@ -162,6 +162,7 @@ xfs_free_perag(
                ASSERT(pag);
                ASSERT(atomic_read(&pag->pag_ref) == 0);
                xfs_buf_hash_destroy(pag);
+               mutex_destroy(&pag->pag_ici_reclaim_lock);
                call_rcu(&pag->rcu_head, __xfs_free_perag);
        }
 }
@@ -248,6 +249,7 @@ xfs_initialize_perag(
 out_hash_destroy:
        xfs_buf_hash_destroy(pag);
 out_free_pag:
+       mutex_destroy(&pag->pag_ici_reclaim_lock);
        kmem_free(pag);
 out_unwind_new_pags:
        /* unwind any prior newly initialized pags */
@@ -256,6 +258,7 @@ out_unwind_new_pags:
                if (!pag)
                        break;
                xfs_buf_hash_destroy(pag);
+               mutex_destroy(&pag->pag_ici_reclaim_lock);
                kmem_free(pag);
        }
        return error;