2016-10-17 10:05:08

by Matt Redfearn

[permalink] [raw]
Subject: [PATCH] MIPS: KASLR: Fix handling of NULL FDT

If platform code returns a NULL pointer to the FDT, initial_boot_params
will not get set to a valid pointer and attempting to find the /chosen
node in it will cause a NULL pointer dereference and the kernel to crash
immediately on startup - with no output to the console.

Fix this by checking that initial_boot_params is valid before using it.

Fixes: 405bc8fd12f5 ("MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE")
Cc: <[email protected]> # 4.7+
Signed-off-by: Matt Redfearn <[email protected]>
---

arch/mips/kernel/relocate.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c
index ca1cc30c0891..8810183840ca 100644
--- a/arch/mips/kernel/relocate.c
+++ b/arch/mips/kernel/relocate.c
@@ -200,6 +200,7 @@ static inline __init unsigned long get_random_boot(void)

#if defined(CONFIG_USE_OF)
/* Get any additional entropy passed in device tree */
+ if (initial_boot_params)
{
int node, len;
u64 *prop;
--
2.7.4


2016-10-17 10:10:04

by James Hogan

[permalink] [raw]
Subject: Re: [PATCH] MIPS: KASLR: Fix handling of NULL FDT

Hi Matt,

On Mon, Oct 17, 2016 at 11:04:54AM +0100, Matt Redfearn wrote:
> If platform code returns a NULL pointer to the FDT, initial_boot_params
> will not get set to a valid pointer and attempting to find the /chosen
> node in it will cause a NULL pointer dereference and the kernel to crash
> immediately on startup - with no output to the console.
>
> Fix this by checking that initial_boot_params is valid before using it.
>
> Fixes: 405bc8fd12f5 ("MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE")
> Cc: <[email protected]> # 4.7+
> Signed-off-by: Matt Redfearn <[email protected]>
> ---
>
> arch/mips/kernel/relocate.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c
> index ca1cc30c0891..8810183840ca 100644
> --- a/arch/mips/kernel/relocate.c
> +++ b/arch/mips/kernel/relocate.c
> @@ -200,6 +200,7 @@ static inline __init unsigned long get_random_boot(void)
>
> #if defined(CONFIG_USE_OF)
> /* Get any additional entropy passed in device tree */
> + if (initial_boot_params)
> {

The open brace should be on the same line as the if really.

Cheers
James

> int node, len;
> u64 *prop;
> --
> 2.7.4
>
>


Attachments:
(No filename) (1.19 kB)
signature.asc (801.00 B)
Digital signature
Download all attachments

2016-10-17 13:48:07

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH] MIPS: KASLR: Fix handling of NULL FDT

Hello.

On 10/17/2016 01:04 PM, Matt Redfearn wrote:

> If platform code returns a NULL pointer to the FDT, initial_boot_params
> will not get set to a valid pointer and attempting to find the /chosen
> node in it will cause a NULL pointer dereference and the kernel to crash
> immediately on startup - with no output to the console.
>
> Fix this by checking that initial_boot_params is valid before using it.
>
> Fixes: 405bc8fd12f5 ("MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE")
> Cc: <[email protected]> # 4.7+
> Signed-off-by: Matt Redfearn <[email protected]>
> ---
>
> arch/mips/kernel/relocate.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c
> index ca1cc30c0891..8810183840ca 100644
> --- a/arch/mips/kernel/relocate.c
> +++ b/arch/mips/kernel/relocate.c
> @@ -200,6 +200,7 @@ static inline __init unsigned long get_random_boot(void)
>
> #if defined(CONFIG_USE_OF)
> /* Get any additional entropy passed in device tree */
> + if (initial_boot_params)
> {

CodingStyle: *if* and { should be on the same line.

[...]

MBR, Sergei