Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp473976pxj; Thu, 10 Jun 2021 05:29:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx/ohfuiWdg1LCxR1w0NyDXJQp0lPdJHrN6WgLiI6+TigZc3KL0+LS79DU5GKWEXL+QfsR4 X-Received: by 2002:a17:906:b748:: with SMTP id fx8mr4396403ejb.477.1623328181263; Thu, 10 Jun 2021 05:29:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623328181; cv=none; d=google.com; s=arc-20160816; b=ZgDuARwisW8F5FG8AZ33Kdlqrju2mybPqmLpx3L/8oDHMIr9NfHTotMSpRISdsEsi5 aIt3sSySyzAfwVM7xGLf8LkqSJlxkj1dzrg2ca1b8qTBeBjJj6adPCH1HHasLUFK67Yu hxXreSJmIH7qBABwiN8PMgJcjg+15RA3sQNbGv168KqoKSSXPJ/kAS7p61D3GIUQe816 Ge2njPXbSRoIDLDuNTJhj12k0YHRgfVg7VYFf/1SZVNQnn99Dc9IX68uWYIKNGEbVTo7 s3R9/E9wq+LYD6XbFIijjcbN/0a1NbWK8pHP+Y+wb7YLVNlSGdz9h2e+Tj/bnuEanj6B 95ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=qPBTG0ftAEtBqX4estKksRIxyJal39WhG/vIcU0lYEs=; b=hLWDwSUcRNLvtfcTy6PkGGl67yyynV59WRsF6IHPja0s6XFEn/dyHVnSj8yXmYlKrk yazglgwcX5HA/7fSvIUngb/BMpOQMT5gSuxxrSCvKE8eMWrtEgJAVhWxS3J4bT+cuY9j ywvsT50D4M9LdLuVwnIXHLmBI9wiu2hZjJ6Z73lEvPt+ScHW9B4yGPj5pdPcdOJWMutC TJPPEgZRd6l5OJVWm5P72toStxutOK73bzLbG6d0UCEZFgagzl19i6ZTF77GPpP+ThaY 4PRlJLvwJrXC0fWNbrEqG6LW+pgqZ08VxzT1SlZKzJxaYxTHHDvESk3KdmzZp4f+NXe3 RJLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id yc22si2322013ejb.277.2021.06.10.05.29.18; Thu, 10 Jun 2021 05:29:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230416AbhFJM3X (ORCPT + 99 others); Thu, 10 Jun 2021 08:29:23 -0400 Received: from szxga02-in.huawei.com ([45.249.212.188]:3945 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230421AbhFJM3N (ORCPT ); Thu, 10 Jun 2021 08:29:13 -0400 Received: from dggemv711-chm.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4G137H1pNQz6tsD; Thu, 10 Jun 2021 20:24:11 +0800 (CST) Received: from dggpemm500001.china.huawei.com (7.185.36.107) by dggemv711-chm.china.huawei.com (10.1.198.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 10 Jun 2021 20:27:15 +0800 Received: from localhost.localdomain.localdomain (10.175.113.25) by dggpemm500001.china.huawei.com (7.185.36.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 10 Jun 2021 20:27:08 +0800 From: Kefeng Wang To: Russell King , CC: Catalin Marinas , , Andrew Morton , Jungseung Lee , Will Deacon , Kefeng Wang Subject: [PATCH v3 0/6] ARM: mm: cleanup page fault and fix pxn process issue Date: Thu, 10 Jun 2021 20:35:50 +0800 Message-ID: <20210610123556.171328-1-wangkefeng.wang@huawei.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.113.25] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The patchset cleanup ARM page fault handle to improve readability, fix the page table entries printing and fix infinite loop in the page fault handler when user code execution with privilege mode if ARM_LPAE enabled. echo EXEC_USERSPACE > /sys/kernel/debug/provoke-crash/DIRECT Before: ------- lkdtm: Performing direct entry EXEC_USERSPACE lkdtm: attempting ok execution at c0717674 lkdtm: attempting bad execution at b6fd6000 rcu: INFO: rcu_sched self-detected stall on CPU rcu: 1-....: (2100 ticks this GP) idle=7e2/1/0x40000002 softirq=136/136 fqs=1050 (t=2101 jiffies g=-1027 q=16) NMI backtrace for cpu 1 CPU: 1 PID: 57 Comm: sh Not tainted 5.13.0-rc4 #126 ... r9:c1f04000 r8:c0e04cc8 r7:c1f05cbc r6:ffffffff r5:60000113 r4:c03724f8 [] (handle_mm_fault) from [] (do_page_fault+0x1a0/0x3d8) r10:c180ec48 r9:c11b1aa0 r8:c11b1ac0 r7:8000020f r6:b6fd6000 r5:c180ec00 r4:c1f05df8 [] (do_page_fault) from [] (do_PrefetchAbort+0x40/0x94) r10:0000000f r9:c1f04000 r8:c1f05df8 r7:b6fd6000 r6:c0215154 r5:0000020f r4:c0e09b18 [] (do_PrefetchAbort) from [] (__pabt_svc+0x50/0x80) Exception stack(0xc1f05df8 to 0xc1f05e40) 5de0: 0000002b 2e34f000 5e00: 3ee77213 3ee77213 b6fd6000 c0b51020 c140d000 c0a4b5dc 0000000f c1f05f58 5e20: 0000000f c1f05e64 c1f05d88 c1f05e48 c0717a6c b6fd6000 60000013 ffffffff r8:0000000f r7:c1f05e2c r6:ffffffff r5:60000013 r4:b6fd6000 [] (lkdtm_EXEC_USERSPACE) from [] (lkdtm_do_action+0x48/0x4c) r4:00000027 ... After: ------- lkdtm: Performing direct entry EXEC_USERSPACE lkdtm: attempting ok execution at c07176d4 lkdtm: attempting bad execution at b6f57000 8<--- cut here --- Unable to handle kernel execution of memory at virtual address b6f57000 pgd = 81e20f00 [b6f57000] *pgd=81e23003, *pmd=13ee9c003 Internal error: Oops: 8000020f [#1] SMP ARM Modules linked in: CPU: 0 PID: 57 Comm: sh Not tainted 5.13.0-rc4+ #127 Hardware name: ARM-Versatile Express PC is at 0xb6f57000 LR is at lkdtm_EXEC_USERSPACE+0xc4/0xd4 pc : [] lr : [] psr: 60000013 sp : c1f3de48 ip : c1f3dd88 fp : c1f3de64 r10: 0000000f r9 : c1f3df58 r8 : 0000000f r7 : c0a4b5dc r6 : c1f1d000 r5 : c0b51070 r4 :b6f57000 r3 : 7e62f7da r2 : 7e62f7da r1 : 2e330000 r0 :0000002b Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user ... v3: - drop the fix about page table printing - kill page table base print instead of printing the physical address - only die when permission fault both kernel-mode and user code execution with privilege mode - drop LPAE specific v2: - split patch into smaller changes suggested by Russell - fix page table printing in show_pte() - add new die_kernel_fault() helper - report "execution of user memory" when user code execution with privilege mode Kefeng Wang (6): ARM: mm: Rafactor the __do_page_fault() ARM: mm: Kill task_struct argument for __do_page_fault() ARM: mm: Cleanup access_error() ARM: mm: Kill page table base print in show_pte() ARM: mm: Provide die_kernel_fault() helper ARM: mm: Fix PXN process with LPAE feature arch/arm/mm/fault.c | 119 +++++++++++++++++++++++--------------------- arch/arm/mm/fault.h | 4 ++ 2 files changed, 67 insertions(+), 56 deletions(-) -- 2.26.2