mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 10:41:49 +02:00
smb: client: use GFP_KERNEL for DFS cache allocations
In dfs_cache.c, the helper functions alloc_target(), setup_referral(), and update_cache_entry_locked() currently utilize GFP_ATOMIC to allocate memory. However, all of these functions are executed in sleepable conditions. Use GFP_KERNEL instead, to reduce the risk of allocation failure and stop putting unnecessary pressure on emergency memory pools in low-memory scenarios. Signed-off-by: Fredric Cover <fredric.cover.lkernel@gmail.com> Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
53b7c271f0
commit
6d07e4f714
|
|
@ -363,10 +363,10 @@ static struct cache_dfs_tgt *alloc_target(const char *name, int path_consumed)
|
|||
{
|
||||
struct cache_dfs_tgt *t;
|
||||
|
||||
t = kmalloc_obj(*t, GFP_ATOMIC);
|
||||
t = kmalloc_obj(*t, GFP_KERNEL);
|
||||
if (!t)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
t->name = kstrdup(name, GFP_ATOMIC);
|
||||
t->name = kstrdup(name, GFP_KERNEL);
|
||||
if (!t->name) {
|
||||
kfree(t);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
|
@ -626,7 +626,7 @@ static int update_cache_entry_locked(struct cache_entry *ce, const struct dfs_in
|
|||
|
||||
target = READ_ONCE(ce->tgthint);
|
||||
if (target) {
|
||||
th = kstrdup(target->name, GFP_ATOMIC);
|
||||
th = kstrdup(target->name, GFP_KERNEL);
|
||||
if (!th)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
|
@ -760,11 +760,11 @@ static int setup_referral(const char *path, struct cache_entry *ce,
|
|||
|
||||
memset(ref, 0, sizeof(*ref));
|
||||
|
||||
ref->path_name = kstrdup(path, GFP_ATOMIC);
|
||||
ref->path_name = kstrdup(path, GFP_KERNEL);
|
||||
if (!ref->path_name)
|
||||
return -ENOMEM;
|
||||
|
||||
ref->node_name = kstrdup(target, GFP_ATOMIC);
|
||||
ref->node_name = kstrdup(target, GFP_KERNEL);
|
||||
if (!ref->node_name) {
|
||||
rc = -ENOMEM;
|
||||
goto err_free_path;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user