Commit 19c2aedc authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Greg Kroah-Hartman

staging:iio: IIO_EVENT_CODE: Clamp channel numbers

Make sure we only use the allotted space for channel numbers in the event mask
and do not let them override other fields.

Since negative values are valid channel number, cast the channel number to
signed when extracting it from an event mask.
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Acked-by: default avatarJonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 43c03645
...@@ -56,7 +56,8 @@ enum iio_event_direction { ...@@ -56,7 +56,8 @@ enum iio_event_direction {
type, chan, chan1, chan2) \ type, chan, chan1, chan2) \
(((u64)type << 56) | ((u64)diff << 55) | \ (((u64)type << 56) | ((u64)diff << 55) | \
((u64)direction << 48) | ((u64)modifier << 40) | \ ((u64)direction << 48) | ((u64)modifier << 40) | \
((u64)chan_type << 32) | (chan2 << 16) | chan1 | chan) ((u64)chan_type << 32) | (((u16)chan2) << 16) | ((u16)chan1) | \
((u16)chan))
#define IIO_EV_DIR_MAX 4 #define IIO_EV_DIR_MAX 4
...@@ -95,7 +96,7 @@ enum iio_event_direction { ...@@ -95,7 +96,7 @@ enum iio_event_direction {
/* Event code number extraction depends on which type of event we have. /* Event code number extraction depends on which type of event we have.
* Perhaps review this function in the future*/ * Perhaps review this function in the future*/
#define IIO_EVENT_CODE_EXTRACT_NUM(mask) (mask & 0xFFFF) #define IIO_EVENT_CODE_EXTRACT_NUM(mask) ((__s16)(mask & 0xFFFF))
#define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF) #define IIO_EVENT_CODE_EXTRACT_MODIFIER(mask) ((mask >> 40) & 0xFF)
......
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