diff --git a/ipc/util.c b/ipc/util.c
index 9b0c4e7753af24cd5fbd1417fc3f7ac69e40daf3..c51c96f2e0cfa09b63b9d8602a6776c13decdc77 100644
--- a/ipc/util.c
+++ b/ipc/util.c
@@ -413,7 +413,7 @@ int ipcget_public(struct ipc_namespace *ns, struct ipc_ids *ids,
  
 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp)
 {
-	int lid = ipcp->id % SEQ_MULTIPLIER;
+	int lid = ipcid_to_idx(ipcp->id);
 
 	idr_remove(&ids->ipcs_idr, lid);
 
@@ -672,7 +672,7 @@ void ipc64_perm_to_ipc_perm (struct ipc64_perm *in, struct ipc_perm *out)
 struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id)
 {
 	struct kern_ipc_perm *out;
-	int lid = id % SEQ_MULTIPLIER;
+	int lid = ipcid_to_idx(id);
 
 	rcu_read_lock();
 	out = idr_find(&ids->ipcs_idr, lid);
diff --git a/ipc/util.h b/ipc/util.h
index 2a03d8cc6a01423bbb1cb9ce9289d79c3afa8cae..fa7e7a07486eb21f0051c2cb854546ccd2c16559 100644
--- a/ipc/util.h
+++ b/ipc/util.h
@@ -79,6 +79,8 @@ void __init ipc_init_proc_interface(const char *path, const char *header,
 #define IPC_MSG_IDS	1
 #define IPC_SHM_IDS	2
 
+#define ipcid_to_idx(id) ((id) % SEQ_MULTIPLIER)
+
 /* must be called with ids->mutex acquired.*/
 int ipc_addid(struct ipc_ids *, struct kern_ipc_perm *, int);
 int ipc_get_maxid(struct ipc_ids *);