2013-08-30 16:06:44

by Maxime Bizon

[permalink] [raw]
Subject: [PATCH] pstore/ram: (really) fix undefined usage of rounddown_pow_of_two

Previous attempt to fix was b042e47491ba5f487601b5141a3f1d8582304170

Suggested use of is_power_of_2() was bogus because is_power_of_2(0) is
false (documented behaviour).

Signed-off-by: Maxime Bizon <[email protected]>
---
fs/pstore/ram.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index a6119f9..03325bc 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -400,11 +400,11 @@ static int ramoops_probe(struct platform_device *pdev)
goto fail_out;
}

- if (!is_power_of_2(pdata->record_size))
+ if (pdata->record_size && !is_power_of_2(pdata->record_size))
pdata->record_size = rounddown_pow_of_two(pdata->record_size);
- if (!is_power_of_2(pdata->console_size))
+ if (pdata->console_size && !is_power_of_2(pdata->console_size))
pdata->console_size = rounddown_pow_of_two(pdata->console_size);
- if (!is_power_of_2(pdata->ftrace_size))
+ if (pdata->ftrace_size && !is_power_of_2(pdata->ftrace_size))
pdata->ftrace_size = rounddown_pow_of_two(pdata->ftrace_size);

cxt->dump_read_cnt = 0;
--
1.7.9.5


--
Maxime


2013-08-30 18:15:51

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH] pstore/ram: (really) fix undefined usage of rounddown_pow_of_two

On Fri, Aug 30, 2013 at 9:06 AM, Maxime Bizon <[email protected]> wrote:
> Previous attempt to fix was b042e47491ba5f487601b5141a3f1d8582304170
>
> Suggested use of is_power_of_2() was bogus because is_power_of_2(0) is
> false (documented behaviour).
>
> Signed-off-by: Maxime Bizon <[email protected]>

Yes, excellent point. :)

Acked-by: Kees Cook <[email protected]>

Thanks,

-Kees

> ---
> fs/pstore/ram.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
> index a6119f9..03325bc 100644
> --- a/fs/pstore/ram.c
> +++ b/fs/pstore/ram.c
> @@ -400,11 +400,11 @@ static int ramoops_probe(struct platform_device *pdev)
> goto fail_out;
> }
>
> - if (!is_power_of_2(pdata->record_size))
> + if (pdata->record_size && !is_power_of_2(pdata->record_size))
> pdata->record_size = rounddown_pow_of_two(pdata->record_size);
> - if (!is_power_of_2(pdata->console_size))
> + if (pdata->console_size && !is_power_of_2(pdata->console_size))
> pdata->console_size = rounddown_pow_of_two(pdata->console_size);
> - if (!is_power_of_2(pdata->ftrace_size))
> + if (pdata->ftrace_size && !is_power_of_2(pdata->ftrace_size))
> pdata->ftrace_size = rounddown_pow_of_two(pdata->ftrace_size);
>
> cxt->dump_read_cnt = 0;
> --
> 1.7.9.5
>
>
> --
> Maxime
>
>



--
Kees Cook
Chrome OS Security

2013-08-30 23:05:57

by Tony Luck

[permalink] [raw]
Subject: RE: [PATCH] pstore/ram: (really) fix undefined usage of rounddown_pow_of_two

>> Previous attempt to fix was b042e47491ba5f487601b5141a3f1d8582304170
>>
>> Suggested use of is_power_of_2() was bogus because is_power_of_2(0) is
>> false (documented behaviour).
>>
>> Signed-off-by: Maxime Bizon <[email protected]>
>
> Yes, excellent point. :)
>
> Acked-by: Kees Cook <[email protected]>

Applied. Thanks.

-Tony