aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/iio/buffer_impl.h
diff options
context:
space:
mode:
authorMartin Kelly <mkelly@xevo.com>2018-03-26 17:27:51 -0400
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2018-03-30 06:14:32 -0400
commitc043ec1ca5baae63726aae32abbe003192bc6eec (patch)
tree51574cd7d82dec8175c75f9f4498fd38fa8bb68d /include/linux/iio/buffer_impl.h
parentd58109dcf37fc9baec354385ec9fdcd8878d174d (diff)
iio:buffer: make length types match kfifo types
Currently, we use int for buffer length and bytes_per_datum. However, kfifo uses unsigned int for length and size_t for element size. We need to make sure these matches or we will have bugs related to overflow (in the range between INT_MAX and UINT_MAX for length, for example). In addition, set_bytes_per_datum uses size_t while bytes_per_datum is an int, which would cause bugs for large values of bytes_per_datum. Change buffer length to use unsigned int and bytes_per_datum to use size_t. Signed-off-by: Martin Kelly <mkelly@xevo.com> Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'include/linux/iio/buffer_impl.h')
-rw-r--r--include/linux/iio/buffer_impl.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/iio/buffer_impl.h b/include/linux/iio/buffer_impl.h
index b9e22b7e2f28..d1171db23742 100644
--- a/include/linux/iio/buffer_impl.h
+++ b/include/linux/iio/buffer_impl.h
@@ -53,7 +53,7 @@ struct iio_buffer_access_funcs {
53 int (*request_update)(struct iio_buffer *buffer); 53 int (*request_update)(struct iio_buffer *buffer);
54 54
55 int (*set_bytes_per_datum)(struct iio_buffer *buffer, size_t bpd); 55 int (*set_bytes_per_datum)(struct iio_buffer *buffer, size_t bpd);
56 int (*set_length)(struct iio_buffer *buffer, int length); 56 int (*set_length)(struct iio_buffer *buffer, unsigned int length);
57 57
58 int (*enable)(struct iio_buffer *buffer, struct iio_dev *indio_dev); 58 int (*enable)(struct iio_buffer *buffer, struct iio_dev *indio_dev);
59 int (*disable)(struct iio_buffer *buffer, struct iio_dev *indio_dev); 59 int (*disable)(struct iio_buffer *buffer, struct iio_dev *indio_dev);
@@ -72,10 +72,10 @@ struct iio_buffer_access_funcs {
72 */ 72 */
73struct iio_buffer { 73struct iio_buffer {
74 /** @length: Number of datums in buffer. */ 74 /** @length: Number of datums in buffer. */
75 int length; 75 unsigned int length;
76 76
77 /** @bytes_per_datum: Size of individual datum including timestamp. */ 77 /** @bytes_per_datum: Size of individual datum including timestamp. */
78 int bytes_per_datum; 78 size_t bytes_per_datum;
79 79
80 /** 80 /**
81 * @access: Buffer access functions associated with the 81 * @access: Buffer access functions associated with the