ipc: IPCMNI limit check for semmni
[linux-2.6-microblaze.git] / ipc / util.h
index 1ee81bc..d768fdb 100644 (file)
@@ -217,6 +217,15 @@ int ipcget(struct ipc_namespace *ns, struct ipc_ids *ids,
 void free_ipcs(struct ipc_namespace *ns, struct ipc_ids *ids,
                void (*free)(struct ipc_namespace *, struct kern_ipc_perm *));
 
+static inline int sem_check_semmni(struct ipc_namespace *ns) {
+       /*
+        * Check semmni range [0, IPCMNI]
+        * semmni is the last element of sem_ctls[4] array
+        */
+       return ((ns->sem_ctls[3] < 0) || (ns->sem_ctls[3] > IPCMNI))
+               ? -ERANGE : 0;
+}
+
 #ifdef CONFIG_COMPAT
 #include <linux/compat.h>
 struct compat_ipc_perm {