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: Pierre Peiffer <pierre.peiffer@bull.net> Cc: Nadia Derbey <Nadia.Derbey@bull.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
02d15c4322
commit
48dea404ed
@ -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)
|
|||||||
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 @@
|
|||||||
|
|
||||||
#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)
|
|||||||
}
|
}
|
||||||
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;
|
||||||
|
10
ipc/shm.c
10
ipc/shm.c
@ -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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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();
|
||||||
|
Loading…
Reference in New Issue
Block a user