From: H Hartley Sweeten Date: Wed, 22 Oct 2014 22:37:17 +0000 (-0700) Subject: staging: comedi: comedi_buf: absorb comedi_write_array_to_buffer() X-Git-Tag: firefly_0821_release~176^2~2665^2~726 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e19a3c97242825d7426758bad9e293068adf16ec;p=firefly-linux-kernel-4.4.55.git staging: comedi: comedi_buf: absorb comedi_write_array_to_buffer() This function is only called by comedi_buf_write_samples(). Absorb it. The buffer overflow was already checked so the overflow check of comedi_buf_write_alloc() can be removed. Signed-off-by: H Hartley Sweeten Reviewed-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 c3152d89e608..23e3bd175caa 100644 --- a/drivers/staging/comedi/comedi_buf.c +++ b/drivers/staging/comedi/comedi_buf.c @@ -474,31 +474,6 @@ static void comedi_buf_memcpy_from(struct comedi_subdevice *s, } } -static unsigned int comedi_write_array_to_buffer(struct comedi_subdevice *s, - const void *data, - unsigned int num_bytes) -{ - struct comedi_async *async = s->async; - unsigned int retval; - - if (num_bytes == 0) - return 0; - - retval = comedi_buf_write_alloc(s, num_bytes); - if (retval != num_bytes) { - dev_warn(s->device->class_dev, "buffer overrun\n"); - async->events |= COMEDI_CB_OVERFLOW; - return 0; - } - - comedi_buf_memcpy_to(s, data, num_bytes); - comedi_buf_write_free(s, num_bytes); - comedi_inc_scan_progress(s, num_bytes); - async->events |= COMEDI_CB_BLOCK; - - return num_bytes; -} - /** * comedi_buf_write_samples - write sample data to comedi buffer * @s: comedi_subdevice struct @@ -524,9 +499,16 @@ unsigned int comedi_buf_write_samples(struct comedi_subdevice *s, return 0; } - nbytes = nsamples * bytes_per_sample(s); + if (nsamples == 0) + return 0; - return comedi_write_array_to_buffer(s, data, nbytes); + nbytes = comedi_buf_write_alloc(s, nsamples * bytes_per_sample(s)); + comedi_buf_memcpy_to(s, data, nbytes); + comedi_buf_write_free(s, nbytes); + comedi_inc_scan_progress(s, nbytes); + s->async->events |= COMEDI_CB_BLOCK; + + return nbytes; } EXPORT_SYMBOL_GPL(comedi_buf_write_samples);