[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