[libvirt] [PATCH] util: fix a bug found in sorting cache monitor results

Michal Privoznik mprivozn at redhat.com
Mon May 13 10:05:47 UTC 2019


On 5/10/19 5:21 PM, Wang Huaqiang wrote:
> From: Huaqiang <huaqiang.wang at intel.com>
> 
> The qsort element is a pointer of virResctrlMonitorStats, and
> the comparing function's arguments have a type of pointer of
> virResctrlMonitorStatsPtr.
> 
> Signed-off-by: Huaqiang <huaqiang.wang at intel.com>
> ---
>   src/util/virresctrl.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
> index b845f36..a190977 100644
> --- a/src/util/virresctrl.c
> +++ b/src/util/virresctrl.c
> @@ -2659,8 +2659,8 @@ static int
>   virResctrlMonitorStatsSorter(const void *a,
>                                const void *b)
>   {
> -    return ((virResctrlMonitorStatsPtr)a)->id
> -        - ((virResctrlMonitorStatsPtr)b)->id;
> +    return (*(virResctrlMonitorStatsPtr *)a)->id
> +        - (*(virResctrlMonitorStatsPtr *)b)->id;
>   }
>   
>   
> @@ -2758,7 +2758,7 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
>   
>       /* Sort in id's ascending order */
>       if (*nstats)
> -        qsort(*stats, *nstats, sizeof(*stat), virResctrlMonitorStatsSorter);
> +        qsort(*stats, *nstats, sizeof(stat), virResctrlMonitorStatsSorter);

Nice catch, but since we're touching this line, how about getting rid of 
@stat completely? I mean, I'd like to change it to sizeof(**stats) 
because that's how big one element is.

Any objections?

Also, I'll update the commit message a bit before pushing.

Michal




More information about the libvir-list mailing list