Commit 034cbd17 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: comedi_buf: clarify comedi_buf_read_alloc()

Clarify the check to make sure the number of bytes to allocate is
available.

Reword the comment about the need for the smp_rmb().
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 43f9137d
...@@ -291,14 +291,20 @@ EXPORT_SYMBOL(comedi_buf_read_n_available); ...@@ -291,14 +291,20 @@ EXPORT_SYMBOL(comedi_buf_read_n_available);
/* allocates a chunk for the reader from filled (and munged) buffer space */ /* allocates a chunk for the reader from filled (and munged) buffer space */
unsigned comedi_buf_read_alloc(struct comedi_async *async, unsigned nbytes) unsigned comedi_buf_read_alloc(struct comedi_async *async, unsigned nbytes)
{ {
if ((int)(async->buf_read_alloc_count + nbytes - async->munge_count) > unsigned int available;
0) {
nbytes = async->munge_count - async->buf_read_alloc_count; available = async->munge_count - async->buf_read_alloc_count;
} if (nbytes > available)
nbytes = available;
async->buf_read_alloc_count += nbytes; async->buf_read_alloc_count += nbytes;
/* barrier insures read of munge_count occurs before we actually read
data out of buffer */ /*
* ensure the async buffer 'counts' are read before we
* attempt to read data from the read-alloc'ed buffer space
*/
smp_rmb(); smp_rmb();
return nbytes; return nbytes;
} }
EXPORT_SYMBOL(comedi_buf_read_alloc); EXPORT_SYMBOL(comedi_buf_read_alloc);
......
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