|
@@ -153,7 +153,7 @@ static struct inode *mqueue_get_inode(struct super_block *sb,
|
|
|
info->attr.mq_msgsize = attr->mq_msgsize;
|
|
|
}
|
|
|
mq_msg_tblsz = info->attr.mq_maxmsg * sizeof(struct msg_msg *);
|
|
|
- if (mq_msg_tblsz > KMALLOC_MAX_SIZE)
|
|
|
+ if (mq_msg_tblsz > PAGE_SIZE)
|
|
|
info->messages = vmalloc(mq_msg_tblsz);
|
|
|
else
|
|
|
info->messages = kmalloc(mq_msg_tblsz, GFP_KERNEL);
|
|
@@ -266,7 +266,7 @@ static void mqueue_evict_inode(struct inode *inode)
|
|
|
spin_lock(&info->lock);
|
|
|
for (i = 0; i < info->attr.mq_curmsgs; i++)
|
|
|
free_msg(info->messages[i]);
|
|
|
- if (info->attr.mq_maxmsg * sizeof(struct msg_msg *) > KMALLOC_MAX_SIZE)
|
|
|
+ if (is_vmalloc_addr(info->messages))
|
|
|
vfree(info->messages);
|
|
|
else
|
|
|
kfree(info->messages);
|