From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from omta034.useast.a.cloudfilter.net (omta034.useast.a.cloudfilter.net [44.202.169.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CBB0718990E for ; Wed, 28 Aug 2024 23:59:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=44.202.169.33 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724889549; cv=none; b=V/8FOWIg3GsU4VcVRt8lubd7MDemFil7bhRcq9/rgVAwoLK8+CUtz5HdWdZbCv8Tp+vk9GBcapWW3w8WQcf0HH7mwS2CKDJtW6w6i/iK3AROiFOUFinQVH4kts8H6nBtZHcOX2q4FADcayW4/c89oUl37hnx78qgOY5UlHmYjgE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724889549; c=relaxed/simple; bh=HMYfC/hI9S7Sen9hqERBXwkm2HY3AHiQThzMVQy+2nA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=sHGJmYrBgngD1PyieesKyYMQgynrruFlGp7BaelYqYBZOBkBk8CJ9jtwwY2k9yC24J/gU4blyF4nDHDrWNinXEcXanu4cryAeUSPr55z3aofRKykEJe+lBHIE/eJO6rIi4HJd2pqX6SSD5O8k2WiWFPXbykCXJKt7fgbMPclP8k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=embeddedor.com; spf=pass smtp.mailfrom=embeddedor.com; dkim=pass (2048-bit key) header.d=embeddedor.com header.i=@embeddedor.com header.b=xFvgCuNI; arc=none smtp.client-ip=44.202.169.33 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=embeddedor.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=embeddedor.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=embeddedor.com header.i=@embeddedor.com header.b="xFvgCuNI" Received: from eig-obgw-6004a.ext.cloudfilter.net ([10.0.30.197]) by cmsmtp with ESMTPS id jPpns9Sl11zuHjSZ3s4jKE; Wed, 28 Aug 2024 23:59:01 +0000 Received: from gator4166.hostgator.com ([108.167.133.22]) by cmsmtp with ESMTPS id jSZ2sGNgVks1PjSZ2sHZam; Wed, 28 Aug 2024 23:59:00 +0000 X-Authority-Analysis: v=2.4 cv=Ud+aS7SN c=1 sm=1 tr=0 ts=66cfb9c4 a=1YbLdUo/zbTtOZ3uB5T3HA==:117 a=frY+GlAHrI6frpeK1MvySw==:17 a=IkcTkHD0fZMA:10 a=yoJbH4e0A30A:10 a=7T7KSl7uo7wA:10 a=ZI_cG6RJAAAA:8 a=VwQbUJbxAAAA:8 a=G7Ig5-h-x50up4Ig-zsA:9 a=QEXdDO2ut3YA:10 a=CiASUvFRIoiJKylo2i9u:22 a=AjGcO6oz07-iQ99wixmX:22 a=Xt_RvD8W3m28Mn_h3AK8:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=embeddedor.com; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=gwdyghKD5k5c4CmERZykpZYJC0ag0Sw3dcYPpvLrdIM=; b=xFvgCuNIWC/Sg1fvGEywaCv1mi iYaQCsEvOtKAzDiYAKtDkWBpKYp7CnJ4+4d4TTDo4I+alED8eaP9S2hrhlI4Ovgw+Snq40TPCLCy8 nBv2gnEtiXixU4AfjYjLRo6YEqkRRr3X0WJtVl9beaU/rCH4iG+UOsWy5rLMCGjiQC0mX+k5/9W2u tLQoeq7Es0zmm/qtkcdXxPX5BvDOucjJvQM+cE1J+TKrAq/w6Fm3USeZ0roXQvd87rnzjblrpOsM5 5XFMQteyzyX2aZG733D7NRsmHE/g8vU/PPeslFlm/bqOz82QHa/956dNNgyF/NPXah5IZnNA4IELL bm7NNutw==; Received: from [201.172.173.139] (port=35262 helo=[192.168.15.5]) by gator4166.hostgator.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96.2) (envelope-from ) id 1sjSZ0-003R6C-0Z; Wed, 28 Aug 2024 18:58:58 -0500 Message-ID: Date: Wed, 28 Aug 2024 17:58:56 -0600 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] NFSD: Annotate struct pnfs_block_deviceaddr with __counted_by() To: Thorsten Blum , chuck.lever@oracle.com, jlayton@kernel.org, neilb@suse.de, okorniev@redhat.com, Dai.Ngo@oracle.com, tom@talpey.com, kees@kernel.org, gustavoars@kernel.org Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org References: <20240828214254.2407-2-thorsten.blum@toblux.com> Content-Language: en-US From: "Gustavo A. R. Silva" In-Reply-To: <20240828214254.2407-2-thorsten.blum@toblux.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 201.172.173.139 X-Source-L: No X-Exim-ID: 1sjSZ0-003R6C-0Z X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: ([192.168.15.5]) [201.172.173.139]:35262 X-Source-Auth: gustavo@embeddedor.com X-Email-Count: 2 X-Org: HG=hgshared;ORG=hostgator; X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfICEICrdSZoMfN+zv1bgUtQKRmimCTbc66bwgmy8GVd2YFrN+sBD9FrKC3BBHo0RFIC6p16sjz9ToH5cFvdijsfs8iDD8sQ/JHsu5CxapXmzZppHzHd0 kc0zszTxdHWIhbVTdiPdxp9j6fUpkC8M0mLXMUrtWu42DnaoHaYGGWW7IX9Pqvr33GDigBo3V84sPYRxsXyQlsPaPb0EeK86MQSQ6wjeEq8O7MDzDQVMQR/A On 28/08/24 15:42, Thorsten Blum wrote: > Add the __counted_by compiler attribute to the flexible array member > volumes to improve access bounds-checking via CONFIG_UBSAN_BOUNDS and > CONFIG_FORTIFY_SOURCE. > > Use struct_size() instead of manually calculating the number of bytes to > allocate for a pnfs_block_deviceaddr with a single volume. > > Signed-off-by: Thorsten Blum Looks good --`nr_volumes` is updated just before accessing `volumes[]`. Reviewed-by: Gustavo A. R. Silva Thanks -- Gustavo > --- > fs/nfsd/blocklayout.c | 6 ++---- > fs/nfsd/blocklayoutxdr.h | 2 +- > 2 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/fs/nfsd/blocklayout.c b/fs/nfsd/blocklayout.c > index 3c040c81c77d..08a20e5bcf7f 100644 > --- a/fs/nfsd/blocklayout.c > +++ b/fs/nfsd/blocklayout.c > @@ -147,8 +147,7 @@ nfsd4_block_get_device_info_simple(struct super_block *sb, > struct pnfs_block_deviceaddr *dev; > struct pnfs_block_volume *b; > > - dev = kzalloc(sizeof(struct pnfs_block_deviceaddr) + > - sizeof(struct pnfs_block_volume), GFP_KERNEL); > + dev = kzalloc(struct_size(dev, volumes, 1), GFP_KERNEL); > if (!dev) > return -ENOMEM; > gdp->gd_device = dev; > @@ -255,8 +254,7 @@ nfsd4_block_get_device_info_scsi(struct super_block *sb, > const struct pr_ops *ops; > int ret; > > - dev = kzalloc(sizeof(struct pnfs_block_deviceaddr) + > - sizeof(struct pnfs_block_volume), GFP_KERNEL); > + dev = kzalloc(struct_size(dev, volumes, 1), GFP_KERNEL); > if (!dev) > return -ENOMEM; > gdp->gd_device = dev; > diff --git a/fs/nfsd/blocklayoutxdr.h b/fs/nfsd/blocklayoutxdr.h > index b0361e8aa9a7..4e28ac8f1127 100644 > --- a/fs/nfsd/blocklayoutxdr.h > +++ b/fs/nfsd/blocklayoutxdr.h > @@ -47,7 +47,7 @@ struct pnfs_block_volume { > > struct pnfs_block_deviceaddr { > u32 nr_volumes; > - struct pnfs_block_volume volumes[]; > + struct pnfs_block_volume volumes[] __counted_by(nr_volumes); > }; > > __be32 nfsd4_block_encode_getdeviceinfo(struct xdr_stream *xdr,