On 05/04/2017 04:41 PM, Daniel P. Berrange wrote:
On Thu, May 04, 2017 at 04:32:50PM +0200, Michal Privoznik wrote:
> After bdcf6e481 there is a crasher in libvirt. The commit assumes
> that priv->perf is always set. That is not true. For inactive
> domains, the priv->perf is not allocated as it is set in
> qemuProcessLaunch(). Now, usually we differentiate between
> accesses to inactive and active definition and it works just
> fine. Except for 'domstats'. There priv->perf is accessed without
> prior check for domain inactivity. While we could check for that,
> more robust solution is to make virPerfEventIsEnabled() accept
> NULL.
>
> How to reproduce:
> 1) ensure you have at least one inactive domain
> 2) virsh domstats
>
> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
> ---
> src/util/virperf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/util/virperf.c b/src/util/virperf.c
> index fa5b6cc..2c832b3 100644
> --- a/src/util/virperf.c
> +++ b/src/util/virperf.c
> @@ -297,7 +297,7 @@ virPerfEventDisable(virPerfPtr perf,
> bool virPerfEventIsEnabled(virPerfPtr perf,
> virPerfEventType type)
> {
> - return perf->events[type].enabled;
> + return perf && perf->events[type].enabled;
> }
ACK
Thanks, pushed.
Michal