Commit a7109a2c authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'mailbox-devel' of git://git.linaro.org/landing-teams/working/fujitsu/integration

Pull mailbox fixes from Jussi Brar:
 "Misc fixes:

  mailbox-test driver:
   - prevent memory leak and another cosmetic change

  mailbox:
   - change the returned error code

  Xgene driver:
   - return -ENOMEM instead of PTR_ERR for failed devm_kzalloc"

* 'mailbox-devel' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
  mailbox: Stop using ENOSYS for anything other than unimplemented syscalls
  mailbox: mailbox-test: Prevent memory leak
  mailbox: mailbox-test: Use more consistent format for calling copy_from_user()
  mailbox: xgene-slimpro: Fix wrong test for devm_kzalloc
parents dfe70581 0c44d789
...@@ -46,7 +46,6 @@ static ssize_t mbox_test_signal_write(struct file *filp, ...@@ -46,7 +46,6 @@ static ssize_t mbox_test_signal_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;
int ret;
if (!tdev->tx_channel) { if (!tdev->tx_channel) {
dev_err(tdev->dev, "Channel cannot do Tx\n"); dev_err(tdev->dev, "Channel cannot do Tx\n");
...@@ -60,17 +59,20 @@ static ssize_t mbox_test_signal_write(struct file *filp, ...@@ -60,17 +59,20 @@ static ssize_t mbox_test_signal_write(struct file *filp,
return -EINVAL; return -EINVAL;
} }
/* Only allocate memory if we need to */
if (!tdev->signal) {
tdev->signal = kzalloc(MBOX_MAX_SIG_LEN, GFP_KERNEL); tdev->signal = kzalloc(MBOX_MAX_SIG_LEN, GFP_KERNEL);
if (!tdev->signal) if (!tdev->signal)
return -ENOMEM; return -ENOMEM;
}
ret = copy_from_user(tdev->signal, userbuf, count); if (copy_from_user(tdev->signal, userbuf, count)) {
if (ret) {
kfree(tdev->signal); kfree(tdev->signal);
tdev->signal = NULL;
return -EFAULT; return -EFAULT;
} }
return ret < 0 ? ret : count; return count;
} }
static const struct file_operations mbox_test_signal_ops = { static const struct file_operations mbox_test_signal_ops = {
......
...@@ -189,8 +189,8 @@ static int slimpro_mbox_probe(struct platform_device *pdev) ...@@ -189,8 +189,8 @@ static int slimpro_mbox_probe(struct platform_device *pdev)
int i; int i;
ctx = devm_kzalloc(&pdev->dev, sizeof(struct slimpro_mbox), GFP_KERNEL); ctx = devm_kzalloc(&pdev->dev, sizeof(struct slimpro_mbox), GFP_KERNEL);
if (IS_ERR(ctx)) if (!ctx)
return PTR_ERR(ctx); return -ENOMEM;
platform_set_drvdata(pdev, ctx); platform_set_drvdata(pdev, ctx);
......
...@@ -375,13 +375,13 @@ struct mbox_chan *mbox_request_channel_byname(struct mbox_client *cl, ...@@ -375,13 +375,13 @@ struct mbox_chan *mbox_request_channel_byname(struct mbox_client *cl,
if (!np) { if (!np) {
dev_err(cl->dev, "%s() currently only supports DT\n", __func__); dev_err(cl->dev, "%s() currently only supports DT\n", __func__);
return ERR_PTR(-ENOSYS); return ERR_PTR(-EINVAL);
} }
if (!of_get_property(np, "mbox-names", NULL)) { if (!of_get_property(np, "mbox-names", NULL)) {
dev_err(cl->dev, dev_err(cl->dev,
"%s() requires an \"mbox-names\" property\n", __func__); "%s() requires an \"mbox-names\" property\n", __func__);
return ERR_PTR(-ENOSYS); return ERR_PTR(-EINVAL);
} }
of_property_for_each_string(np, "mbox-names", prop, mbox_name) { of_property_for_each_string(np, "mbox-names", prop, mbox_name) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment