Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2516708yba; Mon, 6 May 2019 07:21:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqw1wawv0CUjWA9sRKU47I8wmfbrLauakWOsKBIX9YESM8/yNnRrI5Hb0NwVEg+tTmknIZrp X-Received: by 2002:a17:902:8f82:: with SMTP id z2mr33236431plo.51.1557152486911; Mon, 06 May 2019 07:21:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557152486; cv=none; d=google.com; s=arc-20160816; b=EwKyZyj5Zi9L148tzFERw3qRZfW+77kAOgYIC6jeE23drzm7v6I5vQjUawa4WBL+0j IOoHjyaP96C5i6F+wqXuRNMNpVUS7D9+cMJYrvY4p3RPF1SLkHIyLGAUtuJZBKqH+isx FOSmb9xvqR6UOZNMMbbIkaHHc+2DtmF0JpcYkdU6jOrVFSUOYf6TGKSjRjVuZ8tl39XN 7t9CSDIXxLid4jzb/vy3jkKf+g+iYKzcnUqDh6DVUAXmn5A69rcbrCpTbzq3S+Djq4Wb 8v22CJ4hTn+WbvOrlR2mU6cT2Ofg1oNDPMJPD/2b23hzmoOmfowD8F+mdBGeD4Q9JR3Z C6cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=qjpVlu0JNb8BZoTPQY/+lJhBCUQ0MV0Fx+CMtSKL6i0=; b=a8RLLQlUcAbD3nsfwxkS2YwaGSS5RF+L9jZGTjAcyUndh9mD0yDtCwkcKIm8TCH6ie n+aikGv68LMw6IfW6cEoNRPleVifakx1K9p65dCvPW2XVRmUj8fo+ftAoA1X4vzwTBsf 8QCAvW9L2l9PjQ4Q472pLC6hS0QNuwQCQV2QU2nSK9Uywl/nGSYh/2Oq9KfuLFJu/ZMy A3G+dxW8smTBeh2YD8f19nFRP244knKexOVZGKP2sH+aadBhL7hVGnUuJWnX3MEku466 +4mo3cdw6UyMxzPFiePDEBUo7cAIffqU+16TtpTvZE/AyTPab6HvH4wGBFoey6W0H4F+ Hf9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 126si14763794pgc.2.2019.05.06.07.21.10; Mon, 06 May 2019 07:21:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726220AbfEFOUE (ORCPT + 99 others); Mon, 6 May 2019 10:20:04 -0400 Received: from mx2.suse.de ([195.135.220.15]:38034 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726037AbfEFOUE (ORCPT ); Mon, 6 May 2019 10:20:04 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id EE89EAE18; Mon, 6 May 2019 14:20:02 +0000 (UTC) Date: Mon, 6 May 2019 16:20:01 +0200 From: Michal Hocko To: Zhiqiang Liu Cc: mike.kravetz@oracle.com, shenkai8@huawei.com, linfeilong@huawei.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, wangwang2@huawei.com, "Zhoukang (A)" , Mingfangsen , agl@us.ibm.com, nacc@us.ibm.com, Andrew Morton Subject: Re: [PATCH v2] mm/hugetlb: Don't put_page in lock of hugetlb_lock Message-ID: <20190506142001.GC31017@dhcp22.suse.cz> References: <12a693da-19c8-dd2c-ea6a-0a5dc9d2db27@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 06-05-19 22:06:38, Zhiqiang Liu wrote: > From: Kai Shen > > spinlock recursion happened when do LTP test: > #!/bin/bash > ./runltp -p -f hugetlb & > ./runltp -p -f hugetlb & > ./runltp -p -f hugetlb & > ./runltp -p -f hugetlb & > ./runltp -p -f hugetlb & > > The dtor returned by get_compound_page_dtor in __put_compound_page > may be the function of free_huge_page which will lock the hugetlb_lock, > so don't put_page in lock of hugetlb_lock. > > BUG: spinlock recursion on CPU#0, hugemmap05/1079 > lock: hugetlb_lock+0x0/0x18, .magic: dead4ead, .owner: hugemmap05/1079, .owner_cpu: 0 > Call trace: > dump_backtrace+0x0/0x198 > show_stack+0x24/0x30 > dump_stack+0xa4/0xcc > spin_dump+0x84/0xa8 > do_raw_spin_lock+0xd0/0x108 > _raw_spin_lock+0x20/0x30 > free_huge_page+0x9c/0x260 > __put_compound_page+0x44/0x50 > __put_page+0x2c/0x60 > alloc_surplus_huge_page.constprop.19+0xf0/0x140 > hugetlb_acct_memory+0x104/0x378 > hugetlb_reserve_pages+0xe0/0x250 > hugetlbfs_file_mmap+0xc0/0x140 > mmap_region+0x3e8/0x5b0 > do_mmap+0x280/0x460 > vm_mmap_pgoff+0xf4/0x128 > ksys_mmap_pgoff+0xb4/0x258 > __arm64_sys_mmap+0x34/0x48 > el0_svc_common+0x78/0x130 > el0_svc_handler+0x38/0x78 > el0_svc+0x8/0xc > > Fixes: 9980d744a0 ("mm, hugetlb: get rid of surplus page accounting tricks") > Signed-off-by: Kai Shen > Signed-off-by: Feilong Lin > Reported-by: Wang Wang > Acked-by: Michal Hocko > --- > v1->v2: add Acked-by: Michal Hocko A new version for single ack is usually an overkill and only makes the situation more confusing. You have also didn't add Cc: stable as suggested during the review. That part is arguably more important. You also haven't CCed Andrew (now done) and your patch will not get merged without him applying it. Anyway, let's wait for Andrew to pick this patch up. > > mm/hugetlb.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 6cdc7b2..c1e7b81 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -1574,8 +1574,9 @@ static struct page *alloc_surplus_huge_page(struct hstate *h, gfp_t gfp_mask, > */ > if (h->surplus_huge_pages >= h->nr_overcommit_huge_pages) { > SetPageHugeTemporary(page); > + spin_unlock(&hugetlb_lock); > put_page(page); > - page = NULL; > + return NULL; > } else { > h->surplus_huge_pages++; > h->surplus_huge_pages_node[page_to_nid(page)]++; > -- > 1.8.3.1 > -- Michal Hocko SUSE Labs