diff options
author | Christian Gromm <christian.gromm@microchip.com> | 2015-12-22 10:53:07 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-02-07 17:34:58 -0800 |
commit | 5adf5dc5682fa7968370a8bea773d98f1beeeddc (patch) | |
tree | 1ea34ea51286854bc48fd516474a7071c6e95403 /drivers | |
parent | f45b0fba43f415f69982df743dfa9b5d1b57785e (diff) | |
download | linux-5adf5dc5682fa7968370a8bea773d98f1beeeddc.tar.bz2 |
staging: most: rearrange function aim_write
This patch straightens and rearranges the code of function aim_write()
of module aim-cdev.
Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/most/aim-cdev/cdev.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/drivers/staging/most/aim-cdev/cdev.c b/drivers/staging/most/aim-cdev/cdev.c index 0ee2f085848f..c3f32716168b 100644 --- a/drivers/staging/most/aim-cdev/cdev.c +++ b/drivers/staging/most/aim-cdev/cdev.c @@ -183,10 +183,9 @@ static int aim_close(struct inode *inode, struct file *filp) static ssize_t aim_write(struct file *filp, const char __user *buf, size_t count, loff_t *offset) { - int ret, err; + int ret; size_t actual_len; size_t max_len; - ssize_t retval; struct mbo *mbo = NULL; struct aim_channel *c = filp->private_data; @@ -202,33 +201,30 @@ static ssize_t aim_write(struct file *filp, const char __user *buf, } if (unlikely(!c->dev)) { - err = -EPIPE; - goto error; + ret = -EPIPE; + goto unlock; } max_len = c->cfg->buffer_size; actual_len = min(count, max_len); mbo->buffer_length = actual_len; - retval = copy_from_user(mbo->virt_address, buf, mbo->buffer_length); - if (retval) { - err = -EIO; - goto error; + if (copy_from_user(mbo->virt_address, buf, mbo->buffer_length)) { + ret = -EFAULT; + goto put_mbo; } ret = most_submit_mbo(mbo); - if (ret) { - pr_info("submitting MBO to core failed\n"); - err = ret; - goto error; - } + if (ret) + goto put_mbo; + mutex_unlock(&c->io_mutex); - return actual_len - retval; -error: - if (mbo) - most_put_mbo(mbo); + return actual_len; +put_mbo: + most_put_mbo(mbo); +unlock: mutex_unlock(&c->io_mutex); - return err; + return ret; } /** |