lkml.org 
[lkml]   [2017]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH] slub: make sure struct kmem_cache_node is initialized before publication
    On Sat, Jul 8, 2017 at 1:18 AM, Christoph Lameter <cl@linux.com> wrote:
    > On Fri, 7 Jul 2017, Andrew Morton wrote:
    >
    >> On Fri, 7 Jul 2017 10:34:08 +0200 Alexander Potapenko <glider@google.com> wrote:
    >>
    >> > --- a/mm/slub.c
    >> > +++ b/mm/slub.c
    >> > @@ -3389,8 +3389,8 @@ static int init_kmem_cache_nodes(struct kmem_cache *s)
    >> > return 0;
    >> > }
    >> >
    >> > - s->node[node] = n;
    >> > init_kmem_cache_node(n);
    >> > + s->node[node] = n;
    >> > }
    >> > return 1;
    >> > }
    >>
    >> If this matters then I have bad feelings about free_kmem_cache_nodes():
    >
    > At creation time the kmem_cache structure is private and no one can run a
    > free operation.
    >
    >> Inviting a use-after-free? I guess not, as there should be no way
    >> to look up these items at this stage.
    >
    > Right.
    >
    >> Could the slab maintainers please take a look at these and also have a
    >> think about Alexander's READ_ONCE/WRITE_ONCE question?
    >
    > Was I cced on these?
    I've asked Andrew about READ_ONCE privately.
    My concern is as follows.
    Since unfreeze_partials() sees uninitialized value of n->list_lock, I
    was suspecting there's a data race between unfreeze_partials() and
    init_kmem_cache_nodes().
    If so, reads and writes to s->node[node] must be acquire/release
    atomics (not actually READ_ONCE/WRITE_ONCE, but
    smp_load_acquire/smp_store_release).




    --
    Alexander Potapenko
    Software Engineer

    Google Germany GmbH
    Erika-Mann-Straße, 33
    80636 München

    Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle
    Registergericht und -nummer: Hamburg, HRB 86891
    Sitz der Gesellschaft: Hamburg

    \
     
     \ /
      Last update: 2017-07-10 11:20    [W:4.455 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site