# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.639 -> 1.640 # include/linux/msg.h 1.1 -> 1.2 # ipc/msg.c 1.4 -> 1.5 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/07/15 greg@kroah.com 1.640 # LSM: move the struct msg_msg and struct msg_queue definitions out of the msg.c file to the msg.h file # # Also move where the msg->q_perm.mode and .key values get set to before # ipc_addid() gets called to make placing a hook there easier. # -------------------------------------------- # diff -Nru a/include/linux/msg.h b/include/linux/msg.h --- a/include/linux/msg.h Mon Jul 15 16:50:04 2002 +++ b/include/linux/msg.h Mon Jul 15 16:50:04 2002 @@ -63,6 +63,35 @@ #ifdef __KERNEL__ +/* one msg_msg structure for each message */ +struct msg_msg { + struct list_head m_list; + long m_type; + int m_ts; /* message text size */ + struct msg_msgseg* next; + /* the actual message follows immediately */ +}; + +#define DATALEN_MSG (PAGE_SIZE-sizeof(struct msg_msg)) +#define DATALEN_SEG (PAGE_SIZE-sizeof(struct msg_msgseg)) + +/* one msq_queue structure for each present queue on the system */ +struct msg_queue { + struct kern_ipc_perm q_perm; + time_t q_stime; /* last msgsnd time */ + time_t q_rtime; /* last msgrcv time */ + time_t q_ctime; /* last change time */ + unsigned long q_cbytes; /* current number of bytes on queue */ + unsigned long q_qnum; /* number of messages in queue */ + unsigned long q_qbytes; /* max number of bytes on queue */ + pid_t q_lspid; /* pid of last msgsnd */ + pid_t q_lrpid; /* last receive pid */ + + struct list_head q_messages; + struct list_head q_receivers; + struct list_head q_senders; +}; + asmlinkage long sys_msgget (key_t key, int msgflg); asmlinkage long sys_msgsnd (int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg); asmlinkage long sys_msgrcv (int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg); diff -Nru a/ipc/msg.c b/ipc/msg.c --- a/ipc/msg.c Mon Jul 15 16:50:04 2002 +++ b/ipc/msg.c Mon Jul 15 16:50:04 2002 @@ -52,34 +52,6 @@ struct msg_msgseg* next; /* the next part of the message follows immediately */ }; -/* one msg_msg structure for each message */ -struct msg_msg { - struct list_head m_list; - long m_type; - int m_ts; /* message text size */ - struct msg_msgseg* next; - /* the actual message follows immediately */ -}; - -#define DATALEN_MSG (PAGE_SIZE-sizeof(struct msg_msg)) -#define DATALEN_SEG (PAGE_SIZE-sizeof(struct msg_msgseg)) - -/* one msq_queue structure for each present queue on the system */ -struct msg_queue { - struct kern_ipc_perm q_perm; - time_t q_stime; /* last msgsnd time */ - time_t q_rtime; /* last msgrcv time */ - time_t q_ctime; /* last change time */ - unsigned long q_cbytes; /* current number of bytes on queue */ - unsigned long q_qnum; /* number of messages in queue */ - unsigned long q_qbytes; /* max number of bytes on queue */ - pid_t q_lspid; /* pid of last msgsnd */ - pid_t q_lrpid; /* last receive pid */ - - struct list_head q_messages; - struct list_head q_receivers; - struct list_head q_senders; -}; #define SEARCH_ANY 1 #define SEARCH_EQUAL 2 @@ -122,13 +94,15 @@ msq = (struct msg_queue *) kmalloc (sizeof (*msq), GFP_KERNEL); if (!msq) return -ENOMEM; + + msq->q_perm.mode = (msgflg & S_IRWXUGO); + msq->q_perm.key = key; + id = ipc_addid(&msg_ids, &msq->q_perm, msg_ctlmni); if(id == -1) { kfree(msq); return -ENOSPC; } - msq->q_perm.mode = (msgflg & S_IRWXUGO); - msq->q_perm.key = key; msq->q_stime = msq->q_rtime = 0; msq->q_ctime = CURRENT_TIME;