From nobody Sat Apr 11 23:04:21 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=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773071737; cv=none; d=zohomail.com; s=zohoarc; b=WMw80U2no9fCEZLLh1FPwPqjHI2sZ1rUGq0dSg0Tjoj6DKWGO1j0olHjI+pB6DzA9da50emJHO1tjixaMm+TDegcA6rNrsZSSU6/uSLa8xbMgjNQSPiStyk3uEDyOV7kG+tiklwqcMafyEjM4Fb3gQIlUcZSvmCnJVM1QYuEnHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773071737; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=xRjEhQJtjZMDsvFKB7U/z4AeDldYrLH9CdDk4sJlXaI=; b=Q0Lm70M9g9qfaJoPiM5M2lTnURR1lKqZT091cTUEFnAoNJ6Eqb+TnZe6kcfZp88iJAhvm1QB+6E6GlMBo5tyZN8T0TLfKv+8OrpC2wQiyoU6yIHXuuDa0cDzkpIV66XYEMJNOoWtZJDYQJlt89OPK8glr9vgEpfwFeUZzxr8Y4I= 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1773071737152884.3882837921949; Mon, 9 Mar 2026 08:55:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzcxA-0000n6-W3; Mon, 09 Mar 2026 11:55:33 -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 1vzcwZ-0007zu-T8 for qemu-devel@nongnu.org; Mon, 09 Mar 2026 11:54:58 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vzcwV-0000Ps-HO for qemu-devel@nongnu.org; Mon, 09 Mar 2026 11:54:54 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-48540355459so5922965e9.3 for ; Mon, 09 Mar 2026 08:54:51 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4853f8f9938sm11894425e9.23.2026.03.09.08.54.48 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 09 Mar 2026 08:54:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773071689; x=1773676489; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=xRjEhQJtjZMDsvFKB7U/z4AeDldYrLH9CdDk4sJlXaI=; b=e9AzbE4IDOJcEZ3uSnUYnwuZ1Qf5dwRpQqUztDrZM7JGMjXwdxHj1tyBJwSTLxoYjl Gr1oF9XYtNCpBCAEFZtPxuzxwtxb9UmcIoY/K+tgbCd4VY/yh4HpKWHW/dQYxpZ9O9y7 13UtrY3CrKH/7PA+F7yX0x5Arz12zRFLa7iZd46zui3twfqJzeqvo5vfeO/qfThnJNys mFs8iU0mgNh67bJs3jGUotwtzqxBaJKWFLVwQysQaUap01W65K3ta1D5K34BgKsp3266 oYtaMQuZQGkeInROtASuGsFoRJjyDatm4EChJiIr9r5rzo8HdOHNEZpBqiYHLaitUAxy vhZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773071689; x=1773676489; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xRjEhQJtjZMDsvFKB7U/z4AeDldYrLH9CdDk4sJlXaI=; b=lzHdwLaRCIYg+PeC+/gsvBaFtHOgiCzF70a4Brv0oBqcAgRlQ2q2zyK5dJHRRUv9vh 2Nugk3ee/DI9tjvOFYZswqb6Pa+0mFac28zZWCndRIJkQQ4GDyaKnOx0g0vc7y0GtWHi QqjxQxFC0eTl4xkonKBQVkpFvLetyIQulzDfS+FeFasGMdwUNLwjHad3DLn4ctezzC52 8GF+L6Cp9hJnGVgDldz9Zg7OYfRPSm101ENjS/Sb40O4yXF01cf+7vU03iKYD84aT5iu l4lWUjWS5kwCUtViTqCMXeY4Zf+zNrqzKF9Ht5UYoNTB5iL/sihkeNAJBrmcbRRwoocr twTA== X-Gm-Message-State: AOJu0YzXR4qLZNWCYeoApGIA4aSkAJs5z8X0RQMfNlBNHtavWcmysit9 kH3HC1c9Elc36HI/LTMHlee2kC8SZmJLgesvGyeZBr1rn1/cJrkvCmTckk8RVoxIBX7GvOEdGat mX+XklYQ= X-Gm-Gg: ATEYQzw/lPfd0gNz4pWEI8L7/KJbExqZSJ8pr2iYGfbpaYCg8oo+dmxp9/q5vGhLsRq iqirsKy4qDR4CdHZr3rmVmMAUDIS2t4Bp5o1/sNO+kclxX26M3aFzhEGTXsMp7kuY6KUj+whJ/n qEUNitUtXDqrFZfKUiP2wWuMi2OH4uSls1Cw2AiXtbIIqFEA3q0ZZgZMARKNcVtDwn1PGpoFau2 pqlo1+NUCjf+N0c45SBWl/iHHJyHAGDYMecJvcQOn5o3jzhYJXB8nGYptj+dBeMQn8beINw8hL2 TfMhf/77pPaaW410EkN97vPRMBUcr1NMBz+tC6zKq05SsRVutrYbcPrsW6hg3/DJYcL/F5wOefh F+u2EIpyUNP/3Gglb02oAeizwGJe+Uys7ScKBvD1n3pi4rCy0I2VkUeJBL0D7A9kqPVsizQSSON QQOvoVu6twGvq5oXqwWnp2sbGkz/HLvZyJVNITDDqy0JAn8Pu5WMhfu2fy6np/I/TWibAaNFW5 X-Received: by 2002:a05:600c:3510:b0:485:3c05:24cd with SMTP id 5b1f17b1804b1-4853c0527dfmr52218495e9.33.1773071689229; Mon, 09 Mar 2026 08:54:49 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 22/49] virtio-snd: remove a redundant memory allocation Date: Mon, 9 Mar 2026 16:51:52 +0100 Message-ID: <20260309155219.62400-23-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260309155219.62400-1-philmd@linaro.org> References: <20260309155219.62400-1-philmd@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=philmd@linaro.org; helo=mail-wm1-x330.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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 @linaro.org) X-ZM-MESSAGEID: 1773071738862158500 From: Roman Kiryanov This change also makes its lifetime explicit and prevents NULL dereferences. Signed-off-by: Roman Kiryanov Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20260305042523.335493-1-rkir@google.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/audio/virtio-snd.h | 2 +- hw/audio/virtio-snd.c | 53 ++++++++++++++++------------------- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/include/hw/audio/virtio-snd.h b/include/hw/audio/virtio-snd.h index 9560bac8b15..da2ba9675e1 100644 --- a/include/hw/audio/virtio-snd.h +++ b/include/hw/audio/virtio-snd.h @@ -216,7 +216,7 @@ struct VirtIOSound { =20 VirtQueue *queues[VIRTIO_SND_VQ_MAX]; uint64_t features; - VirtIOSoundPCM *pcm; + VirtIOSoundPCM pcm; AudioBackend *audio_be; VMChangeStateEntry *vmstate; virtio_snd_config snd_conf; diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index b8376433f7d..0f78cec967d 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -130,7 +130,7 @@ static VirtIOSoundPCMStream *virtio_snd_pcm_get_stream(= VirtIOSound *s, uint32_t stream_id) { return stream_id >=3D s->snd_conf.streams ? NULL : - s->pcm->streams[stream_id]; + s->pcm.streams[stream_id]; } =20 /* @@ -143,7 +143,7 @@ static virtio_snd_pcm_set_params *virtio_snd_pcm_get_pa= rams(VirtIOSound *s, uint32_t strea= m_id) { return stream_id >=3D s->snd_conf.streams ? NULL - : &s->pcm->pcm_params[stream_id]; + : &s->pcm.pcm_params[stream_id]; } =20 /* @@ -260,7 +260,7 @@ uint32_t virtio_snd_set_pcm_params(VirtIOSound *s, { virtio_snd_pcm_set_params *st_params; =20 - if (stream_id >=3D s->snd_conf.streams || s->pcm->pcm_params =3D=3D NU= LL) { + if (stream_id >=3D s->snd_conf.streams || s->pcm.pcm_params =3D=3D NUL= L) { virtio_error(VIRTIO_DEVICE(s), "Streams have not been initialized.= \n"); return cpu_to_le32(VIRTIO_SND_S_BAD_MSG); } @@ -424,8 +424,8 @@ static uint32_t virtio_snd_pcm_prepare(VirtIOSound *s, = uint32_t stream_id) virtio_snd_pcm_set_params *params; VirtIOSoundPCMStream *stream; =20 - if (s->pcm->streams =3D=3D NULL || - s->pcm->pcm_params =3D=3D NULL || + if (s->pcm.streams =3D=3D NULL || + s->pcm.pcm_params =3D=3D NULL || stream_id >=3D s->snd_conf.streams) { return cpu_to_le32(VIRTIO_SND_S_BAD_MSG); } @@ -440,7 +440,7 @@ static uint32_t virtio_snd_pcm_prepare(VirtIOSound *s, = uint32_t stream_id) stream =3D g_new0(VirtIOSoundPCMStream, 1); stream->active =3D false; stream->id =3D stream_id; - stream->pcm =3D s->pcm; + stream->pcm =3D &s->pcm; stream->s =3D s; stream->latency_bytes =3D 0; qemu_mutex_init(&stream->queue_mutex); @@ -450,7 +450,7 @@ static uint32_t virtio_snd_pcm_prepare(VirtIOSound *s, = uint32_t stream_id) * stream_id >=3D s->snd_conf.streams was checked before so this is * in-bounds */ - s->pcm->streams[stream_id] =3D stream; + s->pcm.streams[stream_id] =3D stream; } =20 virtio_snd_get_qemu_audsettings(&as, params); @@ -884,11 +884,11 @@ static void virtio_snd_handle_tx_xfer(VirtIODevice *v= dev, VirtQueue *vq) stream_id =3D le32_to_cpu(hdr.stream_id); =20 if (stream_id >=3D vsnd->snd_conf.streams - || vsnd->pcm->streams[stream_id] =3D=3D NULL) { + || vsnd->pcm.streams[stream_id] =3D=3D NULL) { goto tx_err; } =20 - stream =3D vsnd->pcm->streams[stream_id]; + stream =3D vsnd->pcm.streams[stream_id]; if (stream->info.direction !=3D VIRTIO_SND_D_OUTPUT) { goto tx_err; } @@ -966,11 +966,11 @@ static void virtio_snd_handle_rx_xfer(VirtIODevice *v= dev, VirtQueue *vq) stream_id =3D le32_to_cpu(hdr.stream_id); =20 if (stream_id >=3D vsnd->snd_conf.streams - || !vsnd->pcm->streams[stream_id]) { + || !vsnd->pcm.streams[stream_id]) { goto rx_err; } =20 - stream =3D vsnd->pcm->streams[stream_id]; + stream =3D vsnd->pcm.streams[stream_id]; if (stream =3D=3D NULL || stream->info.direction !=3D VIRTIO_SND_D= _INPUT) { goto rx_err; } @@ -1064,11 +1064,10 @@ static void virtio_snd_realize(DeviceState *dev, Er= ror **errp) vsnd->vmstate =3D qemu_add_vm_change_state_handler(virtio_snd_vm_state_change, vsnd); =20 - vsnd->pcm =3D g_new0(VirtIOSoundPCM, 1); - vsnd->pcm->snd =3D vsnd; - vsnd->pcm->streams =3D + vsnd->pcm.snd =3D vsnd; + vsnd->pcm.streams =3D g_new0(VirtIOSoundPCMStream *, vsnd->snd_conf.streams); - vsnd->pcm->pcm_params =3D + vsnd->pcm.pcm_params =3D g_new0(virtio_snd_pcm_set_params, vsnd->snd_conf.streams); =20 virtio_init(vdev, VIRTIO_ID_SOUND, sizeof(virtio_snd_config)); @@ -1335,23 +1334,19 @@ static void virtio_snd_unrealize(DeviceState *dev) qemu_del_vm_change_state_handler(vsnd->vmstate); trace_virtio_snd_unrealize(vsnd); =20 - if (vsnd->pcm) { - if (vsnd->pcm->streams) { - for (uint32_t i =3D 0; i < vsnd->snd_conf.streams; i++) { - stream =3D vsnd->pcm->streams[i]; - if (stream) { - virtio_snd_process_cmdq(stream->s); - virtio_snd_pcm_close(stream); - qemu_mutex_destroy(&stream->queue_mutex); - g_free(stream); - } + if (vsnd->pcm.streams) { + for (uint32_t i =3D 0; i < vsnd->snd_conf.streams; i++) { + stream =3D vsnd->pcm.streams[i]; + if (stream) { + virtio_snd_process_cmdq(stream->s); + virtio_snd_pcm_close(stream); + qemu_mutex_destroy(&stream->queue_mutex); + g_free(stream); } - g_free(vsnd->pcm->streams); } - g_free(vsnd->pcm->pcm_params); - g_free(vsnd->pcm); - vsnd->pcm =3D NULL; + g_free(vsnd->pcm.streams); } + g_free(vsnd->pcm.pcm_params); qemu_mutex_destroy(&vsnd->cmdq_mutex); virtio_delete_queue(vsnd->queues[VIRTIO_SND_VQ_CONTROL]); virtio_delete_queue(vsnd->queues[VIRTIO_SND_VQ_EVENT]); --=20 2.53.0