From nobody Sat May 30 20:11:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1776941907; cv=none; d=zohomail.com; s=zohoarc; b=hIuxsbDim6VNuZp1Cg9rJ/Z1CZq/ivWDt9p8c795X+O27TALFd376imQx6J00xQZsTLyJqkiiTI6QVzSy4hnN9pXIkPR5I9OY/whWpG4s9v3mRO9hV02w8ErfXQY8qjY9Ig46zLr4HpA2IV0ivRzTDciIg2m7LveWgM0ABMPuZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776941907; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7eIb8iAvGQk4TDjBMbdfb7Iw7V4QRw3ih4nqSU+64iY=; b=RGv/pBHKSut2qTI++qT3v9SdynliW6DrMkTvQEVBVWstXPjInaNEVq/TuBLfRlqzZYqNcpfJ5X0i3CbJho0VWV2gjRvsKFRR+VLTLkw3ywUSMtzF/HBf4apagPm8TRdRnsyvdRuHA42vG3hqmzUvk3OVOTf2j16CREnhazOVuSU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776941907543322.81527763324664; Thu, 23 Apr 2026 03:58:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wFrkp-0000rh-OK; Thu, 23 Apr 2026 06:57:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wFrkn-0000r4-Qt for qemu-devel@nongnu.org; Thu, 23 Apr 2026 06:57:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wFrkm-00050g-9R for qemu-devel@nongnu.org; Thu, 23 Apr 2026 06:57:53 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-190-RCOdMmBONy6SjVUwxidOFw-1; Thu, 23 Apr 2026 06:57:50 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-35fbb5779e8so7516517a91.3 for ; Thu, 23 Apr 2026 03:57:50 -0700 (PDT) Received: from fedora.armenon-thinkpadp16vgen1.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36140fc575bsm19835240a91.4.2026.04.23.03.57.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 03:57:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776941871; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7eIb8iAvGQk4TDjBMbdfb7Iw7V4QRw3ih4nqSU+64iY=; b=ItDA64MIcFACZGjxQtIK3lCpE7Qy4sDQDfsjPmWtIpzfK2dDZOZGpNuR1CTr89xlrpr21i f6dMdRjJLXJOB5hAUlDRdaLamG+Zsoz0E7yQVG+a6aK/UpmRl2FqZ5Vw7O10oRIIlKF0yA h3ho7Uiz9ZxQr3BXyL83zVpjnSRQFaM= X-MC-Unique: RCOdMmBONy6SjVUwxidOFw-1 X-Mimecast-MFC-AGG-ID: RCOdMmBONy6SjVUwxidOFw_1776941869 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776941869; x=1777546669; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7eIb8iAvGQk4TDjBMbdfb7Iw7V4QRw3ih4nqSU+64iY=; b=rUhGkSzx1LZArCeab0CIXP6uaWI9DtAou7dwQmNXSnwoKm1ryPFiMTSvXaXcLn2Al3 7NSY0iprYL81l41JNFFzJul/+f/FThHc4ZPJ5Jm8/ECw/kZseXcCbjHc5AzmFFE/7zWG GVPIQeGHC5BxQyhoUPqlMXIvV/Oj3k8X6P0co/CYQtYN/tePpy0gmIA9oehGUBdNhFT5 82Skv6khmYDASda/8UWhERlC5LSEkkAxYD4R//LCJooRN/var+rAjNuliLnQIQ/2vDpf giT7gI6ffLAQTXWoryP+jvSoKd1gy4CsyHPXIdk0Gg3ZRq8vq6k2ZVyebu03s1Mcap0b H+gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776941869; x=1777546669; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7eIb8iAvGQk4TDjBMbdfb7Iw7V4QRw3ih4nqSU+64iY=; b=DBtStqIJXbp22EQmgML0KGfYdqOcJsrqrkXGnPRdgkj+pMyowLgJtiDGKcj+WjMfIL 8DfzrgN8VxO3o9diJK4MsQmt6idJn1niCS3ZXn8/FmeeuoA3TMM25HDyqTpSI6Ay0jz/ 9WmPCebKxiLkOULR/Xr0nFStq8sw2jPq3cDJAT5mzEfXFOlVMDdYAhFw8hMfPDgag81h qKv5phgP2SL0MU8z84CNYk37qceHWCt0Vhx2ths3kPGuHGHruzkLf/hNWyEMPvNVqGVv vJzTzAJtRWMOvxaWzRjH1WzBrLob7eYm1QKlsW692j1VmU81saC/pOg1xlL0Rsb0RTNA z2iA== X-Gm-Message-State: AOJu0Yy+oTvDdnbHihmmzo4C/dnfiEsUj6fV4t6SYu5SEJ/iE2iJKXHz GiSJeRKcOlVFQvbcPW7CBe4rTw1VDdlPHwy8nnnruuSX4Vu+U5+/7yomYZo2mp8/3GxCt4td/EZ PRqwxzS03xnBi6CL/VfdnEc/xTEKzLaJWZ7aZhYGSKb16uEtIrWw0SN+CT3wBwwzbooVMeyQuLA Vv+0p6rhVlGaJd2mBqbkyfNaRYZn8aiKAkgqY3KVA= X-Gm-Gg: AeBDievhYeWW1huK1qTuKGYLmny2m778cWqjQ53AU5pQmKH9a9B0CR5SUFAURAxVflX zXuXEJM9BeDBOLhE7ylGWDoyrTvFlv45wOmQI+aBdqA0BcFXASTHyCyVuNNta6dreLQNE0MJ0JJ i09T7AZJs1h2YMuSnBg1FD7bb22mez2TrxGHlta0Wyr5ISZcoGrR9rXJjdX2Jh8gwWW4ms5uINO Vz7RGxDGAEvsD8WIOD9qYFujOaUJLtfVn/SxQsU/89AxRdqr+/XpEkXHc7MFL8STRXHfIdsyhbD tx3jUh4EbnX/P1L0fDqrmKeOL/A8XRd/kAGiSiwV4uGlB2H916tJ4OcXim16DTLZTYT9KH/zx9q CryDAgP975sxM+OJx2xMRooKxgpiWejYQo4bTy7TcMyFPSHRs6A5Yt2xNU+6D6qn2N1mj0yOuNg == X-Received: by 2002:a17:90a:da8c:b0:35e:3afb:a3ff with SMTP id 98e67ed59e1d1-361403cbd7cmr27149010a91.3.1776941869025; Thu, 23 Apr 2026 03:57:49 -0700 (PDT) X-Received: by 2002:a17:90a:da8c:b0:35e:3afb:a3ff with SMTP id 98e67ed59e1d1-361403cbd7cmr27148978a91.3.1776941868443; Thu, 23 Apr 2026 03:57:48 -0700 (PDT) From: Arun Menon To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Arun Menon Subject: [PATCH v4 1/2] migration/vmstate: Add VMState support for GByteArray Date: Thu, 23 Apr 2026 16:27:32 +0530 Message-ID: <20260423105733.113046-2-armenon@redhat.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260423105733.113046-1-armenon@redhat.com> References: <20260423105733.113046-1-armenon@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1776941911305154100 From: Arun Menon In GLib, GByteArray is an object managed by the library. Currently, migrating a GByteArray requires treating it as a raw C struct and using VMSTATE_VBUFFER_ALLOC_UINT32. For example, see vmstate_vdba in ui/vdagent.c QEMU cannot pretend that GByteArray is a C struct and simply use VMS_ALLOC to g_malloc() the buffer. This is because, VMS_ALLOC blindly overwrites the data pointer with a newly allocated buffer, thereby leaking the previous memory. Besides, GLib tracks the array's capacity in a hidden alloc field. Bypassing GLib APIs leave this capacity out of sync with the newly allocated buffer, potentially leading to heap buffer overflows during subsequent g_byte_array_append() calls. This commit introduces VMSTATE_GBYTEARRAY which uses specific library API calls (g_byte_array_set_size()) to safely resize and populate the buffer. Signed-off-by: Arun Menon Suggested-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Peter Xu --- include/migration/vmstate.h | 10 ++++++++++ migration/vmstate-types.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 62c2abd0c4..f503a40ec0 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -265,6 +265,7 @@ extern const VMStateInfo vmstate_info_bitmap; extern const VMStateInfo vmstate_info_qtailq; extern const VMStateInfo vmstate_info_gtree; extern const VMStateInfo vmstate_info_qlist; +extern const VMStateInfo vmstate_info_g_byte_array; =20 #define type_check_2darray(t1,t2,n,m) ((t1(*)[n][m])0 - (t2*)0) /* @@ -892,6 +893,15 @@ extern const VMStateInfo vmstate_info_qlist; .start =3D offsetof(_type, _next), = \ } =20 +#define VMSTATE_GBYTEARRAY(_field, _state, _version) { \ + .name =3D (stringify(_field)), = \ + .version_id =3D (_version), = \ + .size =3D sizeof(GByteArray), = \ + .info =3D &vmstate_info_g_byte_array, = \ + .flags =3D VMS_SINGLE, = \ + .offset =3D vmstate_offset_pointer(_state, _field, GByteArray), = \ +} + /* _f : field name _f_n : num of elements field_name _n : num of elements diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 89cb211472..b05d65d31e 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -942,3 +942,31 @@ const VMStateInfo vmstate_info_qlist =3D { .get =3D get_qlist, .put =3D put_qlist, }; + +static int get_g_byte_array(QEMUFile *f, void *pv, size_t size, + const VMStateField *field) +{ + GByteArray *byte_array =3D *(GByteArray **)pv; + uint32_t len =3D qemu_get_be32(f); + + g_byte_array_set_size(byte_array, len); + qemu_get_buffer(f, byte_array->data, len); + return 0; +} + +static int put_g_byte_array(QEMUFile *f, void *pv, size_t size, + const VMStateField *field, JSONWriter *vmdesc) +{ + GByteArray *byte_array =3D *(GByteArray **)pv; + + qemu_put_be32(f, byte_array->len); + qemu_put_buffer(f, byte_array->data, byte_array->len); + + return 0; +} + +const VMStateInfo vmstate_info_g_byte_array =3D { + .name =3D "GByteArray", + .get =3D get_g_byte_array, + .put =3D put_g_byte_array, +}; --=20 2.53.0 From nobody Sat May 30 20:11:55 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1776941907; cv=none; d=zohomail.com; s=zohoarc; b=c5hz63YZLwAT8UxMVWKIpco97Q1pl1GSg6f2q3ZoVTAiXOTM1I26xtTUzTvN7iUxtLxrkAFrO51ieKFkqke+5cp0fcPpTo4E2CAxB/57+m1j9mShrSRoEArjqSe7r+YR9iG9oBkwDZ86Vgu5iJZXZiy0xKFLUvxYq3jsaLF0QYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776941907; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dgN/ukMWymzGqahQ+VgRQORedjrDucZiGjhPdE4VcbI=; b=SGL7gs8eb1q2B6fqtJBMi3BVTwCE6Cwwgqz2XfWwont/FbmFzOIMM43nszhdKX+9fYUuRLy0LSEDGQNP8zWnfUGJ6JkaR+khHdVniFqnuQzOaFiYRmKR/cSRJG5d2w9qV4Dn5+S1LnrKblydLIyRu2xDGJ6kwrjaQsJ72y3tlRA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1776941907541317.26862172912615; Thu, 23 Apr 2026 03:58:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wFrky-0000tD-RW; Thu, 23 Apr 2026 06:58:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wFrks-0000sj-VF for qemu-devel@nongnu.org; Thu, 23 Apr 2026 06:57:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wFrkr-00053z-H0 for qemu-devel@nongnu.org; Thu, 23 Apr 2026 06:57:58 -0400 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-676-OYieTkxaM9eqqfcKSwx58w-1; Thu, 23 Apr 2026 06:57:55 -0400 Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-3595485abbbso8088050a91.2 for ; Thu, 23 Apr 2026 03:57:54 -0700 (PDT) Received: from fedora.armenon-thinkpadp16vgen1.bengluru.csb ([49.36.110.230]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36140fc575bsm19835240a91.4.2026.04.23.03.57.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 03:57:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1776941876; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dgN/ukMWymzGqahQ+VgRQORedjrDucZiGjhPdE4VcbI=; b=RVtMHHMfz1NKoS2Zqpig8bD74eIgCZ/b29eT8wU5Ag125joMVatLd8elZ2+zs57/iA0TR4 1RCiDBBJl77iF2a+qeaQHZKa2DBo35ch+X0HNbUYemEygtFFespBB9C90cwQIwAqX81cG+ u8kwkbu7r5l56XbIUpZncAkcBxG7pgE= X-MC-Unique: OYieTkxaM9eqqfcKSwx58w-1 X-Mimecast-MFC-AGG-ID: OYieTkxaM9eqqfcKSwx58w_1776941874 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1776941874; x=1777546674; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dgN/ukMWymzGqahQ+VgRQORedjrDucZiGjhPdE4VcbI=; b=Ljr3RTo3mLJWpyUISkhotzej79vINXDhhPUEmsJlvrBQ0fYCD8m7g9hWdE1lTcmxfF LWibP9mvhD6ykCBvmt12rP68iDT7qFDpdFTCoiDEKWqgwdFZDyzivpQbvCWZfOK7is1E +cqfz32+dU0tBQ5LC0rvwgGRbvkjiJhP9V+G4PfC0fQrz2FaNtiyDh1PYp9dvrSLj0bV dIKmEOTPwSWNvEjH6rgDkSPvk2+ztxjcqQcXt+bT9qyxS5IsG97dvPkdmmYPeQe0XSwB DHp33zFNLOaWbj+F5vA7gEAhqnAQFSB1OiwEXRa2pYkVCvs/NkrOLbEQQu3iP8Prgz2V i7Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776941874; x=1777546674; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=dgN/ukMWymzGqahQ+VgRQORedjrDucZiGjhPdE4VcbI=; b=EZx1ISP3jiXna7MZHhAftqf4aqW2781wsGpxLptDcEMC211wai3F9bcbBHOT8uQKL/ jooIs1PtUAjhcaC2CQYCuWmBBwGtChKTeqOi+AjJmhxehE1n/2z2RJFsKX5UNy0ubiNy augo0IrTVaFQ2SjS9ILuDjTu6c+nBO9Wuqk9edmGcF41ipSmrewISstbjOORcECGskW7 05uNIdHhGXVyN9bO8c8688os3n8EPu31aCu1IPpDIxIr2auqVfEuF8WFl54iJ+Ut3jIU KpA0Y1viJTKnMNQPAlZfYUOTAakSfs50sxA1mWcIuS0spKcRHxVGSgXq1gq1J2yDIOYe lJXg== X-Gm-Message-State: AOJu0Yz6x4VyPNDvSv+AjQ45hoIn4wvoGXgrzsdaa0fQlMJ4PqTwCs5B vvDrT/N1bEyTTJ9AWDJKAtwZ9qDUdltTXjMyQh+qdCTXeUTOwEfK6XnVzsHi+8hD2k5uFOHWfWD JqR7ahb0gxgmumXQSMsb0jf0ckI35RVUdoScoGZRFeh+VMaSDho/S5jDZZzKdNLPxjh9WJuyRyP qwHY9vRFdahjZZGfcB80vttABJ1nM6tgdbAM33DRM= X-Gm-Gg: AeBDietfrqAcOZIhecLtWGyuRrh2v6NxazqgLj16yWSaRYT18UST5/xTPBSHmQu4tCZ pSpvOExHgrfz9qTHPRiQtLbIkTlywwAKA39ZEGHaDwEG30q+kaTCiwMXYPG3ZJxoikiOtfGw4xr 0FbO1umJLX94WW5T+9C/qYwa5d0d2rWZpCE8PDLJQTuuE06DZ5jKVwPIEqj9dLnKTDvCfoTN1xj wkFGcdlzrBUo3vIDRZXP3fxa1KqsC3a+Df0gVdGPPf+i9yb1J+3LlOGi7GPr5yFG51vcDfPRBc4 FPa/PzsZ89Dte6f/CFjFMiMD8uo8JJO4aSNmpq9kuMZx8W3+7a3YmoBefvdbNyGIJ6bd+xBHfnk RRNGLOfncRwG6eeeQVAayIKznvhezmlITyia7wZa9XFLWtao/4jI7wK8XM7sA+8DwojTYqHXIYq lx3PEnXDK/ X-Received: by 2002:a17:90b:6cd:b0:35d:ac4d:3cb6 with SMTP id 98e67ed59e1d1-361403b790dmr27124367a91.5.1776941873594; Thu, 23 Apr 2026 03:57:53 -0700 (PDT) X-Received: by 2002:a17:90b:6cd:b0:35d:ac4d:3cb6 with SMTP id 98e67ed59e1d1-361403b790dmr27124340a91.5.1776941873036; Thu, 23 Apr 2026 03:57:53 -0700 (PDT) From: Arun Menon To: qemu-devel@nongnu.org Cc: Peter Xu , Fabiano Rosas , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Arun Menon Subject: [PATCH v4 2/2] ui/vdagent: Use VMSTATE_GBYTEARRAY to safely migrate outbuf Date: Thu, 23 Apr 2026 16:27:33 +0530 Message-ID: <20260423105733.113046-3-armenon@redhat.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260423105733.113046-1-armenon@redhat.com> References: <20260423105733.113046-1-armenon@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=armenon@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1776941911283154100 From: Arun Menon Migrating a GLib GByteArray is now possible directly using the newly introduced VMSTATE_GBYTEARRAY. It uses the standard GLib API calls to create the array, or resize it. This is safer than implementing a C struct and manually updating the data and len fields. This commit uses the VMSTATE_GBYTEARRAY in vdagent to store the outbuf variable. Signed-off-by: Arun Menon Suggested-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Peter Xu --- ui/vdagent.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/ui/vdagent.c b/ui/vdagent.c index bb0c4aa14c..9206e47000 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -967,17 +967,6 @@ static const VMStateDescription vmstate_chunk =3D { } }; =20 -static const VMStateDescription vmstate_vdba =3D { - .name =3D "vdagent/bytearray", - .version_id =3D 0, - .minimum_version_id =3D 0, - .fields =3D (const VMStateField[]) { - VMSTATE_UINT32(len, GByteArray), - VMSTATE_VBUFFER_ALLOC_UINT32(data, GByteArray, 0, 0, len), - VMSTATE_END_OF_LIST() - } -}; - struct CBInfoArray { uint32_t n; QemuClipboardInfo cbinfo[QEMU_CLIPBOARD_SELECTION__COUNT]; @@ -1067,7 +1056,7 @@ static const VMStateDescription vmstate_vdagent =3D { VMSTATE_UINT32(xsize, VDAgentChardev), VMSTATE_UINT32(xoff, VDAgentChardev), VMSTATE_VBUFFER_ALLOC_UINT32(xbuf, VDAgentChardev, 0, 0, xsize), - VMSTATE_STRUCT_POINTER(outbuf, VDAgentChardev, vmstate_vdba, GByte= Array), + VMSTATE_GBYTEARRAY(outbuf, VDAgentChardev, 0), VMSTATE_UINT32(mouse_x, VDAgentChardev), VMSTATE_UINT32(mouse_y, VDAgentChardev), VMSTATE_UINT32(mouse_btn, VDAgentChardev), --=20 2.53.0