aboutsummaryrefslogtreecommitdiffstats
path: root/ipc
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <greg@kroah.com>2002-07-16 20:16:22 -0700
committerGreg Kroah-Hartman <greg@kroah.com>2002-07-16 20:16:22 -0700
commit853ac9783a4eb61affd2ab4ca47a5b0d69c0c110 (patch)
tree6518e63895a46379e2c6ca91e2f329d121806fa3 /ipc
parent0d84f0acc5c914fbd249b2611711517f5c001a0c (diff)
parent8fcdd673ba16b7bfd62f2ee88ec9fa221575b4c3 (diff)
downloadhistory-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.c34
-rw-r--r--ipc/sem.c7
-rw-r--r--ipc/shm.c21
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;