summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-01-07 13:44:17 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-01-07 13:44:17 -0800
commit96f3cc94ddf3402d05000996d78a2fb6f35be838 (patch)
treef96d5ac20fdbe2357386779fb87cc0f26af4d379
parentfc0faf1b5e3e195a7293cb6ed62fd31726ab2466 (diff)
parent15d83b644a8249a0f59fa07fef42d6b6cf2798ce (diff)
Merge "media: dvb-core: Fix for dvb_ringbuffer merge conflict"
-rw-r--r--drivers/media/dvb-core/dvb_ringbuffer.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/media/dvb-core/dvb_ringbuffer.c b/drivers/media/dvb-core/dvb_ringbuffer.c
index 0d44deed65bd..8ab60a4fec00 100644
--- a/drivers/media/dvb-core/dvb_ringbuffer.c
+++ b/drivers/media/dvb-core/dvb_ringbuffer.c
@@ -233,9 +233,11 @@ ssize_t dvb_ringbuffer_write_user(struct dvb_ringbuffer *rbuf,
*/
smp_store_release(&rbuf->pwrite, 0);
}
- status = copy_from_user(rbuf->data+rbuf->pwrite, buf, todo);
- if (status)
- return len - todo;
+
+ if (copy_from_user(rbuf->data + rbuf->pwrite, buf, todo)) {
+ smp_store_release(&rbuf->pwrite, oldpwrite);
+ return -EFAULT;
+ }
/* smp_store_release() for write pointer update, see above */
smp_store_release(&rbuf->pwrite, (rbuf->pwrite + todo) % rbuf->size);