lkml.org 
[lkml]   [2018]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH v3] mm: fix race between kmem_cache destroy, create and deactivate
On Thu, May 31, 2018 at 5:18 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
> On Tue, 29 May 2018 17:12:04 -0700 Shakeel Butt <shakeelb@google.com> wrote:
>
>> The memcg kmem cache creation and deactivation (SLUB only) is
>> asynchronous. If a root kmem cache is destroyed whose memcg cache is in
>> the process of creation or deactivation, the kernel may crash.
>>
>> Example of one such crash:
>> general protection fault: 0000 [#1] SMP PTI
>> CPU: 1 PID: 1721 Comm: kworker/14:1 Not tainted 4.17.0-smp
>> ...
>> Workqueue: memcg_kmem_cache kmemcg_deactivate_workfn
>> RIP: 0010:has_cpu_slab
>> ...
>> Call Trace:
>> ? on_each_cpu_cond
>> __kmem_cache_shrink
>> kmemcg_cache_deact_after_rcu
>> kmemcg_deactivate_workfn
>> process_one_work
>> worker_thread
>> kthread
>> ret_from_fork+0x35/0x40
>>
>> To fix this race, on root kmem cache destruction, mark the cache as
>> dying and flush the workqueue used for memcg kmem cache creation and
>> deactivation.
>>
>> Signed-off-by: Shakeel Butt <shakeelb@google.com>
>> ---
>> Changelog since v2:
>> - Instead of refcount, flush the workqueue
>
> This one-liner doesn't appear to fully describe the difference between
> v2 and v3, which is rather large:
>

Sorry about that, I should have explained more. The reason the diff
between v2 and v3 is large is because v3 is the complete rewrite. So,
the diff is the revert of v2 and then v3 patch. If you drop all the
previous versions and just keep v3, it will be smaller.

thanks,
Shakeel

\
 
 \ /
  Last update: 2018-06-01 02:49    [W:0.111 / U:1.432 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site