[LTP] [PATCH v2 12/33] keyctl20: Test KEYCTL_MOVE displacement

Cyril Hrubis chrubis@suse.cz
Fri Sep 11 14:00:55 CEST 2026


Hi!
> +#define RING_A_DESC	"ltpkeyctl20_a"
> +#define RING_B_DESC	"ltpkeyctl20_b"
> +#define KEY_DESC	"k"
> +#define PAYLOAD		"payload"
> +
> +static key_serial_t ring_a, ring_b;
> +static key_serial_t key_a, key_excl;
> +
> +static void setup(void)
> +{
> +	SAFE_KEYCTL(KEYCTL_JOIN_SESSION_KEYRING, 0, 0, 0, 0);
> +
> +	ring_a = new_ring(RING_A_DESC);
> +	ring_b = new_ring(RING_B_DESC);
> +
> +	key_a = new_user_key(KEY_DESC, PAYLOAD, sizeof(PAYLOAD), ring_a);
> +	key_excl = new_user_key(KEY_DESC, PAYLOAD, sizeof(PAYLOAD), ring_b);
> +
> +	/* Keep key_excl in session keyring so displacement does not destroy it */
> +	SAFE_KEYCTL(KEYCTL_LINK, key_excl, KEY_SPEC_SESSION_KEYRING, 0, 0);
> +}
> +
> +static void reset_state(void)
> +{
> +	SAFE_KEYCTL(KEYCTL_LINK, key_a, ring_a, 0, 0);
> +	TEST(keyctl(KEYCTL_UNLINK, key_a, ring_b, 0, 0));
> +	if (TST_RET == -1 && TST_ERR != ENOENT)
> +		tst_brk(TBROK | TTERRNO, "failed to unlink key_a from ring_b");

Here as well, not sure if this is worth the trouble.

> +	SAFE_KEYCTL(KEYCTL_LINK, key_excl, ring_b, 0, 0);
> +}
> +
> +static void run(void)
> +{
> +	reset_state();
> +
> +	TST_EXP_PASS(keyctl(KEYCTL_MOVE, key_a, ring_a, ring_b, 0));
> +
> +	TST_EXP_EQ_LI(search_ring(ring_b, "user", KEY_DESC), key_a);

And here as well.

> +}
> +
> +static struct tst_test test = {
> +	.setup = setup,
> +	.test_all = run,
> +	.min_kver = "5.3",
> +};
> 
> -- 
> 2.51.0
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list