On 10/27/2011 10:44 AM, Lars-Peter Clausen wrote: > 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: Lars-Peter Clausen <lars@xxxxxxxxxx> > --- > drivers/staging/iio/events.h | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/iio/events.h b/drivers/staging/iio/events.h > index 7cf9306..fc2b7e5 100644 > --- a/drivers/staging/iio/events.h > +++ b/drivers/staging/iio/events.h > @@ -56,7 +56,8 @@ enum iio_event_direction { > type, chan, chan1, chan2) \ > (((u64)type << 56) | ((u64)diff << 55) | \ > ((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 > @@ -95,7 +96,7 @@ enum iio_event_direction { > > /* Event code number extraction depends on which type of event we have. > * 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)) > Since we want to use it in userspace this should obviously be __s16, sorry. Will fix this before sending the patch on. -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html