From nobody Tue Apr 7 18:33:06 2026 Received: from mail-yx1-f54.google.com (mail-yx1-f54.google.com [74.125.224.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82E581D7E41 for ; Wed, 11 Mar 2026 23:28:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773271689; cv=none; b=Re4m09aSej2/CU40BbHW7DuLx6G3h6CGboJN5IcexiVsgfe8ZFbXYi6QN3FfxoRSC1yLT6Jvg88eSIR/X6xLZY6dPXVhWgO5SmlqKN2MffmxpS1PV2/UqDCZwnLRDfk0gk+Nl8nZczsc0h9525PBUtdK/2Jkifyq44JSrgQweyw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773271689; c=relaxed/simple; bh=HcXPROi2lYohHg/i7gouZwm9pZRkIM+0VpiH8CT13TA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=gG7aS7/XyXb/eFcbp23E2IpfW9Llde6U1/YmuT8VWHeMWNQc00kZeyMALdrMFeVqV21FGfrqmBVC5kKe8eII9JXMziQ86rfpj3HUONOfYJcYV9MtQST4ylYgvkXIP0PVCkRL9ZSJw6vn2OS4HdEwHRFUqrv1wV4jfZ7NelOZvpg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YVB1ouDQ; arc=none smtp.client-ip=74.125.224.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YVB1ouDQ" Received: by mail-yx1-f54.google.com with SMTP id 956f58d0204a3-64c9f7576d4so402390d50.0 for ; Wed, 11 Mar 2026 16:28:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773271687; x=1773876487; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=6umOY7Bo85W9cfI2XbKfknuvsPGqv1vFRKnZ6BmR33I=; b=YVB1ouDQHJuPq4XCTubnee0/P0BxX1j7JuVaXhs5goEqcPcLNPL971mHMjqzHr15vt h9crfzm1fqWr+33+mLZarkN+o52RsLnBgdvXDm7F5S9Uz+S/zRpedFQWAJeu+sNTxl/2 l/qd+q24Jgx7WE0VhwDDYatbuLkkiDgDOS1NRhoHRaP5veJbqenTuuVxYNDYPesMp54Q Nh2Fv5fQ6jnSrBn3pioI5sp8ucLNpij23w3VYeGAkku7Wby7IViuxF7SbbUPx11m7diM AwLt4OLJewpe/jBfEK6hH+cxuChX6EH7hCi5/Nvl7ZTnjjdFFi8wUa1jxdq+0jPUlo98 7tlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773271687; x=1773876487; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6umOY7Bo85W9cfI2XbKfknuvsPGqv1vFRKnZ6BmR33I=; b=VJR0riQ2fuOHv/WN+qpG0z1rwZb1hM5rCVirQK6keHydUj6Cfi7sG/fKw/3pXpZlhy tN2MKfSIJVNb6/rxeEFceJ9SKIb1IspOYncIrvgKcSC0lvv8yz+766XsJKqjvE383+n4 OsZ6okpJh4cnOlxF2rPtPMDe+q7t95LDcyv6BvvbSzQUaz0FBkmEMXnvLGJFl0zULxmz 8MLkuCx3+bc+yfVVB8DlYpm2pIOrY/klzeBTJ9lnd2bFhywOI1bc+d2AR2065pRiIRFT XNXxdAzjZB81I15vqD+S1JgNlrXx0PK66tFpFd0v/Uiy4xr6iu1chZ+rVU+nQgsSK763 9SGw== X-Forwarded-Encrypted: i=1; AJvYcCViqOM3GVZ1tLGm9UjC7tD5WAUeZRdFWM4lenEIG/r3iFStgVXEVFJmVL8KksCdgrUAEkLltF+512WAvg4=@vger.kernel.org X-Gm-Message-State: AOJu0Yxad+DARF0HyQvwM6onItiYqrd3fCY/Tkghe/Y6BxjigQeLxPfI +uXhGQEkkra1PnfHssSLdUtcm5158VS2ElAJEcGYF/J8MrSIRNoTMXHC X-Gm-Gg: ATEYQzyTxtugyu2zDubt7INA9txEGeLxugOIG3pAFEthABoCj+xbpbSIBrTCO2nOQtM iGcB1d13ZakSG04Lv3CPTQRuUJKpSdXQ+ZevLAv+kZgdlWMCt/E+wcPan+oRIS9F5Nq+wRaXK5l NXqFeOqSUqqic06IrI48m5S8aoaaEo4ObnTw1/Tc8h+X4P8566w5UCiVeEWbYDcPZ0repT2xDW6 Yb+yAN9WjjArIkp8G8B12YWBvS2Ruys7V72w2Ksdx1OG0+iefIEALdSQrBY30UDPK2H8J0Umiyo iVYWnDuknzQwksMDaVir+wg4S+t5OERt8tFi1zklu4F82eB2XBywfSSYWGJ8Vvb18wbx4nvRu6d rYOGWhYtbhxBElaUdAlLB+JnpvFWLdXGKdejBdaDhLpYUooAc0BPPbEeFQihM3GUFttd/mr7zGy 1BtnUT2QFWpx3m7fa9KI85hdOQmI7LGZ4qsJvcvrrDQOmtRqaLL3A8SQ== X-Received: by 2002:a53:e203:0:b0:64a:eca0:35b7 with SMTP id 956f58d0204a3-64d6583127amr3097911d50.77.1773271687433; Wed, 11 Mar 2026 16:28:07 -0700 (PDT) Received: from ryzen ([2601:644:8000:56f5::8bd]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-64d6504b0f3sm2221061d50.2.2026.03.11.16.28.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2026 16:28:07 -0700 (PDT) From: Rosen Penev To: linux-sound@vger.kernel.org Cc: Jaroslav Kysela , Takashi Iwai , linux-kernel@vger.kernel.org (open list) Subject: [PATCH] ALSA: usb-audio: use kzalloc_flex Date: Wed, 11 Mar 2026 16:27:48 -0700 Message-ID: <20260311232748.18697-1-rosenp@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Saves one allocation by using a flexible array member. Signed-off-by: Rosen Penev --- sound/usb/mixer.c | 22 +++++++--------------- sound/usb/mixer.h | 5 +++-- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 7007e0c9489b..337815b9e72c 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1393,7 +1393,7 @@ static int mixer_ctl_feature_info(struct snd_kcontrol= *kcontrol, if (!cval->initialized) { get_min_max_with_quirks(cval, 0, kcontrol); if (cval->initialized && cval->dBmin >=3D cval->dBmax) { - kcontrol->vd[0].access &=3D=20 + kcontrol->vd[0].access &=3D ~(SNDRV_CTL_ELEM_ACCESS_TLV_READ | SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK); snd_ctl_notify(cval->head.mixer->chip->card, @@ -3006,15 +3006,12 @@ static void snd_usb_mixer_free(struct usb_mixer_int= erface *mixer) snd_usb_mixer_disconnect(mixer); =20 /* Unregister controls first, snd_ctl_remove() frees the element */ - if (mixer->id_elems) { - for (id =3D 0; id < MAX_ID_ELEMS; id++) { - for (list =3D mixer->id_elems[id]; list; list =3D next) { - next =3D list->next_id_elem; - if (list->kctl) - snd_ctl_remove(mixer->chip->card, list->kctl); - } + for (id =3D 0; id < MAX_ID_ELEMS; id++) { + for (list =3D mixer->id_elems[id]; list; list =3D next) { + next =3D list->next_id_elem; + if (list->kctl) + snd_ctl_remove(mixer->chip->card, list->kctl); } - kfree(mixer->id_elems); } if (mixer->urb) { kfree(mixer->urb->transfer_buffer); @@ -3652,16 +3649,11 @@ int snd_usb_create_mixer(struct snd_usb_audio *chip= , int ctrlif) =20 strscpy(chip->card->mixername, "USB Mixer"); =20 - mixer =3D kzalloc_obj(*mixer); + mixer =3D kzalloc_flex(*mixer, id_elems, MAX_ID_ELEMS); if (!mixer) return -ENOMEM; mixer->chip =3D chip; mixer->ignore_ctl_error =3D !!(chip->quirk_flags & QUIRK_FLAG_IGNORE_CTL_= ERROR); - mixer->id_elems =3D kzalloc_objs(*mixer->id_elems, MAX_ID_ELEMS); - if (!mixer->id_elems) { - kfree(mixer); - return -ENOMEM; - } =20 mixer->hostif =3D &usb_ifnum_to_if(chip->dev, ctrlif)->altsetting[0]; switch (get_iface_desc(mixer->hostif)->bInterfaceProtocol) { diff --git a/sound/usb/mixer.h b/sound/usb/mixer.h index 167fbfcf01ac..30dd30b925fc 100644 --- a/sound/usb/mixer.h +++ b/sound/usb/mixer.h @@ -19,8 +19,6 @@ struct usb_mixer_interface { struct list_head list; unsigned int ignore_ctl_error; struct urb *urb; - /* array[MAX_ID_ELEMS], indexed by unit id */ - struct usb_mixer_elem_list **id_elems; =20 /* the usb audio specification version this interface complies to */ int protocol; @@ -42,6 +40,9 @@ struct usb_mixer_interface { void *private_data; void (*private_free)(struct usb_mixer_interface *mixer); void (*private_suspend)(struct usb_mixer_interface *mixer); + + /* array[MAX_ID_ELEMS], indexed by unit id */ + struct usb_mixer_elem_list *id_elems[]; }; =20 #define MAX_CHANNELS 16 /* max logical channels */ --=20 2.53.0