From 6157dbbfbf9d8e4a2b6d4e5ee35e864ab9ee8414 Mon Sep 17 00:00:00 2001 From: Davidlohr Bueso Date: Tue, 30 Jun 2015 14:58:48 -0700 Subject: [PATCH] ipc,sysv: return -EINVAL upon incorrect id/seqnum In ipc_obtain_object_check we return -EIDRM when a bogus sequence number is detected via ipc_checkid, while the ipc manpages state the following return codes for such errors: EIDRM points to a removed identifier. EINVAL Invalid value, or unaligned, etc. EIDRM should only be returned upon a RMID call (->deleted check), and thus return EINVAL for wrong seq. This difference in semantics has also caused real bugs, ie: https://bugzilla.redhat.com/show_bug.cgi?id=246509 Signed-off-by: Davidlohr Bueso Cc: Manfred Spraul Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- ipc/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipc/util.c b/ipc/util.c index b99038699fee..be4230020a1f 100644 --- a/ipc/util.c +++ b/ipc/util.c @@ -622,7 +622,7 @@ struct kern_ipc_perm *ipc_obtain_object_check(struct ipc_ids *ids, int id) goto out; if (ipc_checkid(out, id)) - return ERR_PTR(-EIDRM); + return ERR_PTR(-EINVAL); out: return out; }