linux(4): Handle incorrect FUTEX_CLOCK_REALTIME option bit.

Return ENOSYS if the FUTEX_CLOCK_REALTIME option bit is specified for an
inappropriate futex operation.

MFC after:		2 weeks
This commit is contained in:
Dmitry Chagin 2021-07-29 12:55:33 +03:00
parent a9bb1b1c18
commit 626cbd4648

View File

@ -224,6 +224,12 @@ linux_futex(struct thread *td, struct linux_futex_args *args)
args->clockrt = args->op & LINUX_FUTEX_CLOCK_REALTIME;
args->op = args->op & ~LINUX_FUTEX_CLOCK_REALTIME;
if (args->clockrt &&
args->op != LINUX_FUTEX_WAIT_BITSET &&
args->op != LINUX_FUTEX_WAIT_REQUEUE_PI &&
args->op != LINUX_FUTEX_LOCK_PI2)
return (ENOSYS);
switch (args->op) {
case LINUX_FUTEX_WAIT:
args->val3 = FUTEX_BITSET_MATCH_ANY;