[PATCH] smb: client: use GFP_KERNEL in get_targets()

Fredric Cover posted 1 patch 1 day, 20 hours ago
fs/smb/client/dfs_cache.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] smb: client: use GFP_KERNEL in get_targets()
Posted by Fredric Cover 1 day, 20 hours ago
Currently, get_targets() uses GFP_ATOMIC to allocate the cache target
iterator and to duplicate t->name. The callers of get_targets() are
in a sleepable context; therefore, switch to GFP_KERNEL to reduce
risk of failure and reduce pressure on emergency pools in low-memory
scenarios.

Signed-off-by: Fredric Cover <fredric.cover.lkernel@gmail.com>
---
 fs/smb/client/dfs_cache.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/smb/client/dfs_cache.c b/fs/smb/client/dfs_cache.c
index f6c4259479c5..f727fb261331 100644
--- a/fs/smb/client/dfs_cache.c
+++ b/fs/smb/client/dfs_cache.c
@@ -798,13 +798,13 @@ static int get_targets(struct cache_entry *ce, struct dfs_cache_tgt_list *tl)
 	INIT_LIST_HEAD(head);
 
 	list_for_each_entry(t, &ce->tlist, list) {
-		it = kzalloc_obj(*it, GFP_ATOMIC);
+		it = kzalloc_obj(*it, GFP_KERNEL);
 		if (!it) {
 			rc = -ENOMEM;
 			goto err_free_it;
 		}
 
-		it->it_name = kstrdup(t->name, GFP_ATOMIC);
+		it->it_name = kstrdup(t->name, GFP_KERNEL);
 		if (!it->it_name) {
 			kfree(it);
 			rc = -ENOMEM;
-- 
2.53.0
Re: [PATCH] smb: client: use GFP_KERNEL in get_targets()
Posted by Paulo Alcantara 1 day, 13 hours ago
Fredric Cover <fredric.cover.lkernel@gmail.com> writes:

> Currently, get_targets() uses GFP_ATOMIC to allocate the cache target
> iterator and to duplicate t->name. The callers of get_targets() are
> in a sleepable context; therefore, switch to GFP_KERNEL to reduce
> risk of failure and reduce pressure on emergency pools in low-memory
> scenarios.
> ...

Applied.