summaryrefslogtreecommitdiffstats
path: root/ipc/mqueue.c
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/mqueue.c')
-rw-r--r--ipc/mqueue.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 216cad1ff0d0..65c351564ad0 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -438,7 +438,6 @@ static void mqueue_evict_inode(struct inode *inode)
438{ 438{
439 struct mqueue_inode_info *info; 439 struct mqueue_inode_info *info;
440 struct user_struct *user; 440 struct user_struct *user;
441 unsigned long mq_bytes, mq_treesize;
442 struct ipc_namespace *ipc_ns; 441 struct ipc_namespace *ipc_ns;
443 struct msg_msg *msg, *nmsg; 442 struct msg_msg *msg, *nmsg;
444 LIST_HEAD(tmp_msg); 443 LIST_HEAD(tmp_msg);
@@ -461,16 +460,18 @@ static void mqueue_evict_inode(struct inode *inode)
461 free_msg(msg); 460 free_msg(msg);
462 } 461 }
463 462
464 /* Total amount of bytes accounted for the mqueue */
465 mq_treesize = info->attr.mq_maxmsg * sizeof(struct msg_msg) +
466 min_t(unsigned int, info->attr.mq_maxmsg, MQ_PRIO_MAX) *
467 sizeof(struct posix_msg_tree_node);
468
469 mq_bytes = mq_treesize + (info->attr.mq_maxmsg *
470 info->attr.mq_msgsize);
471
472 user = info->user; 463 user = info->user;
473 if (user) { 464 if (user) {
465 unsigned long mq_bytes, mq_treesize;
466
467 /* Total amount of bytes accounted for the mqueue */
468 mq_treesize = info->attr.mq_maxmsg * sizeof(struct msg_msg) +
469 min_t(unsigned int, info->attr.mq_maxmsg, MQ_PRIO_MAX) *
470 sizeof(struct posix_msg_tree_node);
471
472 mq_bytes = mq_treesize + (info->attr.mq_maxmsg *
473 info->attr.mq_msgsize);
474
474 spin_lock(&mq_lock); 475 spin_lock(&mq_lock);
475 user->mq_bytes -= mq_bytes; 476 user->mq_bytes -= mq_bytes;
476 /* 477 /*