From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 47A1C35958 for ; Tue, 10 Feb 2026 06:00:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770703234; cv=none; b=o+Xi7HvecofXR2GDKauN9YLQyS0AYriKDxD/O6Lvropnvl4XxoOGFJxmeE7cUmA4nEqHB2gpwmH6X3RuhDINSiICUQIXRzGSgZtOKbD0FPC8LuDOrpNxu5hMUYlSp++ZMjboGKQSDI4h6NjxA79iuuBLS2pmMUleCmlzVc1qPKo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770703234; c=relaxed/simple; bh=MqSWhWO8yNsdnkPUq0kzrlXLpLq02XL9hPi978Q+6mo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JdJ3Cx2ttAT6qEAh+t6rAo7iqHNiFODU3b6oRzYYNe15+HyVvWUpxQMCyjB+n7I+10bm1ednLRyQx8pAtWanNLMbEbPygronTD7e+hOQL7lqjQXNi40/qPlzBqjtGaufD4SWiQWgR22GJBM3D1B7BXc1Mqitc4lyVV+5dmf+eSA= 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=EoSWdXsx; arc=none smtp.client-ip=209.85.216.42 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="EoSWdXsx" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-35621da1a7dso337255a91.0 for ; Mon, 09 Feb 2026 22:00:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770703233; x=1771308033; 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=f3pi578tNsHpHm4XLR4sQaEFh2ch49VHP/2oPrNsjAA=; b=EoSWdXsxK3kcWvg/W0oACDP8qWqlqgPc4T+d88ugBss2sPpkLVmOuya6XJIYPkFzjE nCc1wQYgw8qkoscDP/PrXu9GGW1hox2AuQNnwuIU/84GqbsXhNdw6Wft/2QOAzYjQA1g QELKKxka1XdGE6Z64FZq+LfOteyIm/cn/kVch+IfCynatCZ4x/F/IQ8TnYT1AIPThODK pKjNoV5HmHvFoj246R5aTyfaolLp1q6cDb0LReFMnD2HQasDSqjumRN/m7YM90HzsclA M0q9F3RmwOMlNyzNE0AM9uAX7NJLnk9OWwnROWrMahnpSQT5DnKzt4Jbg5r0vJvDXgPm qbQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770703233; x=1771308033; 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=f3pi578tNsHpHm4XLR4sQaEFh2ch49VHP/2oPrNsjAA=; b=cL3rBlZKbPQijldQVNNZHFTsWvCj1V9ykJuS6ooT2+fhuB3hOwY1H0kshlIaEOP1hy sKaLpBm1y8owTAVgEgd1X9QG7G+Uo/1laJcmh9wman4JT4o4WIkoDr3raGCzy0s71Lmi ZsBgAHuN2SalE8g/J4AJZZaotQjsVbcAsL95YY8z1JgxW3b9T8EHR6VYngeyD/01/t0P zMGQS/2icyaP9wRu6/lD0Ml4Gt9PNm6qkXMwqnpQGnEgtXOUryEpCppfT6lIYjLeNen0 iQmlkcvREkmQiLK3rg4Ubw/IGe1nIlhzCtGNLrsJxOTEUP4L/4HnIU7vuXQ4OPCefEZn DgWw== X-Forwarded-Encrypted: i=1; AJvYcCWJxthFwYhQIwTAaQdRz1E2XvBHFstcDOuHYBZDyI+aXzKD9xCCsbbDpj78xg90sw01hTQgtYCBO6KqahM=@vger.kernel.org X-Gm-Message-State: AOJu0YwoMy9BqFahQFKzVbihqi+OqMHxc7Km8sHcPUcn3NrUGRo1yWkK CwaTfWoYYKguBJxcgWkT61A0e/MmsmcfZBUTxcXYYaiqEVxifGQPRIsC X-Gm-Gg: AZuq6aJR+PSDDx0RNM5mfaZmh3m6VQuennEKHsvckbX45JVvM2BJfCGZVLbxiCmLqdp D6VEx2gzsBlUSLoMamZmuSwTRBm2a3azQCbY0NU5cUcNr3MGNJNNUBnJQrvty7etONaEiTXM9iP l/LV3Nu81uNedalBBWLjJ/uwsnUw/zCQ98sF/3qjtGaCOIRFTppZ7cTUfO+WBLP4l6WNq61lK2k Cx2aogV01fuktNY7qE30mEFsDnFvnZmD/8Xh/k7zdJfU6w/6QAwBq4moxTqVZfGz5ZjPPs7jsgo uZpN1HCewTwYxVMiXoXfhC0BAXqammBI8B2ZVvrxTuy9G0zkfsC291XOmkVld5hMn2yotiBJ/YX mwQoTthVnBke8okIKFqOp0fDIssTZ04uLnYahMkyrwmIEkxVWLY6G6lUPG8/BnsnN7PvH7gOuw4 HAiP+HPQFIsPhwktvAlPBKk43mZP8gIVSH1a2OqqLpJ/cXkgy1tUcBNvV6Ov5d X-Received: by 2002:a17:90b:53c6:b0:336:9dcf:ed14 with SMTP id 98e67ed59e1d1-354b3e263bfmr11945366a91.23.1770703232556; Mon, 09 Feb 2026 22:00:32 -0800 (PST) Received: from zenbook ([159.196.5.243]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-354c7fad6c6sm6028151a91.1.2026.02.09.22.00.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Feb 2026 22:00:32 -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 v2 2/2] xfs: add static size checks for ioctl UABI Date: Tue, 10 Feb 2026 15:59:44 +1000 Message-ID: <20260210055942.2844783-5-wilfred.opensource@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260210055942.2844783-2-wilfred.opensource@gmail.com> References: <20260210055942.2844783-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 --- V1 -> V2: - Added inline comment to describe why some ioctl structs are not addded. - Keep the new size check coupled under "ioctl UABI". - Drop size checks for structures that are in xfs/xfs_ioctl32.h (i.e compat__X) to avoid build failures across different architectures. --- fs/xfs/libxfs/xfs_ondisk.h | 40 +++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/fs/xfs/libxfs/xfs_ondisk.h b/fs/xfs/libxfs/xfs_ondisk.h index 601a8367ced6..dced91d281fa 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,41 @@ 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