From: H Hartley Sweeten Date: Wed, 9 Jan 2013 20:30:22 +0000 (-0700) Subject: staging: comedi: comedi_buf: cleanup comedi_buf_read_n_available() X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=43f9137df461f6365f76b46f404fd6775eab7d51;p=deliverable%2Flinux.git staging: comedi: comedi_buf: cleanup comedi_buf_read_n_available() For aesthetic reasons, cleanup this function a bit. Change the (async == NULL) test to simply (!async). Reword the comment about the need for the smp_rmb().. Signed-off-by: H Hartley Sweeten Signed-off-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/comedi_buf.c b/drivers/staging/comedi/comedi_buf.c index fd2a92e29fb0..06dd544ec2c5 100644 --- a/drivers/staging/comedi/comedi_buf.c +++ b/drivers/staging/comedi/comedi_buf.c @@ -273,14 +273,17 @@ unsigned int comedi_buf_read_n_available(struct comedi_async *async) { unsigned num_bytes; - if (async == NULL) + if (!async) return 0; + num_bytes = async->munge_count - async->buf_read_count; - /* barrier insures the read of munge_count in this - query occurs before any following reads of the buffer which - might be based on the return value from this query. + + /* + * ensure the async buffer 'counts' are read before we + * attempt to read data from the buffer */ smp_rmb(); + return num_bytes; } EXPORT_SYMBOL(comedi_buf_read_n_available);