lkml.org 
[lkml]   [2021]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 26/35] mm, slub: only disable irq with spin_lock in __unfreeze_partials()
    Date
    __unfreeze_partials() no longer needs to have irqs disabled, except for making
    the spin_lock operations irq-safe, so convert the spin_locks operations and
    remove the separate irq handling.

    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    ---
    mm/slub.c | 12 ++++--------
    1 file changed, 4 insertions(+), 8 deletions(-)

    diff --git a/mm/slub.c b/mm/slub.c
    index c8637150bf28..b8581a9b58cc 100644
    --- a/mm/slub.c
    +++ b/mm/slub.c
    @@ -2335,9 +2335,7 @@ static void __unfreeze_partials(struct kmem_cache *s, struct page *partial_page)
    {
    struct kmem_cache_node *n = NULL, *n2 = NULL;
    struct page *page, *discard_page = NULL;
    - unsigned long flags;
    -
    - local_irq_save(flags);
    + unsigned long flags = 0;

    while (partial_page) {
    struct page new;
    @@ -2349,10 +2347,10 @@ static void __unfreeze_partials(struct kmem_cache *s, struct page *partial_page)
    n2 = get_node(s, page_to_nid(page));
    if (n != n2) {
    if (n)
    - spin_unlock(&n->list_lock);
    + spin_unlock_irqrestore(&n->list_lock, flags);

    n = n2;
    - spin_lock(&n->list_lock);
    + spin_lock_irqsave(&n->list_lock, flags);
    }

    do {
    @@ -2381,9 +2379,7 @@ static void __unfreeze_partials(struct kmem_cache *s, struct page *partial_page)
    }

    if (n)
    - spin_unlock(&n->list_lock);
    -
    - local_irq_restore(flags);
    + spin_unlock_irqrestore(&n->list_lock, flags);

    while (discard_page) {
    page = discard_page;
    --
    2.32.0
    \
     
     \ /
      Last update: 2021-08-05 17:25    [W:4.241 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site