media: don't do a 31 bit shift on a signed int
On 32-bits archs, a signed integer has 31 bits plus on extra bit for signal. Due to that, touching the 32th bit with something like: int bar = 1 << 31; has an undefined behavior in C on 32 bit architectures, as it touches the signal bit. This is warned by cppcheck. Instead, force the numbers to be unsigned, in order to solve this issue. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
@@ -84,7 +84,7 @@ static void ir_enltv_handle_key(struct bttv *btv)
|
||||
data = ir_extract_bits(gpio, ir->mask_keycode);
|
||||
|
||||
/* Check if it is keyup */
|
||||
keyup = (gpio & ir->mask_keyup) ? 1 << 31 : 0;
|
||||
keyup = (gpio & ir->mask_keyup) ? 1UL << 31 : 0;
|
||||
|
||||
if ((ir->last_gpio & 0x7f) != data) {
|
||||
dprintk("gpio=0x%x code=%d | %s\n",
|
||||
@@ -95,7 +95,7 @@ static void ir_enltv_handle_key(struct bttv *btv)
|
||||
if (keyup)
|
||||
rc_keyup(ir->dev);
|
||||
} else {
|
||||
if ((ir->last_gpio & 1 << 31) == keyup)
|
||||
if ((ir->last_gpio & 1UL << 31) == keyup)
|
||||
return;
|
||||
|
||||
dprintk("(cnt) gpio=0x%x code=%d | %s\n",
|
||||
|
Reference in New Issue
Block a user