|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/cpuidle: prevent out of bounds array access
On 22/05/15 13:48, Jan Beulich wrote:
> ... resulting from fbeef5570c ("x86/cpuidle: get accurate C0 value with
> xenpm tool").
>
> Reported-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
This appears to fix the issue.
However, looking at the other cases which play the same games, 0 is used
in preference to -1, given a zero last_state. It would seem logical to
follow suit here (although it is just a debugkey so I am not overly fussed).
~Andrew
>
> --- a/xen/arch/x86/acpi/cpu_idle.c
> +++ b/xen/arch/x86/acpi/cpu_idle.c
> @@ -279,7 +279,7 @@ static void print_acpi_power(
> uint64_t usage[ACPI_PROCESSOR_MAX_POWER] = { 0 };
> uint64_t res_tick[ACPI_PROCESSOR_MAX_POWER] = { 0 };
> unsigned int i;
> - u8 last_state_idx;
> + signed int last_state_idx;
>
> printk("==cpu%d==\n", cpu);
> last_state_idx = power->last_state ? power->last_state->idx : -1;
> @@ -298,8 +298,12 @@ static void print_acpi_power(
> last_state_update_tick = power->last_state_update_tick;
> spin_unlock_irq(&power->stat_lock);
>
> - res_tick[last_state_idx] += ticks_elapsed(last_state_update_tick,
> current_tick);
> - usage[last_state_idx]++;
> + if ( last_state_idx >= 0 )
> + {
> + res_tick[last_state_idx] += ticks_elapsed(last_state_update_tick,
> + current_tick);
> + usage[last_state_idx]++;
> + }
>
> for ( i = 1; i < power->count; i++ )
> {
>
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |