[lustre-devel] [PATCH 2/4] lustre: use GFP_NOFS when lli_och_mutex is held - again

NeilBrown neilb at suse.com
Sun Dec 9 16:46:16 PST 2018


lockdep reports that lli_och_mutex is involved with fs_reclaim and is
held during this memory allocation - so GFP_NOFS should be used to
avoid a possible deadlock.

This is a second place where this was a problem - I don't think there
are more.

Fixes: 0b0c8c1ca0bd ("lustre: llite: replace several GFP_NOFS with GFP_KERNEL")
Signed-off-by: NeilBrown <neilb at suse.com>
---
 drivers/staging/lustre/lustre/llite/file.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c
index 15910ff5f293..a6f149c47a7a 100644
--- a/drivers/staging/lustre/lustre/llite/file.c
+++ b/drivers/staging/lustre/lustre/llite/file.c
@@ -135,7 +135,7 @@ static int ll_close_inode_openhandle(struct inode *inode,
 		goto out;
 	}
 
-	op_data = kzalloc(sizeof(*op_data), GFP_KERNEL);
+	op_data = kzalloc(sizeof(*op_data), GFP_NOFS);
 	/*
 	 * We leak openhandle and request here on error, but not much to be
 	 * done in OOM case since app won't retry close on error either.
@@ -1652,7 +1652,7 @@ int ll_release_openhandle(struct inode *inode, struct lookup_intent *it)
 
 	LASSERT(it_open_error(DISP_OPEN_OPEN, it) == 0);
 
-	och = kzalloc(sizeof(*och), GFP_KERNEL);
+	och = kzalloc(sizeof(*och), GFP_NOFS);
 	if (!och) {
 		rc = -ENOMEM;
 		goto out;




More information about the lustre-devel mailing list