From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (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 B3AB0344042 for ; Wed, 11 Feb 2026 03:29:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770780582; cv=none; b=SmtzVToAMDWkCLl82Ym1zCHCCG3OANo/k1rNBoBIs9tbaP6QIhKgMTbPrjxAnCYeJ3dL4SkI8THhyRGhIe9541nF1EOP9mhz1tG12clqM2taWoC9m/qcIlK8xsV59bq9Y0RVv9HUNZLc2MHP8wizxXGXN9Uqasvvwa3uwyMauoI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770780582; c=relaxed/simple; bh=LEWKl1EusnsoCVOCGkkD3zuIV7Myuv/JJySiflQnLR8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pye/cGNqlWKMEpoF6LUJkgm38ENHWRAp7CnE3l63ctv/Ci06O5LsnDFLx6CJ4Ozq3mNDgzxDU0JHcQYEXXTR90rRrZtYoKXylf3As1L34If3tB1B5SgFVFBKMvFpSBoqIwn2Htrklis0fxnCDKYDp9O45u/jKpa9cQdILFpLFG4= 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=LpK2WvFt; arc=none smtp.client-ip=209.85.210.178 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="LpK2WvFt" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-82361bcbd8fso2551615b3a.0 for ; Tue, 10 Feb 2026 19:29:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770780581; x=1771385381; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xCVntle00304lt8vmoDLORT430txZdDpjlJMTS+t+zI=; b=LpK2WvFtb0gIc3CpMvOtclYeasXQmPTbQtxdsg8YxByB5jn8iPuq3TAumgxRtMdXx6 etlaiwu4tkrSYjwAgqTcKIBO5KuwuPvc8ZMTJ8rAzv8AhX8WDGOzXZR7wCi1Fgqrx7X5 FkEapjvYiyFixKV4/zdszIo5vm2C5KICaF78QwIV3NRx6YPZb4KvOxOhQPRggxKpiGJ+ ueNgeG+YY/ovDeYt6DvWtHNhsPSbX/hin0lG8j7RdYiqMM85bbozv2LLjFurshXLv/cz c28PFGxVeGk/H79JV6ZDaF/t6nlF3D/XgxI31vODOIOH4lOYlYtcKcmoCiiSk8FTw4Oy GcmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770780581; x=1771385381; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xCVntle00304lt8vmoDLORT430txZdDpjlJMTS+t+zI=; b=IZA7E3LpJVw9tgoYEDy87oPZQBXErkA2ugtUeTRCdD8iglwh82vjhMXfWdRfdp+3Ys 16/kjUrqk5luSpzI2PpAEKmxm3csMyHG/GFGqfUdZkg+87hdmlLuXz5cCIzWIfaJJsFI wK4Iq84CMrbSUH4+kDUhxKaG5o+WdCNhjKBH4rYtOLgEZ/vqAfLz1fnO98hyMU/pYXSb aF4oT6zKEGKwP0EhcUlIAATGjaMdWFOE/+FPhNE+559A/M5UaVoTAOO1zhyP7j57Hdh5 7q/04QMGa7CaP8WerJt+Wnk8hefOAamnOMGaGlAenUtTWGB5DIMF7pQ8iHl9J9xws4PM /j/Q== X-Forwarded-Encrypted: i=1; AJvYcCVUvK6EibhAmOmLaRZmvy2H98bRJdDhS5AiyDXmJMEi16l8FGLe3dkCaPC0pu6pYfiIVXltOOHP5tWeEXA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw50A6mrqVrcRQFohm+g0aDWuydXp/FGTRW7pbGSjWTrfi00YlI OS5DPCAFdiiE6stRePJxooVeYCOIAJdOwfw+ZqCWmJ7UvzykdMw6SPbD X-Gm-Gg: AZuq6aJqieEx78CUOR08aw4NvSjirdYNHWqFwvp7L2N9+aiDhmphYSKH3dbG7rI9gr5 fLOmWnnBDdoWX/vIpXHdINXVmZuNglI2SvvU073ZrUydb7458yd3v0FR5WGe92qj/S042RtWkT/ 8zuxxQ71mc90zVjKFf3PsReKdcaEwlo6PMP+qfrME7Q99Mm+wPZFoHWSBKfIrpc0aks95zg8BlZ E2KYXBTO1ACqioIpj81zwayt8y53ZMbZAwGey4mD+esZI+Jmh8UmsnltqZVpRnwNhV0jr9dqbPi PO1SjCe3OmK1IawIr8nOh2fv9fYkocEZBeCitJkyED7bCn09K4mpJyrLbYsdhBrTBVk9ANZG67D OY3E/RnIVZLpGIjhknAnTZM8V5usRZbqQM4MGP5QCzgfT+VS8F7mIV/BgwvqVtIFSVg5+1x1N72 QgcmhdB48gyw4aPUV12pvSWstIk83Lx/c4IZi0XcojavtC//OoWjMrsnbnoG5H X-Received: by 2002:a05:6a00:802:b0:81f:9bdc:9ef1 with SMTP id d2e1a72fcca58-8249b1454ddmr1325281b3a.69.1770780581046; Tue, 10 Feb 2026 19:29:41 -0800 (PST) Received: from zenbook ([159.196.5.243]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8249e8473fasm439521b3a.55.2026.02.10.19.29.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Feb 2026 19:29:40 -0800 (PST) From: Wilfred Mallawa To: Carlos Maiolino , "Darrick J . Wong" Cc: linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Christoph Hellwig , Wilfred Mallawa Subject: [PATCH v3 2/2] xfs: add static size checks for ioctl UABI Date: Wed, 11 Feb 2026 13:29:04 +1000 Message-ID: <20260211032902.3649525-4-wilfred.opensource@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260211032902.3649525-2-wilfred.opensource@gmail.com> References: <20260211032902.3649525-2-wilfred.opensource@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Wilfred Mallawa The ioctl structures in libxfs/xfs_fs.h are missing static size checks. It is useful to have static size checks for these structures as adding new fields to them could cause issues (e.g. extra padding that may be inserted by the compiler). So add these checks to xfs/xfs_ondisk.h. Due to different padding/alignment requirements across different architectures, to avoid build failures, some structures are ommited from the size checks. For example, structures with "compat_" definitions in xfs/xfs_ioctl32.h are ommited. Signed-off-by: Wilfred Mallawa Reviewed-by: Christoph Hellwig --- V2 -> V3: - Drop excess whitespace --- fs/xfs/libxfs/xfs_ondisk.h | 39 +++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/fs/xfs/libxfs/xfs_ondisk.h b/fs/xfs/libxfs/xfs_ondisk.h index 601a8367ced6..1914ffe59202 100644 --- a/fs/xfs/libxfs/xfs_ondisk.h +++ b/fs/xfs/libxfs/xfs_ondisk.h @@ -208,11 +208,6 @@ xfs_check_ondisk_structs(void) XFS_CHECK_OFFSET(struct xfs_dir3_free, hdr.hdr.magic, 0); XFS_CHECK_OFFSET(struct xfs_attr3_leafblock, hdr.info.hdr, 0); - XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat, 192); - XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers, 24); - XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat_req, 64); - XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers_req, 64); - /* * Make sure the incore inode timestamp range corresponds to hand * converted values based on the ondisk format specification. @@ -292,6 +287,40 @@ xfs_check_ondisk_structs(void) XFS_CHECK_SB_OFFSET(sb_pad, 281); XFS_CHECK_SB_OFFSET(sb_rtstart, 288); XFS_CHECK_SB_OFFSET(sb_rtreserved, 296); + + /* + * ioctl UABI + * + * Due to different padding/alignment requirements across + * different architectures, some structures are ommited from + * the size checks. In addition, structures with architecture + * dependent size fields are also ommited (e.g. __kernel_long_t). + */ + XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat, 192); + XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers, 24); + XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat_req, 64); + XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers_req, 64); + XFS_CHECK_STRUCT_SIZE(struct dioattr, 12); + XFS_CHECK_STRUCT_SIZE(struct getbmap, 32); + XFS_CHECK_STRUCT_SIZE(struct getbmapx, 48); + XFS_CHECK_STRUCT_SIZE(struct xfs_attrlist_cursor, 16); + XFS_CHECK_STRUCT_SIZE(struct xfs_attrlist, 8); + XFS_CHECK_STRUCT_SIZE(struct xfs_attrlist, 8); + XFS_CHECK_STRUCT_SIZE(struct xfs_attrlist_ent, 4); + XFS_CHECK_STRUCT_SIZE(struct xfs_ag_geometry, 128); + XFS_CHECK_STRUCT_SIZE(struct xfs_rtgroup_geometry, 128); + XFS_CHECK_STRUCT_SIZE(struct xfs_error_injection, 8); + XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_geom, 256); + XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_geom_v4, 112); + XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_counts, 32); + XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_resblks, 16); + XFS_CHECK_STRUCT_SIZE(struct xfs_growfs_log, 8); + XFS_CHECK_STRUCT_SIZE(struct xfs_bulk_ireq, 64); + XFS_CHECK_STRUCT_SIZE(struct xfs_fs_eofblocks, 128); + XFS_CHECK_STRUCT_SIZE(struct xfs_fsid, 8); + XFS_CHECK_STRUCT_SIZE(struct xfs_scrub_metadata, 64); + XFS_CHECK_STRUCT_SIZE(struct xfs_scrub_vec, 16); + XFS_CHECK_STRUCT_SIZE(struct xfs_scrub_vec_head, 40); } #endif /* __XFS_ONDISK_H */ -- 2.53.0