Commit 48dea404 authored by Pierre Peiffer's avatar Pierre Peiffer Committed by Linus Torvalds

IPC: use ipc_buildid() directly from ipc_addid()

By continuing to consolidate a little the IPC code, each id can be built
directly in ipc_addid() instead of having it built from each callers of
ipc_addid()

And I also remove shm_addid() in order to have, as much as possible, the
same code for shm/sem/msg.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: default avatarPierre Peiffer <pierre.peiffer@bull.net>
Cc: Nadia Derbey <Nadia.Derbey@bull.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 02d15c43
...@@ -70,7 +70,6 @@ struct msg_sender { ...@@ -70,7 +70,6 @@ struct msg_sender {
#define msg_ids(ns) ((ns)->ids[IPC_MSG_IDS]) #define msg_ids(ns) ((ns)->ids[IPC_MSG_IDS])
#define msg_unlock(msq) ipc_unlock(&(msq)->q_perm) #define msg_unlock(msq) ipc_unlock(&(msq)->q_perm)
#define msg_buildid(id, seq) ipc_buildid(id, seq)
static void freeque(struct ipc_namespace *, struct kern_ipc_perm *); static void freeque(struct ipc_namespace *, struct kern_ipc_perm *);
static int newque(struct ipc_namespace *, struct ipc_params *); static int newque(struct ipc_namespace *, struct ipc_params *);
...@@ -186,7 +185,6 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params) ...@@ -186,7 +185,6 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params)
return id; return id;
} }
msq->q_perm.id = msg_buildid(id, msq->q_perm.seq);
msq->q_stime = msq->q_rtime = 0; msq->q_stime = msq->q_rtime = 0;
msq->q_ctime = get_seconds(); msq->q_ctime = get_seconds();
msq->q_cbytes = msq->q_qnum = 0; msq->q_cbytes = msq->q_qnum = 0;
......
...@@ -91,7 +91,6 @@ ...@@ -91,7 +91,6 @@
#define sem_unlock(sma) ipc_unlock(&(sma)->sem_perm) #define sem_unlock(sma) ipc_unlock(&(sma)->sem_perm)
#define sem_checkid(sma, semid) ipc_checkid(&sma->sem_perm, semid) #define sem_checkid(sma, semid) ipc_checkid(&sma->sem_perm, semid)
#define sem_buildid(id, seq) ipc_buildid(id, seq)
static int newary(struct ipc_namespace *, struct ipc_params *); static int newary(struct ipc_namespace *, struct ipc_params *);
static void freeary(struct ipc_namespace *, struct kern_ipc_perm *); static void freeary(struct ipc_namespace *, struct kern_ipc_perm *);
...@@ -268,7 +267,6 @@ static int newary(struct ipc_namespace *ns, struct ipc_params *params) ...@@ -268,7 +267,6 @@ static int newary(struct ipc_namespace *ns, struct ipc_params *params)
} }
ns->used_sems += nsems; ns->used_sems += nsems;
sma->sem_perm.id = sem_buildid(id, sma->sem_perm.seq);
sma->sem_base = (struct sem *) &sma[1]; sma->sem_base = (struct sem *) &sma[1];
/* sma->sem_pending = NULL; */ /* sma->sem_pending = NULL; */
sma->sem_pending_last = &sma->sem_pending; sma->sem_pending_last = &sma->sem_pending;
......
...@@ -60,7 +60,6 @@ static struct vm_operations_struct shm_vm_ops; ...@@ -60,7 +60,6 @@ static struct vm_operations_struct shm_vm_ops;
#define shm_unlock(shp) \ #define shm_unlock(shp) \
ipc_unlock(&(shp)->shm_perm) ipc_unlock(&(shp)->shm_perm)
#define shm_buildid(id, seq) ipc_buildid(id, seq)
static int newseg(struct ipc_namespace *, struct ipc_params *); static int newseg(struct ipc_namespace *, struct ipc_params *);
static void shm_open(struct vm_area_struct *vma); static void shm_open(struct vm_area_struct *vma);
...@@ -169,12 +168,6 @@ static inline void shm_rmid(struct ipc_namespace *ns, struct shmid_kernel *s) ...@@ -169,12 +168,6 @@ static inline void shm_rmid(struct ipc_namespace *ns, struct shmid_kernel *s)
ipc_rmid(&shm_ids(ns), &s->shm_perm); ipc_rmid(&shm_ids(ns), &s->shm_perm);
} }
static inline int shm_addid(struct ipc_namespace *ns, struct shmid_kernel *shp)
{
return ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni);
}
/* This is called by fork, once for every shm attach. */ /* This is called by fork, once for every shm attach. */
static void shm_open(struct vm_area_struct *vma) static void shm_open(struct vm_area_struct *vma)
...@@ -416,7 +409,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) ...@@ -416,7 +409,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
if (IS_ERR(file)) if (IS_ERR(file))
goto no_file; goto no_file;
id = shm_addid(ns, shp); id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni);
if (id < 0) { if (id < 0) {
error = id; error = id;
goto no_id; goto no_id;
...@@ -428,7 +421,6 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) ...@@ -428,7 +421,6 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params)
shp->shm_ctim = get_seconds(); shp->shm_ctim = get_seconds();
shp->shm_segsz = size; shp->shm_segsz = size;
shp->shm_nattch = 0; shp->shm_nattch = 0;
shp->shm_perm.id = shm_buildid(id, shp->shm_perm.seq);
shp->shm_file = file; shp->shm_file = file;
/* /*
* shmid gets reported as "inode#" in /proc/pid/maps. * shmid gets reported as "inode#" in /proc/pid/maps.
......
...@@ -231,6 +231,7 @@ int ipc_addid(struct ipc_ids* ids, struct kern_ipc_perm* new, int size) ...@@ -231,6 +231,7 @@ int ipc_addid(struct ipc_ids* ids, struct kern_ipc_perm* new, int size)
if(ids->seq > ids->seq_max) if(ids->seq > ids->seq_max)
ids->seq = 0; ids->seq = 0;
new->id = ipc_buildid(id, new->seq);
spin_lock_init(&new->lock); spin_lock_init(&new->lock);
new->deleted = 0; new->deleted = 0;
rcu_read_lock(); rcu_read_lock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment