On Wed, Mar 30, 2016 at 1:06 AM, Juha-Matti Tilli <
juha-matti.ti...@nokia.com> wrote:

> Previously, the sysinfo cpuinfo parser assumed that every CPU model has
> an @ sign, after which comes the maximum CPU frequency. However, many
> environments such as virtualized KVM environments have CPU models not
> having @ sign such as "Intel Xeon E312xx (Sandy Bridge)".
>
> The result of the missing @ sign was that the ODP program crashed.
>
> The fix is to not assume the @ sign is always there. This may leave
> cpu_hz_max uninitialized, but then again this is already what is done if
> the string after @ does not conform to the pattern.
>
> Signed-off-by: Juha-Matti Tilli <juha-matti.ti...@nokia.com>
>

Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org>


> ---
>  platform/linux-generic/arch/x86/odp_sysinfo_parse.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
> b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
> index 2ef49e4..c1e05c0 100644
> --- a/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
> +++ b/platform/linux-generic/arch/x86/odp_sysinfo_parse.c
> @@ -24,10 +24,12 @@ int odp_cpuinfo_parser(FILE *file, odp_system_info_t
> *sysinfo)
>                                 sizeof(sysinfo->model_str[id]) - 1);
>
>                         pos = strchr(sysinfo->model_str[id], '@');
> -                       *(pos - 1) = '\0';
> -                       if (sscanf(pos, "@ %lfGHz", &ghz) == 1) {
> -                               hz = (uint64_t)(ghz * 1000000000.0);
> -                               sysinfo->cpu_hz_max[id] = hz;
> +                       if (pos) {
> +                               *(pos - 1) = '\0';
> +                               if (sscanf(pos, "@ %lfGHz", &ghz) == 1) {
> +                                       hz = (uint64_t)(ghz *
> 1000000000.0);
> +                                       sysinfo->cpu_hz_max[id] = hz;
> +                               }
>                         }
>                         id++;
>                 }
> --
> 1.8.3.1
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to