This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

msgctl() on MIPS, n32 ABI.


Hey everyone,

I have a user who's encountering an issue with the msgctl() system call,
on MIPS, n32 ABI, kernel 2.6.17.7.

The glibc definition of msgid_ds seems to disagree with that of the
kernel. When the IPC_STAT msgctl command is used, the kernel apparently
overruns the space causing a corrupt stack, when the IPC_STAT command is
used.

I don't see anything in the bits/msg.h definition of struct msqid_ds
that would take care of 32 versus 64 issues. Shouldn't there be
conditionally defined padding after the three __time_t members? For some
other architectures like x86_64, the padding is there.

Also, the n32 system call just routes the system call directly to
sys_msgctl, where there is no wrapper that would set the IPC_64 flag. If
you don't have that, then the IPC_OLD version is assumed: i.e. that you
have the old obsolete version of the structure which contains a next and
previous pointer.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]