Messages in this thread | | | Date | Mon, 16 May 2022 14:06:20 -0700 | From | Andrew Morton <> | Subject | Re: [RFC PATCH 1/1] ipc, sem: fix backward compatibility with x86-32 kernels |
| |
On Sun, 15 May 2022 23:01:03 +0300 Maxim Zhukov <crazycdeveloper@gmail.com> wrote:
> Since with commit 275f22148e87 ("ipc: rename old-style shmctl/semctl/msgctl syscalls") > we have changed behavior: > > ksys_semctl lost parse ipc version (ipc_parse_version), because the > new syscall works with IPC_64 only, but the parse function has some > side effect - it removes IPC_64 bit from `cmd`. > > Some libc forced sends IPC_64 bit in semctl syscall[1][2][3], this leads to > a bug - X86-32 kernel does not have compat headers and does not > correctly parse received command (cmd) from semctl syscall: cmd have actual > command and IPC_64 bit, thus throw EINVAL error in ksys_semctl > > This commit forcibly removes IPC_64 bit from the cmd for restore > backward compatibility. > > [1]: https://elixir.bootlin.com/uclibc-ng/v1.0.40/source/libc/misc/sysvipc/sem.c#L58 > [2]: https://elixir.bootlin.com/musl/v1.2.3/source/src/ipc/semctl.c#L48 -> https://elixir.bootlin.com/musl/v1.2.3/source/src/ipc/ipc.h#L22 > [3]: https://elixir.bootlin.com/glibc/glibc-2.35/source/sysdeps/unix/sysv/linux/semctl.c#L124 >
Thanks.
275f22148e87 was three years ago. Can you suggest why it took so long for this to be discovered?
| |