Messages in this thread | | | Subject | Re: [PATCH 2/2] mm/slub: Fix slab_mutex circular locking problem in slab_attr_store() | From | Waiman Long <> | Date | Mon, 27 Apr 2020 14:16:18 -0400 |
| |
On 4/24/20 12:16 PM, Qian Cai wrote: > >> On Apr 24, 2020, at 11:12 AM, Waiman Long <longman@redhat.com> wrote: >> >> diff --git a/mm/slub.c b/mm/slub.c >> index 183ccc364ccf..255981180489 100644 >> --- a/mm/slub.c >> +++ b/mm/slub.c >> @@ -5567,13 +5567,30 @@ static ssize_t slab_attr_store(struct kobject *kobj, >> return -EIO; >> >> err = attribute->store(s, buf, len); >> -#ifdef CONFIG_MEMCG >> - if (slab_state >= FULL && err >= 0 && is_root_cache(s)) { >> - struct kmem_cache *c; >> +#ifdef CONFIG_MEMCG_KMEM >> + if (slab_state >= FULL && err >= 0 && is_root_cache(s) && >> + !list_empty(&s->memcg_params.children)) { >> + struct kmem_cache *c, **pcaches; >> + int idx, max, cnt = 0; >> + size_t size = s->max_attr_size; >> + struct memcg_cache_array *arr; >> + >> + /* >> + * Make atomic update to s->max_attr_size. >> + */ >> + do { >> + if (len <= size) >> + break; >> + } while (!try_cmpxchg(&s->max_attr_size, &size, len)); >> > try_cmpxchg() is only available on x86. > > mm/slub.c: In function ‘slab_attr_store’: > mm/slub.c:5613:13: error: implicit declaration of function ‘try_cmpxchg’; did you mean ‘xa_cmpxchg’? [-Werror=implicit-function-declaration] > } while (!try_cmpxchg(&s->max_attr_size, &size, len)); > ^~~~~~~~~~~ > xa_cmpxchg > Oh, sorry about that. Will fix it and send out v2.
Cheers, Longman
| |