[LTP] [PATCH 1/1] Skip wqueue testcases when KEY_NOTIFICATIONS not enabled.

Petr Vorel pvorel@suse.cz
Mon Dec 8 16:15:27 CET 2025


Hi Mingyu, Meng,

I sent an alternative approach for this. Could you please retest it.

https://lore.kernel.org/ltp/20251208150542.704006-1-pvorel@suse.cz/T/#t
https://patchwork.ozlabs.org/project/ltp/list/?series=484779&state=*

> From: Mingyu Li <limy83@chinatelecom.cn>

> Skip wqueue testcases when KEY_NOTIFICATIONS not enabled.

> wqueue testcases relys on both CONFIG_WATCH_QUEUE
> and CONFIG_KEY_NOTIFICATIONS. keyctl will return EOPNOTSUPP
> when CONFIG_KEY_NOTIFICATIONS is not enabled and the wqueue
> testcases will failed when timeout. So we should skip
> testcases when we got EOPNOTSUPP from keyctl.

> Reported-by: Meng Yang <yangm50@chinatelecom.cn>
> Signed-off-by: Mingyu Li <limy83@chinatelecom.cn>
> ---
>  testcases/kernel/watchqueue/common.h | 22 ++++++++++++++++++++--
>  1 file changed, 20 insertions(+), 2 deletions(-)

> diff --git a/testcases/kernel/watchqueue/common.h b/testcases/kernel/watchqueue/common.h
> index 92e8f079c..e9100ab52 100644
> --- a/testcases/kernel/watchqueue/common.h
> +++ b/testcases/kernel/watchqueue/common.h
> @@ -85,8 +85,26 @@ static inline key_serial_t wqueue_add_key(int fd)
>  	if (key == -1)
>  		tst_brk(TBROK, "add_key error: %s", tst_strerrno(errno));

> -	keyctl(KEYCTL_WATCH_KEY, key, fd, 0x01);
> -	keyctl(KEYCTL_WATCH_KEY, KEY_SPEC_SESSION_KEYRING, fd, 0x02);
> +	TEST(keyctl(KEYCTL_WATCH_KEY, key, fd, 0x01));
> +	if (TST_RET) {
> +		switch (TST_ERR) {
> +		case EOPNOTSUPP:
> +			tst_brk(TCONF | TTERRNO, "CONFIG_KEY_NOTIFICATION is not set!");
nit: "| TTERRNO" is not needed, because we know the content of errno:
EOPNOTSUPP.

> +			break;
> +		default:
> +			tst_res(TINFO, "CONFIG_KEY_NOTIFICATION is set.");
> +		}

If your approach is taken, I would simplify it (we don't need TINFO)

	if (keyctl(KEYCTL_WATCH_KEY, key, fd, 0x01) && errno == EOPNOTSUPP)
			tst_brk(TCONF, "CONFIG_KEY_NOTIFICATION is not set!");

	if (keyctl(KEYCTL_WATCH_KEY, KEY_SPEC_SESSION_KEYRING, fd, 0x02) && errno == EOPNOTSUPP)
			tst_brk(TCONF, "CONFIG_KEY_NOTIFICATION is not set!");

Kind regards,
Petr

> +	}
> +	TEST(keyctl(KEYCTL_WATCH_KEY, KEY_SPEC_SESSION_KEYRING, fd, 0x02));
> +	if (TST_RET) {
> +		switch (TST_ERR) {
> +		case EOPNOTSUPP:
> +			tst_brk(TCONF | TTERRNO, "CONFIG_KEY_NOTIFICATION is not set!");
> +			break;
> +		default:
> +			tst_res(TINFO, "CONFIG_KEY_NOTIFICATION is set.");
> +		}
> +	}

>  	return key;
>  }


More information about the ltp mailing list