From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2CE78C5DF62 for ; Wed, 6 Nov 2019 05:16:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DF793206A3 for ; Wed, 6 Nov 2019 05:16:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573017410; bh=2192o0EalrK7xnxZaWr2apSoUfecLosbzkrrzZmsLuo=; h=Date:From:To:Subject:List-ID:From; b=IPkq9+YLtKLD11eaCqj/TuD63vJbL1ypND4RhTgrq7vgPSFSPUEDsj7SxJ7U34es3 LmH++hdpWX/pO6YRxrOTvfs20DUXTrr1/pQk63TOEgKi2lfKRnkQUA/RT/CzIsIF+G Blz42GjrhGsb6nwjVrtBo6d92de41kCYN1XH6BZ8= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725948AbfKFFQu (ORCPT ); Wed, 6 Nov 2019 00:16:50 -0500 Received: from mail.kernel.org ([198.145.29.99]:42870 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725379AbfKFFQu (ORCPT ); Wed, 6 Nov 2019 00:16:50 -0500 Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5E07521929; Wed, 6 Nov 2019 05:16:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573017409; bh=2192o0EalrK7xnxZaWr2apSoUfecLosbzkrrzZmsLuo=; h=Date:From:To:Subject:From; b=qu4EO8tysU1sVCgnyQobZXDSGbf5Kbhb1WXByJqVNJv99l7UdPAJwkBb0jEQgdOpN WiTiN0nCewepzq3swOOToFuFPikNwEEGyNtIP90wjptko1s3wKwnnsl1qeeHir2RX0 pKBwAk/HVz0BKoAXPjWjWBuzobdho0+ekqG/Ja7k= Date: Tue, 05 Nov 2019 21:16:48 -0800 From: akpm@linux-foundation.org To: aarcange@redhat.com, akpm@linux-foundation.org, bp@alien8.de, daniel.vetter@intel.com, hpa@zytor.com, ira.weiny@intel.com, jgg@mellanox.com, jglisse@redhat.com, kirill.shutemov@linux.intel.com, linux-mm@kvack.org, mingo@redhat.com, mm-commits@vger.kernel.org, rcampbell@nvidia.com, stable@vger.kernel.org, tglx@linutronix.de, torvalds@linux-foundation.org, ville.syrjala@linux.intel.com Subject: [patch 09/17] mm/khugepaged: fix might_sleep() warn with CONFIG_HIGHPTE=y Message-ID: <20191106051648.GjLXleKr-%akpm@linux-foundation.org> User-Agent: s-nail v14.8.16 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org =46rom: Ville Syrj=C3=A4l=C3=A4 Subject: mm/khugepaged: fix might_sleep() warn with CONFIG_HIGHPTE=3Dy I got some khugepaged spew on a 32bit x86: [ 217.490026] BUG: sleeping function called from invalid context at includ= e/linux/mmu_notifier.h:346 [ 217.492826] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 25, n= ame: khugepaged [ 217.495589] INFO: lockdep is turned off. [ 217.498371] CPU: 1 PID: 25 Comm: khugepaged Not tainted 5.4.0-rc5-elk+ #= 206 [ 217.501233] Hardware name: System manufacturer P5Q-EM/P5Q-EM, BIOS 2203 = 07/08/2009 [ 217.501697] Call Trace: [ 217.501697] dump_stack+0x66/0x8e [ 217.501697] ___might_sleep.cold.96+0x95/0xa6 [ 217.501697] __might_sleep+0x2e/0x80 [ 217.501697] collapse_huge_page.isra.51+0x5ac/0x1360 [ 217.501697] ? __alloc_pages_nodemask+0xec/0xf80 [ 217.501697] ? __alloc_pages_nodemask+0x191/0xf80 [ 217.501697] ? trace_hardirqs_on+0x4a/0xf0 [ 217.501697] khugepaged+0x9a9/0x20f0 [ 217.501697] ? _raw_spin_unlock+0x21/0x30 [ 217.501697] ? trace_hardirqs_on+0x4a/0xf0 [ 217.501697] ? wait_woken+0xa0/0xa0 [ 217.501697] kthread+0xf5/0x110 [ 217.501697] ? collapse_pte_mapped_thp+0x3b0/0x3b0 [ 217.501697] ? kthread_create_worker_on_cpu+0x20/0x20 [ 217.501697] ret_from_fork+0x2e/0x38 Looks like it's due to CONFIG_HIGHPTE=3Dy pte_offset_map()->kmap_atomic() vs. mmu_notifier_invalidate_range_start(). Let's do the naive approach and just reorder the two operations. Link: http://lkml.kernel.org/r/20191029201513.GG1208@intel.com Fixes: 810e24e009cf71 ("mm/mmu_notifiers: annotate with might_sleep()") Signed-off-by: Ville Syrjl Reviewed-by: Andrew Morton Acked-by: Kirill A. Shutemov Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: "H. Peter Anvin" Cc: J=C3=A9r=C3=B4me Glisse Cc: Ralph Campbell Cc: Ira Weiny Cc: Jason Gunthorpe Cc: Daniel Vetter Cc: Andrea Arcangeli Cc: Signed-off-by: Andrew Morton --- mm/khugepaged.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/mm/khugepaged.c~khugepaged-might_sleep-warn-due-to-config_highpte=3Dy +++ a/mm/khugepaged.c @@ -1028,12 +1028,13 @@ static void collapse_huge_page(struct mm =20 anon_vma_lock_write(vma->anon_vma); =20 - pte =3D pte_offset_map(pmd, address); - pte_ptl =3D pte_lockptr(mm, pmd); - mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, NULL, mm, address, address + HPAGE_PMD_SIZE); mmu_notifier_invalidate_range_start(&range); + + pte =3D pte_offset_map(pmd, address); + pte_ptl =3D pte_lockptr(mm, pmd); + pmd_ptl =3D pmd_lock(mm, pmd); /* probably unnecessary */ /* * After this gup_fast can't run anymore. This also removes _