From nobody Thu Apr 9 18:55:11 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 D31F7248873 for ; Fri, 6 Mar 2026 03:16:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772767020; cv=none; b=eu8XKk5veIcyqJPMuansl367gpCYpRiz7QQleK8Cf4Zh9dHUJArndLaa2Co2BLobIfD+CDF5ki1zWbYeunsTogBw78AoqHIefe330iMZLhJrD6+bVvydOqbjvvf4FbS2rey5azjcH7C8Jq0H8HU8oTiLpdRfaqVy9wBkwDbKR94= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772767020; c=relaxed/simple; bh=m68gnYmctKVpeghMNZk6qG10siwQrI61Fd4jyCWFufU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=XlDcD5enclWIG8Ry0nEVxqi2JHTl2MCnfoX76YKGU5P59Y8kvrZPQTH2u88g/4TxrfYfKld/QTVJxwfoTmB21ElgiS1j9wU0TjA4/uM4vUyUdc42XRz/ntYhXDzu3J/HdUBqGPnIPJ41XOYAW5nA37bW9MmqKgrn38qyMwvs91w= 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=HlwN4eXQ; arc=none smtp.client-ip=209.85.214.179 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="HlwN4eXQ" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2ae56f8776dso34703385ad.3 for ; Thu, 05 Mar 2026 19:16:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772767018; x=1773371818; 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=AoG/ryHBSZlzW7QNKPkSRF4IaoRTutm96Nzl+aL2qjM=; b=HlwN4eXQNE3ekE3YOv9efdQMuAI0mQ2cc5dTNpBIBDLPo+6ShBts0/5ABLbvDp8pzX MZ3tCAsrQaBmgOYvac5Q4EZlVQvfiIGl/1SRZLm7N7+ri46+l6hz1jJZRXLENenY4Oni 7hBj60f3P6SjFhKYURdJs6Bao8NaubdHjoHRvxDSa8rwqMkz3tK/YQHD7fO93QuIP5P/ PBG3xUXkC3IndBqcOVzl7bCnwYkHd5NDSzd7ClWdTHk6f2l70mU7qrrk3oIUhlxUEmRc QVObJT9g2qcbOKbNl8MqaNAlxq9RREAl280Y+gRWY/EYAJEeGP+6EPexivkKdBW7Emoe H2Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772767018; x=1773371818; 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=AoG/ryHBSZlzW7QNKPkSRF4IaoRTutm96Nzl+aL2qjM=; b=gXUzLWD32etKGdr10kawJV2PwUuDTzxdXQS7qlqb5tqmBeykSMBoTbPfj6cjrAeFog jkUgJd4QvABckEP+HhqgZVbLawksQtVXdET0V2ZQBH4Rxw/+e2h5KBoniOH0UyRoGWZY jGZPEj3oheFEyu6y44+xDLkkcmzDWaX2q8UHAKFeUgu1PF41NpLCFZ8/0S/I5prfqUGv xUzQYUzvTVPisIY/iOmtBaCiO6M4LNJbGXrflIYQVSyePxZTajanDMuxBx2Z4vDrPWHz SY99xx7z8ZZBTy82ePES1Xr1cJr/NBkXKdfEyuZ/S2k7V3tBomKwGkpOn7HK6x6yFgGd Jpkw== X-Forwarded-Encrypted: i=1; AJvYcCVdW2BLPBHQE3kNqyzbzDqLBSoMtYw3wTT7H8mKKbdjIglUZOR35ANbH0ohTs3fn8uSnjfMRvirzY0ENM4=@vger.kernel.org X-Gm-Message-State: AOJu0Yzfi+LzXzRk3vETGqYlfoMrCOfpchIuEGLoFIIyj4NVGrXNcOCN JYgmUAKWmnW2zxYpP/el0GJBcP+gxprOBg0AfaRzO7zxIPOwefVkXTy0 X-Gm-Gg: ATEYQzyHA5fZnO1EoxA3QxIYMnmHKt133X0ZhW9g700juIMlLX2enl0xMbabBUw5VQy mFOJsCG1GBnPCZMVnI2CPhgj3DCHwe94TTmJq28/cx/wc9DN+oI8QmHmZG+rnDSQpYkxEiTzCKP I/fP6e7qs69jccr/nE4FvOHnjIaJ9MOxf+rlyw4dGbl7bHWuru5xT5B8uA+lN7b1cmexW6eZbeg awyu47731AEQQNGb2x/h63Q+hs/VXuPMuj9mJEpFGPhdppkVDHZgUXFtUxgIVSc2Zd3+grOVpsP 4KqpT9VGz3AZ3NMLZZ8cGUoSXST9FljLlBEHQx1Eibu49HPawk3po55wClQO0laYW9R26nOX8VW dcavB3VaZDewEL30XWg1iCdDCuXmt+p4yoxHvOjIsmTjJyQJoD4mJWBfRgTsqfsVSqKR9N9EplC coHreoFLMZMNK8ojzuPxOcSRVNXrloaiNZ5G2jvilH/m1xnwepT5HnUus= X-Received: by 2002:a17:903:1b6c:b0:2ae:5345:89ee with SMTP id d9443c01a7336-2ae823fee84mr8684175ad.1.1772767017919; Thu, 05 Mar 2026 19:16:57 -0800 (PST) Received: from ryzen ([2601:644:8000:56f5::8bd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae83f7864dsm1749235ad.49.2026.03.05.19.16.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Mar 2026 19:16:57 -0800 (PST) From: Rosen Penev To: linux-usb@vger.kernel.org Cc: Badhri Jagan Sridharan , Heikki Krogerus , Greg Kroah-Hartman , 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] usb: typec: tcpm: kzalloc + kcalloc to kzalloc_flex Date: Thu, 5 Mar 2026 19:16:39 -0800 Message-ID: <20260306031639.46942-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" Simplifies allocation and allows using __counted_by for extra runtime analysis. Signed-off-by: Rosen Penev Reviewed-by: Gustavo A. R. Silva --- drivers/usb/typec/tcpm/tcpm.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 1d2f3af034c5..272f9187b12d 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -605,9 +605,9 @@ struct altmode_vdm_event { struct kthread_work work; struct tcpm_port *port; u32 header; - u32 *data; int cnt; enum tcpm_transmit_type tx_sop_type; + u32 data[] __counted_by(cnt); }; =20 static const char * const pd_rev[] =3D { @@ -1653,7 +1653,6 @@ static void tcpm_queue_vdm_work(struct kthread_work *= work) tcpm_queue_vdm(port, event->header, event->data, event->cnt, event->tx_so= p_type); =20 port_unlock: - kfree(event->data); kfree(event); mutex_unlock(&port->lock); } @@ -1662,35 +1661,27 @@ static int tcpm_queue_vdm_unlocked(struct tcpm_port= *port, const u32 header, const u32 *data, int cnt, enum tcpm_transmit_type tx_sop_type) { struct altmode_vdm_event *event; - u32 *data_cpy; int ret =3D -ENOMEM; =20 - event =3D kzalloc_obj(*event); + event =3D kzalloc_flex(*event, data, cnt); if (!event) goto err_event; =20 - data_cpy =3D kcalloc(cnt, sizeof(u32), GFP_KERNEL); - if (!data_cpy) - goto err_data; - kthread_init_work(&event->work, tcpm_queue_vdm_work); + event->cnt =3D cnt; event->port =3D port; event->header =3D header; - memcpy(data_cpy, data, sizeof(u32) * cnt); - event->data =3D data_cpy; - event->cnt =3D cnt; + memcpy(event->data, data, sizeof(u32) * cnt); event->tx_sop_type =3D tx_sop_type; =20 ret =3D kthread_queue_work(port->wq, &event->work); if (!ret) { ret =3D -EBUSY; - goto err_queue; + goto err_data; } =20 return 0; =20 -err_queue: - kfree(data_cpy); err_data: kfree(event); err_event: --=20 2.53.0