Re: UID width

Khimenko Victor (khim@sch57.msk.ru)
Fri, 8 Jan 1999 16:37:22 +0300 (MSK)


In <199901062144.NAA29633@cesium.transmeta.com> H. Peter Anvin (hpa@transmeta.com) wrote:
>> On Tue, Jan 05, 1999 at 12:05:48AM +0000, H. Peter Anvin wrote:
>>
>> > This is an FAQ. This is part of Linux' Minix legacy, and will be
>> > fixed in the 2.3 kernel series. Binary backwards compatibility
>> > will be provided with libc6 binaries, but not libc5 or earlier if
>> > uid/gid >= 65535 are in use.
>>
>> Actually... >= 65534 because '-1' has a special meaning for some
>> system calls (eg. setreuid).

> Hence, >= 65535 (note the = part of >=).

>> btw... I've made partial patches for 32-bit uid_t support (I know
>> someone else has too, against 2.0.36 or thereabouts) and this
>> introduces a whole bunch of new system calls, even for things like
>> fcntl (think SET_OWN).
>>
>> At some point in the future we might also want 32-bit dev_t and
>> 32-bit pid_t so its probably worth trying to do them all at once,
>> that way we don't end up with 15 different flavours of the same
>> system calls (think about stat et al and all the combinations of
>> short/long system calls... yuck).

> Yes. This is all planned to be one of the early 2.3 changes.

Ufortunatelly even with glibc2 this transition will not be painless. Take a look:

-- gnu/types.h --
typedef unsigned short int __ipc_pid_t;
-- sys/msq_buf.h --
/* Structure of record for one message inside the kernel.
The type `struct __msg' is opaque. */
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
struct msg *__msg_first; /* pointer to first message on queue */
struct msg *__msg_last; /* pointer to last message on queue */
__time_t msg_stime; /* time of last msgsnd command */
__time_t msg_rtime; /* time of last msgrcv command */
__time_t msg_ctime; /* time of last change */
struct wait_queue *__wwait; /* ??? */
struct wait_queue *__rwait; /* ??? */
unsigned short int __msg_cbytes;/* current number of bytes on queue */
unsigned short int msg_qnum; /* number of messages currently on queue */
unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
__ipc_pid_t msg_lspid; /* pid of last msgsnd() */
__ipc_pid_t msg_lrpid; /* pid of last msgrcv() */
};
-- sys/msg.h --
/* Message queue control operation. */
extern int msgctl __P ((int __msqid, int __cmd, struct msqid_ds *__buf));
-- cut --

unsigned short pid_t is exported to userlevel !

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/