Hello, development team of
uclibc-ng,
We are a company from
China called Ingenic, and we have recently observed that msgctl(),
shmctl() and semctl() do not fully support time64 in the latest version of
uclibc-ng.
When time64 is enabled on mips,
timestamps of semaphore obtained by msgclt, shmctl and
semctl are incorrectly, and semctl will report segmentation fault if
RMID operation is used. The timestamp of the semaphore on arm platform is
also wrong.
These errors seem to be caused
by incomplete support for time64. Although struct semid_ds is modified for
time64, the positions of its members are inconsistent with those of struct
semid64_ds in the kernel, resulting in incorrect semaphore timestamps
obtained by semctl. In addition, struct shmid_ds and struct msqid_ds do not
seem to support time64. Besides, when
semctl removes the semaphore using RMID, the union semun arg
is NULL and does not point to the semaphore instance. Accessing members of
struct semid_ds will result in a segmentation fault.
The attachment is my
modification for three functions and structs they required on the mips
platform, which can be used as a reference. If
you think these three functions do not need to be modified, hope you can write
to tell me the reason.
Looking forward to your reply
!
Best regards,
Liu Yu