From nobody Mon Jun 8 10:56:41 2026 Received: from mail-dy1-f181.google.com (mail-dy1-f181.google.com [74.125.82.181]) (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 79CD130FF08 for ; Fri, 29 May 2026 13:12:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780060369; cv=none; b=pwyZ1BDqQMDuMe/EUL3V17cMwQTRt4dgi29loFkYltfG/W/yBcDU7+d2kIcr5v3zKdLj9jCvHiyaGIxgxsqFsxSis0eLPcZD4jPYplhUcIOnqpjxbXimu+6cGq5gNK6wBTlocE6+0fA6dh6+fAzqCx2FDRY2lwwZqWJAhLN3zhQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780060369; c=relaxed/simple; bh=ou2QGsSQmw8iWrsFpYfa0TERZ2fHNFeLR8NsR1l532Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=eVH7HTArgpQMTxK3IDs/uA1rdbnKy9tSExYykRAaEVGuDfKOdVRchXWYdQUhfOZk/EDoeETHVcMpcdQug/AGkduGPotrn16mUYt14DPM7VUJB9deTpzt8AKB0j1Ylu35FONuEy4VzV4YBAZg3rPd9TAbqChTy1dZ9DBBuSWmLFY= 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=FAeenBHS; arc=none smtp.client-ip=74.125.82.181 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="FAeenBHS" Received: by mail-dy1-f181.google.com with SMTP id 5a478bee46e88-304cf518c9dso2987056eec.1 for ; Fri, 29 May 2026 06:12:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780060368; x=1780665168; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=jq4/9wTNUEbdtC/nlWbxLHnYx9TMtmlwe9oZzZSkiK4=; b=FAeenBHSovJf472LnXE5eKIVW3nbDP+W0vRfw3xO5yVhdpgNLKEhJ1/uD9ghZhBUTm DXHpbJImgVut90UsEDnQrGdpi/eXnUCGfbp76KoyEQpDR5wZSgXuNSa45qpTwrrUp0Np Go5hfvhXq24tdIJkilJV315vPoMSsJAtXMU8rTMxHLFfZzYh/kInsm2JIuMvT92Xbzvm sJZhyU/w0jkZcHNnjX1ZjZduJzUYCzf6NfDLLck+gOoqeUbEfvxdIexn1qL2xq5uLXTq jmcLP5X5WbQiWH+jdXIuMIylhFULDRL6W6r4BRUCPmDLPmPLjUthPCFI/1fUsJaSN+qg iQ3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780060368; x=1780665168; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jq4/9wTNUEbdtC/nlWbxLHnYx9TMtmlwe9oZzZSkiK4=; b=OX2QSpI3jakxNN7h8hzkU72attNcrt5ggzTbmmg2egymE/kdiuW2SzZSx7wJBTp7TS mUvf5OX9bsHb5cVuPyFYLDuv79Jhgm40cBhvqCRvwRkE0UhX/A4jRwB0zzU3xkKGMgVI xbBnHeZHHUmveoaNABFQYrC/gfejRf5aWCCaOLM+RplXb38edws6wcOchCp8a+HB/l7S IMyZFCKEGtaK0AOPEqPMlljvzeuGETEdqbsrtHDE7KsNe9EDAPOolr3FOj913YUUn4Y1 0n6v1yf5+cthComnITiyiIIc/iljMWcmThoX8oxvbTqD3Uy4vozUWGUJKv24xq5bej/K 1qYg== X-Forwarded-Encrypted: i=1; AFNElJ85/bfAaF898fTFuXnwjFAPLKMpRXYdywM8Y7PLFZxvkf+BTTsKkHGXJUBBatnnW6RSpMAQdUAQxvw5pv0=@vger.kernel.org X-Gm-Message-State: AOJu0YwU9xnQ+3aMQ7ZUDTgLdHn0qDxbRHAXTgAfpiiQx9hjCZ+oazsj rYuyOCnwh6MGCrU46kDhqXfT7VToWYaEqL8cfvhaINf8vyH+qvNBRjSoM5Xb9g== X-Gm-Gg: Acq92OEY6NBYpPYpnC/hq87YcEE/9G6bTaoktOFRb4Tgb0hOejkaV41ggMijLBxQvp7 GLehnDdO2/RCl6ug/ML0BiUBhPUBIE9nM47FQYyM2dFDhedmFnWBsOVslDCSzLXYZI4Qicnx/jD SK3EfxNvw4zSkFm/gJ8jcTaQd+6NZIzJ120ZxNGHdS29dYswd6h3Xezy3KUORxWnmMn6hMhLPLc yLL0LNc7FbUKNmBp0Vj03BndepX6OA9RFXjDiciST1JQ/KmQgVDCwn6FZptg2KgF3PWJkD8gFO2 u8N4L4AIjor/FxKWNKro1/CwHdOeA0y2hW3PBUkay0AktIis6E46X/N0xZXG9OYa+l5Azp9dGJ3 CEWj4jEUFllqVVRwZmdwMk7uapQtv97WWFoa6/s6XPZQpxKsbAllbz9aqkJAAkxxCFqRTxBO4eP Ckt9b4gD9jNkOnZ0qAQfdJHyLO5DMh3KjR4X536iPAje/cl5yUDoOQcoGinFpb3q69C1XSnZ0/g v9/L76m5PrU X-Received: by 2002:a05:7300:f10c:b0:304:de26:3cb6 with SMTP id 5a478bee46e88-304eb1cfbbdmr1326606eec.23.1780060367455; Fri, 29 May 2026 06:12:47 -0700 (PDT) Received: from [192.168.1.18] (177-4-161-23.user3p.v-tal.net.br. [177.4.161.23]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-304ee0dd6fdsm1134768eec.23.2026.05.29.06.12.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 May 2026 06:12:47 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Fri, 29 May 2026 10:12:39 -0300 Subject: [PATCH] ALSA: seq: Use flexible array for device arguments Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260529-alsa-seq-flex-args-v1-1-bb3ff5c62d49@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXMTQqEMAxA4atI1hOohfp3lWEWqUaNiM40KoJ4d +u4/BbvHaAchBWq5IDAm6jMU0T6SqDuaeoYpYkGa2xmnM2QRiVU/mE78o4UOkXnfFkYT56aHGL 4DdzK/p++P4919QPXy32C87wA6gGd4XYAAAA= X-Change-ID: 20260526-alsa-seq-flex-args-55b980babad7 To: Takashi Iwai , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, notify@kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2486; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=ou2QGsSQmw8iWrsFpYfa0TERZ2fHNFeLR8NsR1l532Q=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDFmSE87WqkkftWWMvt2fWvO8R8bGINBYV0DZiDlGJEzNd 1rJ/qyOUhYGMS4GWTFFltVJiyz3dD24Wh+3wgNmDisTyBAGLk4BmAi/EiPDiz9qW8sm5n8ysBDX 7xJbKitQu986xmNN5pSILIP2zX/OMTKs5KxlSlhUFBzY6KTPs5cli+3r30mXRL+YdEx63iMtups PAA== X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 snd_seq_device_new() allocates struct snd_seq_device together with a caller-specific argument area. SNDRV_SEQ_DEVICE_ARGPTR() reaches that area by adding sizeof(struct snd_seq_device) to the object pointer. Make the trailing storage explicit with a flexible array and allocate it with struct_size(). This makes the object layout self-describing and avoids open-coded size arithmetic in the allocation and accessor. Reject negative argsize values before calculating the allocation size. Current in-tree callers pass either zero or sizeof() values, but the function takes an int size argument and should not let a negative value flow into unsigned allocation arithmetic. Signed-off-by: C=C3=A1ssio Gabriel --- include/sound/seq_device.h | 3 ++- sound/core/seq_device.c | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/sound/seq_device.h b/include/sound/seq_device.h index a72380c202e9..3137d4c5f5a8 100644 --- a/include/sound/seq_device.h +++ b/include/sound/seq_device.h @@ -22,6 +22,7 @@ struct snd_seq_device { void *private_data; /* private data for the caller */ void (*private_free)(struct snd_seq_device *device); struct device dev; + unsigned char args[]; /* driver-specific argument */ }; =20 #define to_seq_dev(_dev) \ @@ -64,7 +65,7 @@ void snd_seq_device_load_drivers(void); int snd_seq_device_new(struct snd_card *card, int device, const char *id, int argsize, struct snd_seq_device **result); =20 -#define SNDRV_SEQ_DEVICE_ARGPTR(dev) (void *)((char *)(dev) + sizeof(struc= t snd_seq_device)) +#define SNDRV_SEQ_DEVICE_ARGPTR(dev) ((void *)(dev)->args) =20 int __must_check __snd_seq_driver_register(struct snd_seq_driver *drv, struct module *mod); diff --git a/sound/core/seq_device.c b/sound/core/seq_device.c index 1b062d6b17ea..a7b69ff07261 100644 --- a/sound/core/seq_device.c +++ b/sound/core/seq_device.c @@ -234,7 +234,10 @@ int snd_seq_device_new(struct snd_card *card, int devi= ce, const char *id, if (snd_BUG_ON(!id)) return -EINVAL; =20 - dev =3D kzalloc(sizeof(*dev) + argsize, GFP_KERNEL); + if (argsize < 0) + return -EINVAL; + + dev =3D kzalloc(struct_size(dev, args, argsize), GFP_KERNEL); if (!dev) return -ENOMEM; =20 --- base-commit: c784d0e6a62abbd2af58bbbe2d20f88dd550e3eb change-id: 20260526-alsa-seq-flex-args-55b980babad7 Best regards, -- =20 C=C3=A1ssio Gabriel