diff options
author | Doug Ledford <[email protected]> | 2012-05-31 16:26:29 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2012-05-31 17:49:30 -0700 |
commit | 02967ea08ede0f8cc7e0526aedffdae65a099b07 (patch) | |
tree | da66e39cf3023f437f43db1f58d510c99b8478fd | |
parent | 858ee3784e8105467f1f3017f4ece51cb51d4830 (diff) |
ipc/mqueue: enforce hard limits
In two places we don't enforce the hard limits for CAP_SYS_RESOURCE apps.
In preparation for making more reasonable hard limits, start enforcing
them even on CAP_SYS_RESOURCE.
Signed-off-by: Doug Ledford <[email protected]>
Cc: Serge E. Hallyn <[email protected]>
Cc: Amerigo Wang <[email protected]>
Cc: Joe Korty <[email protected]>
Cc: Jiri Slaby <[email protected]>
Acked-by: KOSAKI Motohiro <[email protected]>
Cc: Manfred Spraul <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | ipc/mqueue.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index b103022179a3..6e10a55a78c5 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c @@ -301,8 +301,9 @@ static int mqueue_create(struct inode *dir, struct dentry *dentry, error = -EACCES; goto out_unlock; } - if (ipc_ns->mq_queues_count >= ipc_ns->mq_queues_max && - !capable(CAP_SYS_RESOURCE)) { + if (ipc_ns->mq_queues_count >= HARD_QUEUESMAX || + (ipc_ns->mq_queues_count >= ipc_ns->mq_queues_max && + !capable(CAP_SYS_RESOURCE))) { error = -ENOSPC; goto out_unlock; } @@ -589,7 +590,8 @@ static int mq_attr_ok(struct ipc_namespace *ipc_ns, struct mq_attr *attr) if (attr->mq_maxmsg <= 0 || attr->mq_msgsize <= 0) return 0; if (capable(CAP_SYS_RESOURCE)) { - if (attr->mq_maxmsg > HARD_MSGMAX) + if (attr->mq_maxmsg > HARD_MSGMAX || + attr->mq_msgsize > HARD_MSGSIZEMAX) return 0; } else { if (attr->mq_maxmsg > ipc_ns->mq_msg_max || |