ipc/util.c contains multiple functions to get the ipc object pointer given an id number.
There are two sets of function: One set verifies the sequence counter part of the id number, other functions do not check the sequence counter. The standard for function names in ipc/util.c is - ..._check() functions verify the sequence counter - ..._idr() functions do not verify the sequence counter ipc_lock() is an exception: It does not verify the sequence counter value, but this is not obvious from the function name. Therefore: Rename the function to ipc_lock_idr(), to make it obvious that it does not check the sequence counter. Signed-off-by: Manfred Spraul <manf...@colorfullife.com> --- ipc/shm.c | 4 ++-- ipc/util.c | 10 ++++++---- ipc/util.h | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ipc/shm.c b/ipc/shm.c index 426ba1039a7b..cd8655c7bb77 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -179,11 +179,11 @@ static inline struct shmid_kernel *shm_obtain_object_check(struct ipc_namespace */ static inline struct shmid_kernel *shm_lock(struct ipc_namespace *ns, int id) { - struct kern_ipc_perm *ipcp = ipc_lock(&shm_ids(ns), id); + struct kern_ipc_perm *ipcp = ipc_lock_idr(&shm_ids(ns), id); /* * Callers of shm_lock() must validate the status of the returned ipc - * object pointer (as returned by ipc_lock()), and error out as + * object pointer (as returned by ipc_lock_idr()), and error out as * appropriate. */ if (IS_ERR(ipcp)) diff --git a/ipc/util.c b/ipc/util.c index 751d39baaf38..4f2db913acf9 100644 --- a/ipc/util.c +++ b/ipc/util.c @@ -604,15 +604,17 @@ struct kern_ipc_perm *ipc_obtain_object_idr(struct ipc_ids *ids, int id) } /** - * ipc_lock - lock an ipc structure without rwsem held + * ipc_lock_idr - lock an ipc structure without rwsem held * @ids: ipc identifier set * @id: ipc id to look for * * Look for an id in the ipc ids idr and lock the associated ipc object. + * The function does not check if the sequence counter matches the + * found ipc object. * * The ipc object is locked on successful exit. */ -struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id) +struct kern_ipc_perm *ipc_lock_idr(struct ipc_ids *ids, int id) { struct kern_ipc_perm *out; @@ -624,8 +626,8 @@ struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id) spin_lock(&out->lock); /* - * ipc_rmid() may have already freed the ID while ipc_lock() - * was spinning: here verify that the structure is still valid. + * ipc_rmid() may have already freed the ID while waiting for + * the lock. Here verify that the structure is still valid. * Upon races with RMID, return -EIDRM, thus indicating that * the ID points to a removed identifier. */ diff --git a/ipc/util.h b/ipc/util.h index fcf81425ae98..ed74b0fc68c9 100644 --- a/ipc/util.h +++ b/ipc/util.h @@ -142,7 +142,7 @@ int ipc_rcu_getref(struct kern_ipc_perm *ptr); void ipc_rcu_putref(struct kern_ipc_perm *ptr, void (*func)(struct rcu_head *head)); -struct kern_ipc_perm *ipc_lock(struct ipc_ids *, int); +struct kern_ipc_perm *ipc_lock_idr(struct ipc_ids *, int); struct kern_ipc_perm *ipc_obtain_object_idr(struct ipc_ids *ids, int id); void kernel_to_ipc64_perm(struct kern_ipc_perm *in, struct ipc64_perm *out); -- 2.17.1