2018-01-11 13:12:18

by Xiongwei Song

[permalink] [raw]
Subject: [PATCH] xfs: destroy mutex pag_ici_reclaim_lock before free xfs_perag_t structure

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 <[email protected]>
---
fs/xfs/xfs_mount.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index c879b517cc94..98fd41cbb9e1 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -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 @@ xfs_initialize_perag(
if (!pag)
break;
xfs_buf_hash_destroy(pag);
+ mutex_destroy(&pag->pag_ici_reclaim_lock);
kmem_free(pag);
}
return error;
--
2.15.1


2018-01-12 14:52:41

by Brian Foster

[permalink] [raw]
Subject: Re: [PATCH] xfs: destroy mutex pag_ici_reclaim_lock before free xfs_perag_t structure

On Thu, Jan 11, 2018 at 08:11:51PM +0800, Xiongwei Song wrote:
> 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 <[email protected]>
> ---

Only relevant with mutex debugging enabled I suppose, but seems
appropriate:

Reviewed-by: Brian Foster <[email protected]>

> fs/xfs/xfs_mount.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> index c879b517cc94..98fd41cbb9e1 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -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 @@ xfs_initialize_perag(
> if (!pag)
> break;
> xfs_buf_hash_destroy(pag);
> + mutex_destroy(&pag->pag_ici_reclaim_lock);
> kmem_free(pag);
> }
> return error;
> --
> 2.15.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2018-01-12 16:48:11

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH] xfs: destroy mutex pag_ici_reclaim_lock before free xfs_perag_t structure

On Thu, Jan 11, 2018 at 08:11:51PM +0800, Xiongwei Song wrote:
> 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 <[email protected]>

Looks ok,
Reviewed-by: Darrick J. Wong <[email protected]>

> ---
> fs/xfs/xfs_mount.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
> index c879b517cc94..98fd41cbb9e1 100644
> --- a/fs/xfs/xfs_mount.c
> +++ b/fs/xfs/xfs_mount.c
> @@ -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 @@ xfs_initialize_perag(
> if (!pag)
> break;
> xfs_buf_hash_destroy(pag);
> + mutex_destroy(&pag->pag_ici_reclaim_lock);
> kmem_free(pag);
> }
> return error;
> --
> 2.15.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html