From nobody Thu Apr 2 23:53:35 2026 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) (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 3BF5937F73C for ; Thu, 26 Mar 2026 02:38:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774492686; cv=none; b=E+p0//9Ry6wiLC+jr2eSWKvc7JMg+v+6c+sINhn9AgZHAwLkpEAlY3pt4/Uuf8aXDgPSK0qHKH6mBvCUyUo1fPaA5nIFCOXEpjuDJZcEKxao4SUf/v4e7bFxlrhcJ7r13diBgbq0o1F/RzFhAhq+caL+moBQl42UBcHDKQ5SVfg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774492686; c=relaxed/simple; bh=W5KdYZIHsz/j2/tnh3bD/Ct1McJK/qbX4N67gEgOXhw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=NmUx0n0/HiEJIt7CifNbyIOH7aEY8dq2LNK5NU+ESOyxZTc6jgXfjj40F9FWBGuceAsSKFza4LGQ5JRKB3Qcf5RZc2rHiRxTedN87UqUwMjU0CR5oCLXMGGopcKhRAGM5Crq0YMvgJoeKulCJ69rZ0rcw/Wzr5NE21IERoxcMjs= 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=MEU8SlAn; arc=none smtp.client-ip=209.85.215.177 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="MEU8SlAn" Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-c73a5473bbdso222459a12.2 for ; Wed, 25 Mar 2026 19:38:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774492684; x=1775097484; 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=u0QALCq0GXggBo+60L36Krt74tg9xn3fuWENkieQ6lk=; b=MEU8SlAnTEMkfuyroE52j+A8nOtbRJ5K4fGrLDNeLEHfNbyWs4ojwVROWGRx04Wvqv RhPfYTJ3zKHDf/ffhoi6iRlvVDOpHIxhR1E/JFs9Kvga6nvbkkxf8pDlyMGfag05H/sD YtRBmukNP3i8ldqoeI15ngojtklIZhBP7+reKu7ayuIm7TgJdId+QWdtxAuIKNhFfUoX LTo5Li3gHzULWWUTLx2FSxCoeEtQD47cetMVhNAw+SpiAMXtspDou6Zkr6btFvP63Xqm AFMPyd6b0BtIEsyClOZX5BfKs82iido4QFNfsRPluxCQZDBv2LFtKB/B4g6A3ll3s6eQ jGBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774492684; x=1775097484; 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=u0QALCq0GXggBo+60L36Krt74tg9xn3fuWENkieQ6lk=; b=oZsS5W7dAwFLhqUKEosyIdfYl+CtnE3kGWkjedpCOOWQpxSsiNS8zlAx5FqV454XPd fgFqiSrLYZkcfiwRTBWfZQeRVIn6ooFGQ/kAiBSXP35hrajkhfnVBpV9nNcK7o41LUO3 YiQXC093AF3uqGL3AchnsXejbUU5R7D76JN6ROvFtgSn/vyK08BvUDPKrBexebvRkv/d c//CQNEDdrP5y8xoZBLFp96yIDhPO5YvaIJFta9S82KegCYFMH9m8kMVY8GGy0VSLFzy eXuAn3OPiye0tjEnuuIccqR+9w0c+0oaQWogEL+ScrVRrJkITJtLVnsdu1yDdypgV1PN OEzg== X-Forwarded-Encrypted: i=1; AJvYcCVBFBUcvxNjQYCZq30Fq/C1rzxXl1jwsZSf+EL7pin9o7ZCgugm/PmKzGsa647L5Pd6kkuAsJoVdtIwAT8=@vger.kernel.org X-Gm-Message-State: AOJu0YzUvdUmitV0Kammvgpj75PnYW+T6u2jtIEouh5ltgPcy0ZS5vZ4 Z+UnNwDg8GEhlsbR60HRbZ+jQjkK5puXS2sTCICtAAKbQGFmUbaoP9aa X-Gm-Gg: ATEYQzz0qTc6wKPchIIaWkI5E6y3vkKIi04yPIf2JQjniKKx3DLacYQ13Eu4HbeoE3H lF/DxCgyV20T6FO8aMv4+bazNsRqqjbbr+Df6mPJu7Crfg+sPETZ3GHZ0Male/hREF00JAZ5pou Gz+mBhZ26dHCs0ag85MU0Z0HX9Bq/loBdrrJCvsu+RnEqnSGelJ16gojb8fSt4fPkSyWlro8g9v /ftbuoDnyqBXxvpj6CVFZC9T4pBqLkjbTxezoPYjPYIIhRTMeDe38B5kJPfhRw/KmDlr+/vmFWx yPqnTtSIoh2tBl5QB+wazqdhZlyjLnz9QnphA9RrAYaUw9hTlCl42Q41aUNdnFF3xsydT9ll514 YOMJHSvaX/J2VQAk7gRGT83XNhFQ4dz1wGvK5UFWABGek3ZhADYtNLng0fUBb6oJaB4vHKUcOn3 wPW3t8cm4uU3UvITMCUDaWhj7BLBVXVBhcBsfKY7lzG9qHWl0BfdE27xI= X-Received: by 2002:a17:902:c943:b0:2ae:567f:fd7e with SMTP id d9443c01a7336-2b0b09a717fmr65559855ad.4.1774492684516; Wed, 25 Mar 2026 19:38:04 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d::8bd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b0bc8fb099sm12398075ad.72.2026.03.25.19.38.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 19:38:04 -0700 (PDT) From: Rosen Penev To: kvm@vger.kernel.org Cc: Alex Williamson , 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] vfio: pci: use kzalloc_flex Date: Wed, 25 Mar 2026 19:37:47 -0700 Message-ID: <20260326023747.54485-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" Simplify allocation by using a flexible array member and kzalloc_flex. Less memory management needed. Use __counted_by for extra runtime analysis. Move assignment to after allocation as required by __counted_by. Signed-off-by: Rosen Penev --- drivers/vfio/pci/vfio_pci_dmabuf.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_dmabuf.c b/drivers/vfio/pci/vfio_pci= _dmabuf.c index 3a803923141b..40e7e035a720 100644 --- a/drivers/vfio/pci/vfio_pci_dmabuf.c +++ b/drivers/vfio/pci/vfio_pci_dmabuf.c @@ -14,12 +14,12 @@ struct vfio_pci_dma_buf { struct vfio_pci_core_device *vdev; struct list_head dmabufs_elm; size_t size; - struct phys_vec *phys_vec; struct p2pdma_provider *provider; u32 nr_ranges; struct kref kref; struct completion comp; u8 revoked : 1; + struct phys_vec phys_vec[] __counted_by(nr_ranges); }; =20 static int vfio_pci_dma_buf_attach(struct dma_buf *dmabuf, @@ -95,7 +95,6 @@ static void vfio_pci_dma_buf_release(struct dma_buf *dmab= uf) up_write(&priv->vdev->memory_lock); vfio_device_put_registration(&priv->vdev->vdev); } - kfree(priv->phys_vec); kfree(priv); } =20 @@ -258,33 +257,28 @@ int vfio_pci_core_feature_dma_buf(struct vfio_pci_cor= e_device *vdev, u32 flags, if (ret) goto err_free_ranges; =20 - priv =3D kzalloc_obj(*priv); + priv =3D kzalloc_flex(*priv, phys_vec, get_dma_buf.nr_ranges); if (!priv) { ret =3D -ENOMEM; goto err_free_ranges; } - priv->phys_vec =3D kzalloc_objs(*priv->phys_vec, get_dma_buf.nr_ranges); - if (!priv->phys_vec) { - ret =3D -ENOMEM; - goto err_free_priv; - } =20 - priv->vdev =3D vdev; priv->nr_ranges =3D get_dma_buf.nr_ranges; + priv->vdev =3D vdev; priv->size =3D length; ret =3D vdev->pci_ops->get_dmabuf_phys(vdev, &priv->provider, get_dma_buf.region_index, priv->phys_vec, dma_ranges, priv->nr_ranges); if (ret) - goto err_free_phys; + goto err_free_priv; =20 kfree(dma_ranges); dma_ranges =3D NULL; =20 if (!vfio_device_try_get_registration(&vdev->vdev)) { ret =3D -ENODEV; - goto err_free_phys; + goto err_free_priv; } =20 exp_info.ops =3D &vfio_pci_dmabuf_ops; @@ -323,8 +317,6 @@ int vfio_pci_core_feature_dma_buf(struct vfio_pci_core_= device *vdev, u32 flags, dma_buf_put(priv->dmabuf); err_dev_put: vfio_device_put_registration(&vdev->vdev); -err_free_phys: - kfree(priv->phys_vec); err_free_priv: kfree(priv); err_free_ranges: --=20 2.53.0