[libvirt] [PATCH 1/5] virDomainNumaGetNodeDistance: Fix input arguments validation
John Ferlan
jferlan at redhat.com
Tue Nov 21 23:22:13 UTC 2017
On 11/14/2017 09:47 AM, Michal Privoznik wrote:
> There's no point in checking if numa->mem_nodes[node].ndistances
> is set if we check for numa->mem_nodes[node].distances. However,
> it makes sense to check if the sibling node caller passed falls
> within boundaries.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/conf/numa_conf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
> index 7bba4120b..5f0b3f9ed 100644
> --- a/src/conf/numa_conf.c
> +++ b/src/conf/numa_conf.c
> @@ -1154,7 +1154,7 @@ virDomainNumaGetNodeDistance(virDomainNumaPtr numa,
> */
> if (!distances ||
> !distances[cellid].value ||
> - !numa->mem_nodes[node].ndistances)
> + node >= numa->nmem_nodes)
If @distances can only be set if "node < numa->nmem_nodes", then how
could "node >= numa->nmem_nodes" ever be true and @distances be non
NULL? IOW: I see no need for the check... This former condition also
trips across my "favorite" condition check of "if !intValue"
substituting for "if intValue == 0" <sigh>.
BTW: I do think there is a memory leak @distances entries are not
VIR_FREE'd in virDomainNumaFree. I was looking for instances where
ndistances maybe have been forgotten to be set to 0 even though
distances was cleared. I can send a patch or you can for that if you
want - IDC... There's a couple of other cleanups I'd like to see w/r/t
using (!*ndistances) and how the @*distance are set to ldist/rdist
outside of the if condition that allocated, but those are type A type
things ;-)
John
> return (node == cellid) ? LOCAL_DISTANCE : REMOTE_DISTANCE;
>
> return distances[cellid].value;
>
More information about the libvir-list
mailing list