diff options
author | Martin Kelly <mkelly@xevo.com> | 2018-03-26 17:27:51 -0400 |
---|---|---|
committer | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2018-03-30 06:14:32 -0400 |
commit | c043ec1ca5baae63726aae32abbe003192bc6eec (patch) | |
tree | 51574cd7d82dec8175c75f9f4498fd38fa8bb68d /include/linux/iio/buffer_impl.h | |
parent | d58109dcf37fc9baec354385ec9fdcd8878d174d (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.h | 6 |
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 | */ |
73 | struct iio_buffer { | 73 | struct 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 |