From: <laurentiu.tudor@nxp.com> To: <gregkh@linuxfoundation.org> Cc: <devel@driverdev.osuosl.org>, <linux-kernel@vger.kernel.org>, <agraf@suse.de>, <arnd@arndb.de>, <ioana.ciornei@nxp.com>, <ruxandra.radulescu@nxp.com>, <bharat.bhushan@nxp.com>, <stuart.yoder@nxp.com>, <catalin.horghidan@nxp.com>, <leoyang.li@nxp.com>, <roy.pledge@nxp.com>, <linux-arm-kernel@lists.infradead.org>, Laurentiu Tudor <laurentiu.tudor@nxp.com> Subject: [PATCH] powerpc: booke: fix boot crash due to null hugepd Date: Tue, 16 May 2017 09:47:52 -0500 [thread overview] Message-ID: <20170516144752.8444-1-laurentiu.tudor@nxp.com> (raw) From: Laurentiu Tudor <laurentiu.tudor@nxp.com> On 32-bit book-e machines, hugepd_ok() does not take into account null hugepd values, causing this crash at boot: Unable to handle kernel paging request for data at address 0x80000000 Faulting instruction address: 0xc00182a8 Oops: Kernel access of bad area, sig: 11 [#1] SMP NR_CPUS=24 CoreNet Generic Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 4.10.0-rc8-00016-g69b1f87 #11 task: e5050000 task.stack: e5058000 NIP: c00182a8 LR: c001829c CTR: 00007ffe REGS: e5059c50 TRAP: 0300 Tainted: G W (4.10.0-rc8-00016-g69b1f87) MSR: 00021002 <CE,ME> CR: 88428e82 XER: 00000000 DEAR: 80000000 ESR: 00000000 GPR00: c0107510 e5059d00 e5050000 80000000 bffffff1 e5059d0c e5059d08 00002017 GPR08: 00000000 00000000 00000000 00000000 28428e82 00000000 c00027d0 00000000 GPR16: 00000000 00000000 88a28e82 20000000 48422e82 00000000 88a28e84 dd004000 GPR24: e5059e38 00000000 00000000 bffffff1 dd004000 00000001 00029002 bffffff1 NIP [c00182a8] follow_huge_addr+0x38/0xf0 LR [c001829c] follow_huge_addr+0x2c/0xf0 Call Trace: [e5059d00] [e5059d00] 0xe5059d00 (unreliable) [e5059d20] [c0107510] follow_page_mask+0x40/0x3c0 [e5059d80] [c0107958] __get_user_pages+0xc8/0x420 [e5059de0] [c010817c] get_user_pages_remote+0x8c/0x230 [e5059e30] [c013f170] copy_strings+0x110/0x3a0 [e5059ea0] [c013f42c] copy_strings_kernel+0x2c/0x50 [e5059ec0] [c0141324] do_execveat_common+0x474/0x620 [e5059f10] [c01414fc] do_execve+0x2c/0x40 [e5059f20] [c0001f68] try_to_run_init_process+0x18/0x60 [e5059f30] [c000289c] kernel_init+0xcc/0x120 [e5059f40] [c000f1e8] ret_from_kernel_thread+0x5c/0x64 Instruction dump: bfc10018 7c9f2378 90010024 7fc000a6 7c000146 80630020 38a1000c 38c10008 4bfff869 2c030000 41c20090 81210008 <81430000> 81630004 3860ffea 2f890000 ---[ end trace 4bf94e15fd9fa824 ]--- This impacts all nxp (ex-freescale) 32-bit booke platforms. Fixes: 20717e1ff526 ("powerpc/mm: Fix little-endian 4K hugetlb") Reported-by: Madalin-Cristian Bucur <madalin.bucur@nxp.com> Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> --- arch/powerpc/include/asm/nohash/pgtable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h index 0cd8a38..e5805ad 100644 --- a/arch/powerpc/include/asm/nohash/pgtable.h +++ b/arch/powerpc/include/asm/nohash/pgtable.h @@ -230,7 +230,7 @@ static inline int hugepd_ok(hugepd_t hpd) return ((hpd_val(hpd) & 0x4) != 0); #else /* We clear the top bit to indicate hugepd */ - return ((hpd_val(hpd) & PD_HUGE) == 0); + return (hpd_val(hpd) && (hpd_val(hpd) & PD_HUGE) == 0); #endif } -- 1.8.3.1
WARNING: multiple messages have this Message-ID (diff)
From: laurentiu.tudor@nxp.com (laurentiu.tudor at nxp.com) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH] powerpc: booke: fix boot crash due to null hugepd Date: Tue, 16 May 2017 09:47:52 -0500 [thread overview] Message-ID: <20170516144752.8444-1-laurentiu.tudor@nxp.com> (raw) From: Laurentiu Tudor <laurentiu.tudor@nxp.com> On 32-bit book-e machines, hugepd_ok() does not take into account null hugepd values, causing this crash at boot: Unable to handle kernel paging request for data at address 0x80000000 Faulting instruction address: 0xc00182a8 Oops: Kernel access of bad area, sig: 11 [#1] SMP NR_CPUS=24 CoreNet Generic Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 4.10.0-rc8-00016-g69b1f87 #11 task: e5050000 task.stack: e5058000 NIP: c00182a8 LR: c001829c CTR: 00007ffe REGS: e5059c50 TRAP: 0300 Tainted: G W (4.10.0-rc8-00016-g69b1f87) MSR: 00021002 <CE,ME> CR: 88428e82 XER: 00000000 DEAR: 80000000 ESR: 00000000 GPR00: c0107510 e5059d00 e5050000 80000000 bffffff1 e5059d0c e5059d08 00002017 GPR08: 00000000 00000000 00000000 00000000 28428e82 00000000 c00027d0 00000000 GPR16: 00000000 00000000 88a28e82 20000000 48422e82 00000000 88a28e84 dd004000 GPR24: e5059e38 00000000 00000000 bffffff1 dd004000 00000001 00029002 bffffff1 NIP [c00182a8] follow_huge_addr+0x38/0xf0 LR [c001829c] follow_huge_addr+0x2c/0xf0 Call Trace: [e5059d00] [e5059d00] 0xe5059d00 (unreliable) [e5059d20] [c0107510] follow_page_mask+0x40/0x3c0 [e5059d80] [c0107958] __get_user_pages+0xc8/0x420 [e5059de0] [c010817c] get_user_pages_remote+0x8c/0x230 [e5059e30] [c013f170] copy_strings+0x110/0x3a0 [e5059ea0] [c013f42c] copy_strings_kernel+0x2c/0x50 [e5059ec0] [c0141324] do_execveat_common+0x474/0x620 [e5059f10] [c01414fc] do_execve+0x2c/0x40 [e5059f20] [c0001f68] try_to_run_init_process+0x18/0x60 [e5059f30] [c000289c] kernel_init+0xcc/0x120 [e5059f40] [c000f1e8] ret_from_kernel_thread+0x5c/0x64 Instruction dump: bfc10018 7c9f2378 90010024 7fc000a6 7c000146 80630020 38a1000c 38c10008 4bfff869 2c030000 41c20090 81210008 <81430000> 81630004 3860ffea 2f890000 ---[ end trace 4bf94e15fd9fa824 ]--- This impacts all nxp (ex-freescale) 32-bit booke platforms. Fixes: 20717e1ff526 ("powerpc/mm: Fix little-endian 4K hugetlb") Reported-by: Madalin-Cristian Bucur <madalin.bucur@nxp.com> Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> --- arch/powerpc/include/asm/nohash/pgtable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h index 0cd8a38..e5805ad 100644 --- a/arch/powerpc/include/asm/nohash/pgtable.h +++ b/arch/powerpc/include/asm/nohash/pgtable.h @@ -230,7 +230,7 @@ static inline int hugepd_ok(hugepd_t hpd) return ((hpd_val(hpd) & 0x4) != 0); #else /* We clear the top bit to indicate hugepd */ - return ((hpd_val(hpd) & PD_HUGE) == 0); + return (hpd_val(hpd) && (hpd_val(hpd) & PD_HUGE) == 0); #endif } -- 1.8.3.1
next reply other threads:[~2017-05-16 14:47 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-05-16 14:47 laurentiu.tudor [this message] 2017-05-16 14:47 ` [PATCH] powerpc: booke: fix boot crash due to null hugepd laurentiu.tudor at nxp.com 2017-05-17 9:15 ` Greg KH 2017-05-17 9:15 ` Greg KH 2017-05-17 9:30 ` Laurentiu Tudor 2017-05-17 9:30 ` Laurentiu Tudor -- strict thread matches above, loose matches on Subject: below -- 2017-02-16 15:11 laurentiu.tudor 2017-02-17 10:08 ` Scott Wood 2017-02-17 10:18 ` Laurentiu Tudor 2017-02-17 12:18 ` Aneesh Kumar K.V 2017-02-17 12:37 ` Laurentiu Tudor 2017-02-28 14:55 ` Laurentiu Tudor 2017-02-28 22:46 ` Scott Wood 2017-03-01 11:09 ` Michael Ellerman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170516144752.8444-1-laurentiu.tudor@nxp.com \ --to=laurentiu.tudor@nxp.com \ --cc=agraf@suse.de \ --cc=arnd@arndb.de \ --cc=bharat.bhushan@nxp.com \ --cc=catalin.horghidan@nxp.com \ --cc=devel@driverdev.osuosl.org \ --cc=gregkh@linuxfoundation.org \ --cc=ioana.ciornei@nxp.com \ --cc=leoyang.li@nxp.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=roy.pledge@nxp.com \ --cc=ruxandra.radulescu@nxp.com \ --cc=stuart.yoder@nxp.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.