diff options
author | Andy Shevchenko <andy.shevchenko@gmail.com> | 2017-06-13 12:22:22 +0300 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2017-06-13 14:29:20 +0200 |
commit | 08585e43d22802666a466af1ca5795085e74d60d (patch) | |
tree | cf43239899fe85d0e70dff3f3f24fe97276a1430 | |
parent | 91b9ae48aadd7e634161372b0bc3ffc88a050e8b (diff) |
HID: core: don't use negative operands when shift
The recent C standard in 6.5.7 paragraph 4 defines that operands for
bitwise shift operators should be non-negative, otherwise it's an
undefined behaviour.
Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/hid-core.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 37084b645785..8017de4e5c11 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1046,7 +1046,7 @@ static s32 snto32(__u32 value, unsigned n) case 16: return ((__s16)value); case 32: return ((__s32)value); } - return value & (1 << (n - 1)) ? value | (-1 << n) : value; + return value & (1 << (n - 1)) ? value | (~0U << n) : value; } s32 hid_snto32(__u32 value, unsigned n) |