[LTP] [PATCH 2/2] landlock01: used fixed size for rule_small_size

Li Wang liwang@redhat.com
Tue Nov 5 05:13:25 CET 2024


The landlock01 test is failing on kernel v6.12-rc6 with the
following error:

  landlock01.c:49: TFAIL: Size is too small expected EINVAL: ENOMSG (42)

Previously, rule_small_size was calculated conditionally based
on the presence of the handled_access_net field in the struct
landlock_ruleset_attr.

However, the kernel's landlock_create_ruleset() function still uses
the size up to handled_access_fs to determine the minimal acceptable
size for backward compatibility, regardless of any new fields added.

According to the Landlock maintainer[1], this behavior will remain
for backward compatibility reasons. Therefore, it's unnecessary to
conditionally adjust rule_small_size based on new fields.

This patch simplifies the test by setting rule_small_size to
'sizeof(__u64) - 1', which effectively tests the minimal size based
on handled_access_fs.

[1] https://lists.linux.it/pipermail/ltp/2024-July/039084.html

Signed-off-by: Li Wang <liwang@redhat.com>
---
 testcases/kernel/syscalls/landlock/landlock01.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/testcases/kernel/syscalls/landlock/landlock01.c b/testcases/kernel/syscalls/landlock/landlock01.c
index 083685c64..c375e5154 100644
--- a/testcases/kernel/syscalls/landlock/landlock01.c
+++ b/testcases/kernel/syscalls/landlock/landlock01.c
@@ -62,11 +62,17 @@ static void setup(void)
 
 	rule_size = sizeof(struct landlock_ruleset_attr);
 
-#ifdef HAVE_STRUCT_LANDLOCK_RULESET_ATTR_HANDLED_ACCESS_NET
-	rule_small_size = rule_size - sizeof(uint64_t) - 1;
-#else
-	rule_small_size = rule_size - 1;
-#endif
+	/*
+	 * Kernel introduces two new fields 'handled_access_net' and 'scoped'
+	 * in the structure 'landlock_ruleset_attr'. However, in the function
+	 * 'landlock_create_ruleset()', it still uses the first field
+	 * 'handled_access_fs' to calculate the minimal size for backward
+	 * compatibility reason.
+	 *
+	 * Therefore, here test 'sizeof(__u64) - 1' is sufficient to determine
+	 * the minimum size for 'rule_small_size'.
+	 */
+	rule_small_size = sizeof(__u64) - 1;
 
 	rule_big_size = SAFE_SYSCONF(_SC_PAGESIZE) + 1;
 }
-- 
2.47.0



More information about the ltp mailing list