Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 637c3663 authored by Nadia Derbey's avatar Nadia Derbey Committed by Linus Torvalds
Browse files

ipc: remove the ipc_get() routine



This is a trivial patch that removes the ipc_get() routine: it is replaced
by a call to idr_find().

Signed-off-by: default avatarNadia 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 7748dbfa
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -63,8 +63,6 @@ static struct ipc_ids init_shm_ids;
	((struct shmid_kernel*)ipc_lock(&shm_ids(ns),id))
#define shm_unlock(shp)			\
	ipc_unlock(&(shp)->shm_perm)
#define shm_get(ns, id)			\
	((struct shmid_kernel*)ipc_get(&shm_ids(ns),id))
#define shm_buildid(ns, id, seq)	\
	ipc_buildid(&shm_ids(ns), id, seq)

@@ -563,7 +561,19 @@ static void shm_get_stat(struct ipc_namespace *ns, unsigned long *rss,
		struct shmid_kernel *shp;
		struct inode *inode;

		shp = shm_get(ns, next_id);
		/*
		 * idr_find() is called via shm_get(), so with shm_ids.mutex
		 * locked. Since ipc_addid() is also called with
		 * shm_ids.mutex down, there is no need to add read barriers
		 * here to gurantee the writes in ipc_addid() are seen in
		 * order here (for Alpha).
		 * However idr_find() itself does not necessary require
		 * ipc_ids.mutex down. So if idr_find() is used by other
		 * places without ipc_ids.mutex down, then it needs read
		 * read memory barriers as ipc_lock() does.
		 */

		shp = idr_find(&shm_ids(ns).ipcs_idr, next_id);
		if (shp == NULL)
			continue;

+0 −19
Original line number Diff line number Diff line
@@ -669,25 +669,6 @@ void ipc64_perm_to_ipc_perm (struct ipc64_perm *in, struct ipc_perm *out)
	out->seq	= in->seq;
}

/*
 * So far only shm_get_stat() calls ipc_get() via shm_get(), so ipc_get()
 * is called with shm_ids.mutex locked.  Since grow_ary() is also called with
 * shm_ids.mutex down(for Shared Memory), there is no need to add read
 * barriers here to gurantee the writes in grow_ary() are seen in order 
 * here (for Alpha).
 *
 * However ipc_get() itself does not necessary require ipc_ids.mutex down. So
 * if in the future ipc_get() is used by other places without ipc_ids.mutex
 * down, then ipc_get() needs read memery barriers as ipc_lock() does.
 */
struct kern_ipc_perm *ipc_get(struct ipc_ids *ids, int id)
{
	struct kern_ipc_perm *out;
	int lid = id % SEQ_MULTIPLIER;
	out = idr_find(&ids->ipcs_idr, lid);
	return out;
}

struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id)
{
	struct kern_ipc_perm *out;
+0 −1
Original line number Diff line number Diff line
@@ -103,7 +103,6 @@ void* ipc_rcu_alloc(int size);
void ipc_rcu_getref(void *ptr);
void ipc_rcu_putref(void *ptr);

struct kern_ipc_perm* ipc_get(struct ipc_ids* ids, int id);
struct kern_ipc_perm* ipc_lock(struct ipc_ids* ids, int id);
void ipc_lock_by_ptr(struct kern_ipc_perm *ipcp);
void ipc_unlock(struct kern_ipc_perm* perm);