[LTP] [PATCH v2 1/2] keyctl: Vendor struct keyctl_dh_params

Petr Vorel pvorel@suse.cz
Tue Sep 22 11:51:25 CEST 2026


Copy struct keyctl_dh_params definition into LTP specific struct
ltp_keyctl_dh_params. (Use struct definition from keyutils.h from
keyutils userspace library, UAPI in kernel keeps also private hidden
from C++ by #ifndef guard which we 1) don't need 2) cannot use nested #ifndef.)

This helps to fix compilation on old kernel < 4.20:

    keyctl25.c:25:11: error: ‘struct keyctl_dh_params’ has no member named ‘priv’

'priv' struct member was added in kernel v4.20 (which we still support)
in commit 2ecefa0a15fd0 ("keys: Fix the use of the C++ keyword "private"
in uapi/linux/keyctl.h")

Vendoring struct helps us to remove autotools check (speedup).

Fixes: ee02118e9f ("lapi/keyctl.h: Add fallback definitions for extended ops")
Reported-by: linuxtestproject.agent@gmail.com
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Changes v1->v2:
* Vendor struct instead of using dangerous macro definition.

Link to v1:
https://patchwork.kernel.org/project/ltp/patch/20260921111407.2137467-1-pvorel@suse.cz/
https://lore.kernel.org/ltp/20260922085514.GA2150285@pevik/T/#t

 include/lapi/keyctl.h                       |  5 ++---
 m4/ltp-keyutils.m4                          |  5 +----
 testcases/kernel/syscalls/keyctl/keyctl25.c |  2 +-
 testcases/kernel/syscalls/keyctl/keyctl26.c |  2 +-
 testcases/kernel/syscalls/keyctl/keyctl27.c |  2 +-
 testcases/kernel/syscalls/keyctl/keyctl28.c | 10 +++++-----
 6 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/include/lapi/keyctl.h b/include/lapi/keyctl.h
index fdb68d1725..cc49a29b32 100644
--- a/include/lapi/keyctl.h
+++ b/include/lapi/keyctl.h
@@ -61,13 +61,12 @@ static inline key_serial_t keyctl_join_session_keyring(const char *name) {
 
 #endif /* defined(HAVE_KEYUTILS_H) && defined(HAVE_LIBKEYUTILS) */
 
-#ifndef HAVE_STRUCT_KEYCTL_DH_PARAMS
-struct keyctl_dh_params {
+/* From libkeyutils keyutils.h */
+struct ltp_keyctl_dh_params {
 	int32_t priv;
 	int32_t prime;
 	int32_t base;
 };
-#endif
 
 #ifndef HAVE_STRUCT_KEYCTL_KDF_PARAMS
 struct keyctl_kdf_params {
diff --git a/m4/ltp-keyutils.m4 b/m4/ltp-keyutils.m4
index 35bad783e5..b073183405 100644
--- a/m4/ltp-keyutils.m4
+++ b/m4/ltp-keyutils.m4
@@ -9,9 +9,6 @@ AC_DEFUN([LTP_CHECK_KEYUTILS_SUPPORT], [
 	[AC_DEFINE(HAVE_LIBKEYUTILS, 1, [Define to 1 if you have libkeyutils installed.])
 	      AC_SUBST(KEYUTILS_LIBS, "-lkeyutils")])
 
-	AC_CHECK_TYPES([struct keyctl_dh_params, struct keyctl_kdf_params,
-			struct keyctl_pkey_query, struct keyctl_pkey_params],,,
+	AC_CHECK_TYPES([struct keyctl_kdf_params, struct keyctl_pkey_query, struct keyctl_pkey_params],,,
 			[#include <linux/keyctl.h>])
-
-	AC_CHECK_MEMBERS([struct keyctl_dh_params.priv],,,[#include <linux/keyctl.h>])
 ])
diff --git a/testcases/kernel/syscalls/keyctl/keyctl25.c b/testcases/kernel/syscalls/keyctl/keyctl25.c
index d1aa3425d4..a99503183a 100644
--- a/testcases/kernel/syscalls/keyctl/keyctl25.c
+++ b/testcases/kernel/syscalls/keyctl/keyctl25.c
@@ -15,7 +15,7 @@
 #include "keyctl_common.h"
 #include "keyctl_dh_data.h"
 
-static struct keyctl_dh_params *dh_params;
+static struct ltp_keyctl_dh_params *dh_params;
 static unsigned char out_buf[256];
 
 static void setup(void)
diff --git a/testcases/kernel/syscalls/keyctl/keyctl26.c b/testcases/kernel/syscalls/keyctl/keyctl26.c
index bdd852fb4c..df80aadb6c 100644
--- a/testcases/kernel/syscalls/keyctl/keyctl26.c
+++ b/testcases/kernel/syscalls/keyctl/keyctl26.c
@@ -15,7 +15,7 @@
 #include "keyctl_common.h"
 #include "keyctl_dh_data.h"
 
-static struct keyctl_dh_params *dh_params;
+static struct ltp_keyctl_dh_params *dh_params;
 
 static void setup(void)
 {
diff --git a/testcases/kernel/syscalls/keyctl/keyctl27.c b/testcases/kernel/syscalls/keyctl/keyctl27.c
index 13a1538ce6..0ecf7dc389 100644
--- a/testcases/kernel/syscalls/keyctl/keyctl27.c
+++ b/testcases/kernel/syscalls/keyctl/keyctl27.c
@@ -19,7 +19,7 @@
 
 #define KDF_OTHERINFO	"LTP-KDF-TEST-INFO"
 
-static struct keyctl_dh_params *dh_params;
+static struct ltp_keyctl_dh_params *dh_params;
 static struct keyctl_kdf_params *kdf_params;
 static unsigned char out_buf[32];
 
diff --git a/testcases/kernel/syscalls/keyctl/keyctl28.c b/testcases/kernel/syscalls/keyctl/keyctl28.c
index 4c7f6be17e..53a59322b4 100644
--- a/testcases/kernel/syscalls/keyctl/keyctl28.c
+++ b/testcases/kernel/syscalls/keyctl/keyctl28.c
@@ -21,9 +21,9 @@
 #include "keyctl_common.h"
 #include "keyctl_dh_data.h"
 
-static struct keyctl_dh_params *dh_params;
-static struct keyctl_dh_params *dh_bogus_prime;
-static struct keyctl_dh_params *dh_nonuser_prime;
+static struct ltp_keyctl_dh_params *dh_params;
+static struct ltp_keyctl_dh_params *dh_bogus_prime;
+static struct ltp_keyctl_dh_params *dh_nonuser_prime;
 
 static struct keyctl_kdf_params *kdf_valid;
 static struct keyctl_kdf_params *kdf_spare_nonzero;
@@ -33,7 +33,7 @@ static struct keyctl_kdf_params *kdf_unknown_hash;
 static unsigned char out_buf[1025];
 
 static struct tcase {
-	struct keyctl_dh_params **params;
+	struct ltp_keyctl_dh_params **params;
 	void *buffer;
 	size_t buflen;
 	struct keyctl_kdf_params **kdf;
@@ -105,7 +105,7 @@ static void setup(void)
 static void verify_negative(unsigned int n)
 {
 	struct tcase *tc = &tcases[n];
-	struct keyctl_dh_params *p = *tc->params;
+	struct ltp_keyctl_dh_params *p = *tc->params;
 	struct keyctl_kdf_params *kdf = tc->kdf ? *tc->kdf : NULL;
 
 	TST_EXP_FAIL2(keyctl(KEYCTL_DH_COMPUTE, (unsigned long)p,
-- 
2.55.0



More information about the ltp mailing list