diff options
author | Greg Kroah-Hartman <greg@kroah.com> | 2002-07-16 20:16:22 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <greg@kroah.com> | 2002-07-16 20:16:22 -0700 |
commit | 853ac9783a4eb61affd2ab4ca47a5b0d69c0c110 (patch) | |
tree | 6518e63895a46379e2c6ca91e2f329d121806fa3 /ipc | |
parent | 0d84f0acc5c914fbd249b2611711517f5c001a0c (diff) | |
parent | 8fcdd673ba16b7bfd62f2ee88ec9fa221575b4c3 (diff) | |
download | history-853ac9783a4eb61affd2ab4ca47a5b0d69c0c110.tar.gz |
Merge kroah.com:/home/greg/linux/BK/bleeding_edge-2.5
into kroah.com:/home/greg/linux/BK/lsm-2.5
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/msg.c | 34 | ||||
-rw-r--r-- | ipc/sem.c | 7 | ||||
-rw-r--r-- | ipc/shm.c | 21 |
3 files changed, 13 insertions, 49 deletions
diff --git a/ipc/msg.c b/ipc/msg.c index b325d7f869df35..5df13cd4724a88 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -52,34 +52,6 @@ struct msg_msgseg { 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 @@ static int newque (key_t key, int msgflg) 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; diff --git a/ipc/sem.c b/ipc/sem.c index fdc604a78311d2..e7619e8c4aa7a8 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -129,6 +129,10 @@ static int newary (key_t key, int nsems, int semflg) return -ENOMEM; } memset (sma, 0, size); + + sma->sem_perm.mode = (semflg & S_IRWXUGO); + sma->sem_perm.key = key; + id = ipc_addid(&sem_ids, &sma->sem_perm, sc_semmni); if(id == -1) { ipc_free(sma, size); @@ -136,9 +140,6 @@ static int newary (key_t key, int nsems, int semflg) } used_sems += nsems; - sma->sem_perm.mode = (semflg & S_IRWXUGO); - sma->sem_perm.key = key; - sma->sem_base = (struct sem *) &sma[1]; /* sma->sem_pending = NULL; */ sma->sem_pending_last = &sma->sem_pending; diff --git a/ipc/shm.c b/ipc/shm.c index 650c93e471339e..0d886d197f0757 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -28,20 +28,6 @@ #include "util.h" -struct shmid_kernel /* private to the kernel */ -{ - struct kern_ipc_perm shm_perm; - struct file * shm_file; - int id; - unsigned long shm_nattch; - unsigned long shm_segsz; - time_t shm_atim; - time_t shm_dtim; - time_t shm_ctim; - pid_t shm_cprid; - pid_t shm_lprid; -}; - #define shm_flags shm_perm.mode static struct file_operations shm_file_operations; @@ -193,6 +179,10 @@ static int newseg (key_t key, int shmflg, size_t size) shp = (struct shmid_kernel *) kmalloc (sizeof (*shp), GFP_USER); if (!shp) return -ENOMEM; + + shp->shm_perm.key = key; + shp->shm_flags = (shmflg & S_IRWXUGO); + sprintf (name, "SYSV%08x", key); file = shmem_file_setup(name, size); error = PTR_ERR(file); @@ -203,8 +193,7 @@ static int newseg (key_t key, int shmflg, size_t size) id = shm_addid(shp); if(id == -1) goto no_id; - shp->shm_perm.key = key; - shp->shm_flags = (shmflg & S_IRWXUGO); + shp->shm_cprid = current->pid; shp->shm_lprid = 0; shp->shm_atim = shp->shm_dtim = 0; |