mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
mailbox: mailbox-test: fix a locking issue in mbox_test_message_write()
There was a bug where this code forgot to unlock the tdev->mutex if the
kzalloc() failed. Fix this issue, by moving the allocation outside the
lock.
Fixes: 2d1e952a2b
("mailbox: mailbox-test: Fix potential double-free in mbox_test_message_write()")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Lee Jones <lee@kernel.org>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
This commit is contained in:
committed by
Jassi Brar
parent
884fe9da1b
commit
8fe72b76db
@@ -98,6 +98,7 @@ static ssize_t mbox_test_message_write(struct file *filp,
|
|||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
struct mbox_test_device *tdev = filp->private_data;
|
struct mbox_test_device *tdev = filp->private_data;
|
||||||
|
char *message;
|
||||||
void *data;
|
void *data;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -113,12 +114,13 @@ static ssize_t mbox_test_message_write(struct file *filp,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_lock(&tdev->mutex);
|
message = kzalloc(MBOX_MAX_MSG_LEN, GFP_KERNEL);
|
||||||
|
if (!message)
|
||||||
tdev->message = kzalloc(MBOX_MAX_MSG_LEN, GFP_KERNEL);
|
|
||||||
if (!tdev->message)
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
mutex_lock(&tdev->mutex);
|
||||||
|
|
||||||
|
tdev->message = message;
|
||||||
ret = copy_from_user(tdev->message, userbuf, count);
|
ret = copy_from_user(tdev->message, userbuf, count);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
|
Reference in New Issue
Block a user