From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 679B5C4345F for ; Wed, 24 Apr 2024 01:31:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rzRT3-0005Y6-2w; Tue, 23 Apr 2024 21:30:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rzRSy-0005Xq-3z for qemu-devel@nongnu.org; Tue, 23 Apr 2024 21:30:32 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rzRSv-00070N-2o for qemu-devel@nongnu.org; Tue, 23 Apr 2024 21:30:31 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-5bdbe2de25fso4970237a12.3 for ; Tue, 23 Apr 2024 18:28:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smartx-com.20230601.gappssmtp.com; s=20230601; t=1713922105; x=1714526905; darn=nongnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HvzGrA+pxrw/v+UCmdez8eqSK9SA32+kLNEJ0Eo9KI8=; b=gTTHKiu5aAGOVJZLguqWWqj6zV+zKS25oNBA8NOIAcR2bjjL40Nh6WoKEzujPMeS8H 0mUEvCpT6ypNVMzcE/ssIghBw/3rw5FDnBqYpRRoo6OvwfdtmPniSuo6f1rLGtJfJ1A0 bDTBPoqML1gGrQS4LNKfOUc4M/Jr4aXCmSYnVrppVhANtYE8TaPYbe5lYD76KrqbW7X/ OMoPtZSH04DtZ2p2VATNBS6tqT6D00QhTX+vzVGS6+vgHVbyoq7N/9ZJfjoRwoCmVru9 4KxDtnwUt4sMVsXNL9SUMn07cllOYaA3SDiL2L7JausD3e3zdB9lLBCBzs4YfhT2IU6S kpFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713922105; x=1714526905; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HvzGrA+pxrw/v+UCmdez8eqSK9SA32+kLNEJ0Eo9KI8=; b=lWggXvh27kQSYlFOQb3pNdrIOEc/NKUtkbGcC/bRsll/CYxcXz07qA9ZNCuZdqYVU0 giVp3eV6+i/vLTvkKtGnhsI7g4H4iGEiijH7wbVUM1HSqwI+fiPUc+7aubiy6iXIgw0B YLUVGRXOZvj76OLQRBmigeqF2KXmWPIqOdssoV4SWhJ/E1OGZiIFzqkVHjV2h0VSxraR /1ZYcC/tceLdv56BEyaNszhb3kpcxL52TrXNvI5GGAPF68+5VCPsQ828xplz1yZ0+63F zlMWHbRspC5JkxCqW3lqNl2ENTRMR94OmPhOFXj291ozAPzlotYzGLy8H6nfutDkI1XG lSPA== X-Forwarded-Encrypted: i=1; AJvYcCWVMu27QtbGESRHAoSyHebNStk9C3sJYKOT4RkYoqgJ2XNQdjJ+qd8K586PmIZoWs4/UvLxCAu7pxAr3QQVzf7EFqnAwT4= X-Gm-Message-State: AOJu0Yzw+tIyr6BGd4vtOUZgQvuui//eHpPjDGv0Vn6WQJagipGM/GPp Vsg7hLBFLCIB2dN2GsDumHndIwhF+8UkGz+OoABMIfz3MjuXIDf+podoVLVR8obdWtURvEWegVM bTVpU49t2/EpF1RIV5paPpUwR0e8toYefMF4jGg== X-Google-Smtp-Source: AGHT+IHtW1UzPZucOoQQ+MTQgrpXLmZczRDZNWSu2dj50IOaBLkC0NdKi6i42ply3TTi695rUzQSctc7XqFFfr3VU+g= X-Received: by 2002:a05:6a20:1044:b0:1a7:4b3f:a66c with SMTP id gt4-20020a056a20104400b001a74b3fa66cmr961078pzc.49.1713922104380; Tue, 23 Apr 2024 18:28:24 -0700 (PDT) MIME-Version: 1.0 References: <20240423091306.754432-1-mii@sfc.wide.ad.jp> <20240423091306.754432-2-mii@sfc.wide.ad.jp> In-Reply-To: From: Yong Huang Date: Wed, 24 Apr 2024 09:28:08 +0800 Message-ID: Subject: Re: [PATCH v2 1/1] migration/dirtyrate: Fix segmentation fault To: Peter Xu Cc: Masato Imai , qemu-devel@nongnu.org, Fabiano Rosas Content-Type: multipart/alternative; boundary="000000000000346eba0616cd96de" Received-SPF: none client-ip=2607:f8b0:4864:20::52e; envelope-from=yong.huang@smartx.com; helo=mail-pg1-x52e.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org --000000000000346eba0616cd96de Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 23, 2024 at 9:35=E2=80=AFPM Peter Xu wrote: > On Tue, Apr 23, 2024 at 09:13:08AM +0000, Masato Imai wrote: > > When the KVM acceleration parameter is not set, executing calc_dirty_ra= te > > with the -r or -b option results in a segmentation fault due to accessi= ng > > a null kvm_state pointer in the kvm_dirty_ring_enabled function. > > This commit adds a check for kvm_enabled to prevent segmentation faults= . > > > > Signed-off-by: Masato Imai > > --- > > migration/dirtyrate.c | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c > > index 1d2e85746f..2a7df52519 100644 > > --- a/migration/dirtyrate.c > > +++ b/migration/dirtyrate.c > > @@ -799,6 +799,13 @@ void qmp_calc_dirty_rate(int64_t calc_time, > > * dirty ring mode only works when kvm dirty ring is enabled. > > * on the contrary, dirty bitmap mode is not. > > */ > > + if (!kvm_enabled() && > > + (mode =3D=3D DIRTY_RATE_MEASURE_MODE_DIRTY_RING || > > + mode =3D=3D DIRTY_RATE_MEASURE_MODE_DIRTY_BITMAP)) { > > + error_setg(errp, "mode %s requires kvm to be enabled.", > > + DirtyRateMeasureMode_str(mode)); > > + return; > > + } > > Logically dirty bitmap should work with tcg. So the other option is to l= et > kvm_dirty_ring_enabled() check kvm_state too and return false if > kvm_state=3D=3DNULL? > Agree, better solution > > if (((mode =3D=3D DIRTY_RATE_MEASURE_MODE_DIRTY_RING) && > > !kvm_dirty_ring_enabled()) || > > ((mode =3D=3D DIRTY_RATE_MEASURE_MODE_DIRTY_BITMAP) && > > -- > > 2.34.1 > > > > -- > Peter Xu > > Thanks, Yong --=20 Best regards --000000000000346eba0616cd96de Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Tue, Apr 23, 20= 24 at 9:35=E2=80=AFPM Peter Xu <pet= erx@redhat.com> wrote:
On Tue, Apr 23, 202= 4 at 09:13:08AM +0000, Masato Imai wrote:
> When the KVM acceleration parameter is not set, executing calc_dirty_r= ate
> with the -r or -b option results in a segmentation fault due to access= ing
> a null kvm_state pointer in the kvm_dirty_ring_enabled function.
> This commit adds a check for kvm_enabled to prevent segmentation fault= s.
>
> Signed-off-by: Masato Imai <mii@sfc.wide.ad.jp>
> ---
>=C2=A0 migration/dirtyrate.c | 7 +++++++
>=C2=A0 1 file changed, 7 insertions(+)
>
> diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
> index 1d2e85746f..2a7df52519 100644
> --- a/migration/dirtyrate.c
> +++ b/migration/dirtyrate.c
> @@ -799,6 +799,13 @@ void qmp_calc_dirty_rate(int64_t calc_time,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0* dirty ring mode only works when kvm dirty = ring is enabled.
>=C2=A0 =C2=A0 =C2=A0 =C2=A0* on the contrary, dirty bitmap mode is not.=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0*/
> +=C2=A0 =C2=A0 if (!kvm_enabled() &&
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (mode =3D=3D DIRTY_RATE_MEASURE_MODE_DIRT= Y_RING ||
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0mode =3D=3D DIRTY_RATE_MEASURE_MODE= _DIRTY_BITMAP)) {
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 error_setg(errp, "mode %s requires k= vm to be enabled.",
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0DirtyRateMeasureMode_str(mode));
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;
> +=C2=A0 =C2=A0 }

Logically dirty bitmap should work with tcg.=C2=A0 So the other option is t= o let
kvm_dirty_ring_enabled() check kvm_state too and return false if
kvm_state=3D=3DNULL?

Agree= , better solution


>=C2=A0 =C2=A0 =C2=A0 if (((mode =3D=3D DIRTY_RATE_MEASURE_MODE_DIRTY_RI= NG) &&
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 !kvm_dirty_ring_enabled()) ||
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((mode =3D=3D DIRTY_RATE_MEASURE_MOD= E_DIRTY_BITMAP) &&
> --
> 2.34.1
>

--
Peter Xu


Thanks,
Yo= ng


--
Best regards
--000000000000346eba0616cd96de--