From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (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 E38E9347BC1 for ; Mon, 11 May 2026 23:01:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778540502; cv=none; b=TJ44VuzsoSU83IJnBdFR+qbAGt4iKwBItEI8Om4wdJ46SQhWxNM/9/mPG3pvfIJgv9SeaYngvUt64c+3EHLwUeyKuICRzxweGOOBC2AI+ccxCQVeyeqnugFeCfw2QU6+CL4zI8lV4jur6litT18jPPf7FR+8H86FlRpVviPNVGA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778540502; c=relaxed/simple; bh=4FFTVIrcGb5bEnEr3mxiZfFcOT2unW9/+Rjfsb9tZis=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=nAmSM6H6QzKY06kCqc2vEQ0A+VVC/YN6i46SFeD1H9K3TpHtLjOM9h/uWfJEASnpA5+kSWdUX6MhuekwQITsnOWDzEaB6MivjgWTMSyhX3XmzxJv8d2086VudnkJ6gKUkUwYNjsdwRx69+G9p1HQMGq/dmqpJ4ibbUu/MnaT7qY= 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=nEzXtW+i; arc=none smtp.client-ip=209.85.216.48 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="nEzXtW+i" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-36523acb0c1so3401552a91.0 for ; Mon, 11 May 2026 16:01:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778540499; x=1779145299; 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=7yrHUiu1eclhnN5DTCiPARDxM7SXoj9Pgm5FYtgWEls=; b=nEzXtW+i7/1PKQWSNBTkjgNZcMeBQROkpclQKITNPT1hf4iJbiQQqGOMdi5tY1c7jK sae8WeqNO/i3kw3v434tw44gM4Vh3Kav46ojBQNWaTuVQoBvQ1c9G7MEEODWKdqdSMpo sTmDXFzOkDF2K+qIZLcmJ3IA1McPskD7aZOfswN/Ic73VI+KYeWeHFMvjD229dthlckZ 7Pw7CmYUiUgEdrPbmWR9RWUFPoxEHhuvAxS/CB946w8djUzW0+SV8KcyOCQ2gt794dVP lQE4deofuKkQmV65yAZRe4Gfjr2ECh9SoQ09Wp7h+3FO5wUA4ylhZHsPP47V9uScZjBP OWjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778540499; x=1779145299; 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=7yrHUiu1eclhnN5DTCiPARDxM7SXoj9Pgm5FYtgWEls=; b=f0EfbR1ewCMnRkgXRptQ92jsacfXaW2wjtT1N2uQIoqn6NPLDfb6onzkLWP7L97Zm7 /3AvENvH811DDGeRuIvLZ535WtQPVyQidSbWzjGGyZzsJUgXo2Dp7pwtS6NPCvnBnlBn gEceM0zPFhDNvPM3xj6LsLeGMhEjhCS2gpTjaXtaQTrcMgK81tQS0KiVVxD0O7O+22wK EjJ1J8PnRwdi+IOidIis4ohU7B/KOFlmDOtUGavUKKP+HtFHbmPEwbapsKyKE3jJp32G NEL4j7GRH6dIqILTXds8NVetOLu+SnULRiy1OFPlHlaEKnlZtF3UTrJM8uUPgnE6e4hd IerQ== X-Forwarded-Encrypted: i=1; AFNElJ8CUDLzXsb4eVYayGs4frn7ACSCP24Xj73+O3oPqQvitWAwm2iCe1bLr4X/71pRmKt76DId5NmZF0HrAj8=@vger.kernel.org X-Gm-Message-State: AOJu0YzuKKPdlLgHofAe2jR3+n0vQhKiqIA/xP1asUI/NRnoWmFmgBne ezE7NQlM4UnOXu4N4/7BrjZRY1FiEMG6JFHH21fdsB+nd/Cz3fG1eSlx X-Gm-Gg: Acq92OEU/FO5r9TjW4orvr+34eoEIR1dv+lwb4J9KuvplyO37EkiZY9i0I0yc7mrDMF 8H57ktQUtJMeQSXfPlIl1NsXvqVfVUtv8GQhOcSdyCSHNO6M1dhVSRyMkELNsgVON4m+Ri0wqeK fhuqCirGw4rLB8CXUkHBf/puNrm/oCQ7QC2XhNK4zwZCQZ0/ovLNf//7T1SgSmRS+UuazyUeJxv ybYZylnQxSYy9i5VybwmaeSEn8qM7YGTC0yhjiba0EqkETzErRvc84BM9qASWVfTmqKVWZgtbxN CZJAmhAKpVpZsZxLZuZjB3HcNz86oDLcS8xPU+4tsuxvQxbZzMFqVRW2gd1jGk3uYEUROrhZezY buiAW2kquhxuFtqTqJd7TV3THQQj3JYJRngnQjS3viJZXlFLP5dsvJuVIIYMzv+l0EHqYkGCpz7 GINb4gln6b+deYvJdGD2aI4sNbwh17pDXmXdAO7wxM2Cn3ZoWKu+rRCZW4aBNzHllM5qPzkzoS8 eRqloGMhHoWi2s4RI7/cHPUgr8P0EQcad4= X-Received: by 2002:a17:90b:3502:b0:35e:5051:fb18 with SMTP id 98e67ed59e1d1-368b27411c6mr531978a91.26.1778540499305; Mon, 11 May 2026 16:01:39 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-368ace2a5cdsm312982a91.2.2026.05.11.16.01.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 16:01:38 -0700 (PDT) From: Rosen Penev To: linux-sound@vger.kernel.org Cc: Jaroslav Kysela , Takashi Iwai , Kees Cook , "Gustavo A. R. Silva" , linux-kernel@vger.kernel.org (open list), linux-hardening@vger.kernel.org (open list:KERNEL HARDENING (not covered by other areas):Keyword:\b__counted_by(_le|_be)?\b) Subject: [PATCH] ALSA: asihpi: Use flexible array for control cache Date: Mon, 11 May 2026 16:01:21 -0700 Message-ID: <20260511230121.28606-1-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Store the ASIHPI control-cache lookup table in the control-cache allocation instead of allocating it separately. This keeps the lookup table tied to the cache object lifetime and removes the extra allocation and free path. Assisted-by: Codex:GPT-5.5 Signed-off-by: Rosen Penev --- sound/pci/asihpi/hpicmn.c | 16 ++++------------ sound/pci/asihpi/hpicmn.h | 4 ++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/sound/pci/asihpi/hpicmn.c b/sound/pci/asihpi/hpicmn.c index d846777e7462..0674fd854cc8 100644 --- a/sound/pci/asihpi/hpicmn.c +++ b/sound/pci/asihpi/hpicmn.c @@ -641,17 +641,12 @@ void hpi_cmn_control_cache_sync_to_msg(struct hpi_control_cache *p_cache, struct hpi_control_cache *hpi_alloc_control_cache(const u32 control_count, const u32 size_in_bytes, u8 *p_dsp_control_buffer) { - struct hpi_control_cache *p_cache = kmalloc_obj(*p_cache); + struct hpi_control_cache *p_cache; + + p_cache = kzalloc_flex(*p_cache, p_info, control_count); if (!p_cache) return NULL; - p_cache->p_info = - kzalloc_objs(*p_cache->p_info, control_count); - if (!p_cache->p_info) { - kfree(p_cache); - return NULL; - } - p_cache->cache_size_in_bytes = size_in_bytes; p_cache->control_count = control_count; p_cache->p_cache = p_dsp_control_buffer; @@ -661,10 +656,7 @@ struct hpi_control_cache *hpi_alloc_control_cache(const u32 control_count, void hpi_free_control_cache(struct hpi_control_cache *p_cache) { - if (p_cache) { - kfree(p_cache->p_info); - kfree(p_cache); - } + kfree(p_cache); } static void subsys_message(struct hpi_message *phm, struct hpi_response *phr) diff --git a/sound/pci/asihpi/hpicmn.h b/sound/pci/asihpi/hpicmn.h index 8ec656cf8848..40af7329587a 100644 --- a/sound/pci/asihpi/hpicmn.h +++ b/sound/pci/asihpi/hpicmn.h @@ -37,10 +37,10 @@ struct hpi_control_cache { u16 adap_idx; u32 control_count; u32 cache_size_in_bytes; - /** pointer to allocated memory of lookup pointers. */ - struct hpi_control_cache_info **p_info; /** pointer to DSP's control cache. */ u8 *p_cache; + /** pointer to allocated memory of lookup pointers. */ + struct hpi_control_cache_info *p_info[] __counted_by(control_count); }; struct hpi_adapter_obj *hpi_find_adapter(u16 adapter_index); -- 2.54.0