lkml.org 
[lkml]   [2020]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 5/9] s390/vmemmap: take the vmem_mutex when populating/freeing
    Date
    Let's synchronize all accesses to the 1:1 and vmemmap mappings. This will
    be especially relevant when wanting to cleanup empty page tables that could
    be shared by both. Avoid races when removing tables that might be just
    about to get reused.

    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    ---
    arch/s390/mm/vmem.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
    index be32a38bb91fd..a2b79681df69d 100644
    --- a/arch/s390/mm/vmem.c
    +++ b/arch/s390/mm/vmem.c
    @@ -334,17 +334,21 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
    {
    int ret;

    + mutex_lock(&vmem_mutex);
    /* We don't care about the node, just use NUMA_NO_NODE on allocations */
    ret = add_pagetable(start, end, false);
    if (ret)
    remove_pagetable(start, end, false);
    + mutex_unlock(&vmem_mutex);
    return ret;
    }

    void vmemmap_free(unsigned long start, unsigned long end,
    struct vmem_altmap *altmap)
    {
    + mutex_lock(&vmem_mutex);
    remove_pagetable(start, end, false);
    + mutex_unlock(&vmem_mutex);
    }

    void vmem_remove_mapping(unsigned long start, unsigned long size)
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-07-22 11:47    [W:3.117 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site