Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+38 -38
+1 -1
drivers/media/dvb-frontends/cx24123.c
··· 431 431 u32 div = a / b; 432 432 if (a % b >= b / 2) 433 433 ++div; 434 - if (div < (1 << 31)) { 434 + if (div < (1UL << 31)) { 435 435 for (exp = 1; div > exp; nearest++) 436 436 exp += exp; 437 437 }
+2 -2
drivers/media/pci/bt8xx/bttv-input.c
··· 84 84 data = ir_extract_bits(gpio, ir->mask_keycode); 85 85 86 86 /* Check if it is keyup */ 87 - keyup = (gpio & ir->mask_keyup) ? 1 << 31 : 0; 87 + keyup = (gpio & ir->mask_keyup) ? 1UL << 31 : 0; 88 88 89 89 if ((ir->last_gpio & 0x7f) != data) { 90 90 dprintk("gpio=0x%x code=%d | %s\n", ··· 95 95 if (keyup) 96 96 rc_keyup(ir->dev); 97 97 } else { 98 - if ((ir->last_gpio & 1 << 31) == keyup) 98 + if ((ir->last_gpio & 1UL << 31) == keyup) 99 99 return; 100 100 101 101 dprintk("(cnt) gpio=0x%x code=%d | %s\n",
+1 -1
drivers/media/pci/cx18/cx18-ioctl.c
··· 78 78 return 0; 79 79 } 80 80 for (i = 0; i < 32; i++) { 81 - if ((1 << i) & set) 81 + if (BIT(i) & set) 82 82 return 1 << i; 83 83 } 84 84 return 0;
+1 -1
drivers/media/pci/ivtv/ivtv-driver.c
··· 910 910 911 911 /* check which i2c devices are actually found */ 912 912 for (i = 0; i < 32; i++) { 913 - u32 device = 1 << i; 913 + u32 device = BIT(i); 914 914 915 915 if (!(device & hw)) 916 916 continue;
+2 -2
drivers/media/pci/ivtv/ivtv-ioctl.c
··· 73 73 return 0; 74 74 } 75 75 for (i = 0; i < 32; i++) { 76 - if ((1 << i) & set) 77 - return 1 << i; 76 + if (BIT(i) & set) 77 + return BIT(i); 78 78 } 79 79 return 0; 80 80 }
+3 -3
drivers/media/pci/solo6x10/solo6x10-gpio.c
··· 39 39 ret = solo_reg_read(solo_dev, SOLO_GPIO_CONFIG_1); 40 40 41 41 for (port = 0; port < 16; port++) { 42 - if (!((1 << (port + 16)) & port_mask)) 42 + if (!((1UL << (port + 16)) & port_mask)) 43 43 continue; 44 44 45 45 if (!mode) 46 - ret &= ~(1 << port); 46 + ret &= ~(1UL << port); 47 47 else 48 - ret |= 1 << port; 48 + ret |= 1UL << port; 49 49 } 50 50 51 51 /* Enable GPIO[31:16] */
+3 -3
drivers/media/platform/exynos4-is/mipi-csis.c
··· 41 41 /* CSIS global control */ 42 42 #define S5PCSIS_CTRL 0x00 43 43 #define S5PCSIS_CTRL_DPDN_DEFAULT (0 << 31) 44 - #define S5PCSIS_CTRL_DPDN_SWAP (1 << 31) 44 + #define S5PCSIS_CTRL_DPDN_SWAP (1UL << 31) 45 45 #define S5PCSIS_CTRL_ALIGN_32BIT (1 << 20) 46 46 #define S5PCSIS_CTRL_UPDATE_SHADOW (1 << 16) 47 47 #define S5PCSIS_CTRL_WCLK_EXTCLK (1 << 8) ··· 65 65 66 66 /* Interrupt mask */ 67 67 #define S5PCSIS_INTMSK 0x10 68 - #define S5PCSIS_INTMSK_EVEN_BEFORE (1 << 31) 68 + #define S5PCSIS_INTMSK_EVEN_BEFORE (1UL << 31) 69 69 #define S5PCSIS_INTMSK_EVEN_AFTER (1 << 30) 70 70 #define S5PCSIS_INTMSK_ODD_BEFORE (1 << 29) 71 71 #define S5PCSIS_INTMSK_ODD_AFTER (1 << 28) ··· 83 83 84 84 /* Interrupt source */ 85 85 #define S5PCSIS_INTSRC 0x14 86 - #define S5PCSIS_INTSRC_EVEN_BEFORE (1 << 31) 86 + #define S5PCSIS_INTSRC_EVEN_BEFORE (1UL << 31) 87 87 #define S5PCSIS_INTSRC_EVEN_AFTER (1 << 30) 88 88 #define S5PCSIS_INTSRC_EVEN (0x3 << 30) 89 89 #define S5PCSIS_INTSRC_ODD_BEFORE (1 << 29)
+1 -1
drivers/media/platform/fsl-viu.c
··· 214 214 FIELD_NO = 0x01 << 28, /* Field number */ 215 215 DITHER_ON = 0x01 << 29, /* Dithering is on */ 216 216 ROUND_ON = 0x01 << 30, /* Round is on */ 217 - MODE_32BIT = 0x01 << 31, /* Data in RGBa888, 217 + MODE_32BIT = 1UL << 31, /* Data in RGBa888, 218 218 * 0 in RGB565 219 219 */ 220 220 };
+1 -1
drivers/media/platform/mx2_emmaprp.c
··· 120 120 #define PRP_CNTL_RZ_FIFO_LEVEL(x) ((x) << 27) 121 121 #define PRP_CNTL_CH2B1EN (1 << 29) 122 122 #define PRP_CNTL_CH2B2EN (1 << 30) 123 - #define PRP_CNTL_CH2FEN (1 << 31) 123 + #define PRP_CNTL_CH2FEN (1UL << 31) 124 124 125 125 #define PRP_SIZE_HEIGHT(x) (x) 126 126 #define PRP_SIZE_WIDTH(x) ((x) << 16)
+2 -2
drivers/media/platform/pxa_camera.c
··· 64 64 #define CIBR1 0x0030 65 65 #define CIBR2 0x0038 66 66 67 - #define CICR0_DMAEN (1 << 31) /* DMA request enable */ 67 + #define CICR0_DMAEN (1UL << 31) /* DMA request enable */ 68 68 #define CICR0_PAR_EN (1 << 30) /* Parity enable */ 69 69 #define CICR0_SL_CAP_EN (1 << 29) /* Capture enable for slave mode */ 70 70 #define CICR0_ENB (1 << 28) /* Camera interface enable */ ··· 81 81 #define CICR0_EOFM (1 << 1) /* End-of-frame mask */ 82 82 #define CICR0_FOM (1 << 0) /* FIFO-overrun mask */ 83 83 84 - #define CICR1_TBIT (1 << 31) /* Transparency bit */ 84 + #define CICR1_TBIT (1UL << 31) /* Transparency bit */ 85 85 #define CICR1_RGBT_CONV (0x3 << 29) /* RGBT conversion mask */ 86 86 #define CICR1_PPL (0x7ff << 15) /* Pixels per line mask */ 87 87 #define CICR1_RGB_CONV (0x7 << 12) /* RGB conversion mask */
+1 -1
drivers/media/platform/qcom/venus/core.c
··· 198 198 goto err; 199 199 200 200 for (i = 0; i < MAX_CODEC_NUM; i++) { 201 - codec = (1 << i) & codecs; 201 + codec = (1UL << i) & codecs; 202 202 if (!codec) 203 203 continue; 204 204
+5 -5
drivers/media/platform/s5p-jpeg/jpeg-regs.h
··· 121 121 122 122 /* JPEG timer setting register */ 123 123 #define S5P_JPG_TIMER_SE 0x7c 124 - #define S5P_TIMER_INT_EN_MASK (0x1 << 31) 125 - #define S5P_TIMER_INT_EN (0x1 << 31) 124 + #define S5P_TIMER_INT_EN_MASK (0x1UL << 31) 125 + #define S5P_TIMER_INT_EN (0x1UL << 31) 126 126 #define S5P_TIMER_INIT_MASK 0x7fffffff 127 127 128 128 /* JPEG timer status register */ 129 129 #define S5P_JPG_TIMER_ST 0x80 130 130 #define S5P_TIMER_INT_STAT_SHIFT 31 131 - #define S5P_TIMER_INT_STAT_MASK (0x1 << S5P_TIMER_INT_STAT_SHIFT) 131 + #define S5P_TIMER_INT_STAT_MASK (0x1UL << S5P_TIMER_INT_STAT_SHIFT) 132 132 #define S5P_TIMER_CNT_SHIFT 0 133 133 #define S5P_TIMER_CNT_MASK 0x7fffffff 134 134 ··· 562 562 /* JPEG timer setting register */ 563 563 #define EXYNOS3250_TIMER_SE 0x148 564 564 #define EXYNOS3250_TIMER_INT_EN_SHIFT 31 565 - #define EXYNOS3250_TIMER_INT_EN (1 << EXYNOS3250_TIMER_INT_EN_SHIFT) 565 + #define EXYNOS3250_TIMER_INT_EN (1UL << EXYNOS3250_TIMER_INT_EN_SHIFT) 566 566 #define EXYNOS3250_TIMER_INIT_MASK 0x7fffffff 567 567 568 568 /* JPEG timer status register */ 569 569 #define EXYNOS3250_TIMER_ST 0x14c 570 570 #define EXYNOS3250_TIMER_INT_STAT_SHIFT 31 571 - #define EXYNOS3250_TIMER_INT_STAT (1 << EXYNOS3250_TIMER_INT_STAT_SHIFT) 571 + #define EXYNOS3250_TIMER_INT_STAT (1UL << EXYNOS3250_TIMER_INT_STAT_SHIFT) 572 572 #define EXYNOS3250_TIMER_CNT_SHIFT 0 573 573 #define EXYNOS3250_TIMER_CNT_MASK 0x7fffffff 574 574
+2 -2
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v5.c
··· 711 711 reg = mfc_read(dev, S5P_FIMV_ENC_PADDING_CTRL); 712 712 if (p->pad) { 713 713 /** enable */ 714 - reg |= (1 << 31); 714 + reg |= (1UL << 31); 715 715 /** cr value */ 716 716 reg &= ~(0xFF << 16); 717 717 reg |= (p->pad_cr << 16); ··· 955 955 S5P_FIMV_ENC_RC_FRAME_RATE); 956 956 shm = s5p_mfc_read_info_v5(ctx, RC_VOP_TIMING); 957 957 shm &= ~(0xFFFFFFFF); 958 - shm |= (1 << 31); 958 + shm |= (1UL << 31); 959 959 shm |= ((p->rc_framerate_num & 0x7FFF) << 16); 960 960 shm |= (p->rc_framerate_denom & 0xFFFF); 961 961 s5p_mfc_write_info_v5(ctx, shm, RC_VOP_TIMING);
+1 -1
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c
··· 840 840 if (p->pad) { 841 841 reg = 0; 842 842 /** enable */ 843 - reg |= (1 << 31); 843 + reg |= (1UL << 31); 844 844 /** cr value */ 845 845 reg |= ((p->pad_cr & 0xFF) << 16); 846 846 /** cb value */
+1 -1
drivers/media/radio/radio-gemtek.c
··· 125 125 #define BU2614_FMUN_SHIFT (BU2614_VOID2_BITS + BU2614_VOID2_SHIFT) 126 126 #define BU2614_TEST_SHIFT (BU2614_FMUN_BITS + BU2614_FMUN_SHIFT) 127 127 128 - #define MKMASK(field) (((1<<BU2614_##field##_BITS) - 1) << \ 128 + #define MKMASK(field) (((1UL<<BU2614_##field##_BITS) - 1) << \ 129 129 BU2614_##field##_SHIFT) 130 130 #define BU2614_PORT_MASK MKMASK(PORT) 131 131 #define BU2614_FREQ_MASK MKMASK(FREQ)
+1 -1
drivers/media/usb/dvb-usb-v2/gl861.c
··· 353 353 ret += i2c_transfer(&d->i2c_adap, &msg, 1); 354 354 355 355 /* send 32bit(satur, R, G, B) data in serial */ 356 - mask = 1 << 31; 356 + mask = 1UL << 31; 357 357 for (i = 0; i < 32; i++) { 358 358 buf[1] = power | FRIIO_CTL_STROBE; 359 359 if (sat_color & mask)
+7 -7
drivers/media/usb/pvrusb2/pvrusb2-hdw.c
··· 660 660 { 661 661 if (v < 0 || v > PVR2_CVAL_INPUT_MAX) 662 662 return 0; 663 - return ((1 << v) & cptr->hdw->input_allowed_mask) != 0; 663 + return ((1UL << v) & cptr->hdw->input_allowed_mask) != 0; 664 664 } 665 665 666 666 static int ctrl_set_input(struct pvr2_ctrl *cptr,int m,int v) ··· 2445 2445 /* Ensure that default input choice is a valid one. */ 2446 2446 m = hdw->input_avail_mask; 2447 2447 if (m) for (idx = 0; idx < (sizeof(m) << 3); idx++) { 2448 - if (!((1 << idx) & m)) continue; 2448 + if (!((1UL << idx) & m)) continue; 2449 2449 hdw->input_val = idx; 2450 2450 break; 2451 2451 } ··· 2501 2501 // Initialize control data regarding video standard masks 2502 2502 valid_std_mask = pvr2_std_get_usable(); 2503 2503 for (idx = 0; idx < 32; idx++) { 2504 - if (!(valid_std_mask & (1 << idx))) continue; 2504 + if (!(valid_std_mask & (1UL << idx))) continue; 2505 2505 cnt1 = pvr2_std_id_to_str( 2506 2506 hdw->std_mask_names[idx], 2507 2507 sizeof(hdw->std_mask_names[idx])-1, 2508 - 1 << idx); 2508 + 1UL << idx); 2509 2509 hdw->std_mask_names[idx][cnt1] = 0; 2510 2510 } 2511 2511 cptr = pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_STDAVAIL); ··· 4672 4672 unsigned int idx,ccnt; 4673 4673 unsigned int tcnt = 0; 4674 4674 for (idx = 0; idx < ARRAY_SIZE(control_values_input); idx++) { 4675 - if (!((1 << idx) & msk)) continue; 4675 + if (!((1UL << idx) & msk)) continue; 4676 4676 ccnt = scnprintf(buf+tcnt, 4677 4677 acnt-tcnt, 4678 4678 "%s%s", ··· 5099 5099 break; 5100 5100 } 5101 5101 hdw->input_allowed_mask = nv; 5102 - if ((1 << hdw->input_val) & hdw->input_allowed_mask) { 5102 + if ((1UL << hdw->input_val) & hdw->input_allowed_mask) { 5103 5103 /* Current mode is still in the allowed mask, so 5104 5104 we're done. */ 5105 5105 break; ··· 5112 5112 } 5113 5113 m = hdw->input_allowed_mask; 5114 5114 for (idx = 0; idx < (sizeof(m) << 3); idx++) { 5115 - if (!((1 << idx) & m)) continue; 5115 + if (!((1UL << idx) & m)) continue; 5116 5116 pvr2_hdw_set_input(hdw,idx); 5117 5117 break; 5118 5118 }
+2 -2
drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
··· 1003 1003 input_mask &= pvr2_hdw_get_input_available(hdw); 1004 1004 input_cnt = 0; 1005 1005 for (idx = 0; idx < (sizeof(input_mask) << 3); idx++) { 1006 - if (input_mask & (1 << idx)) input_cnt++; 1006 + if (input_mask & (1UL << idx)) input_cnt++; 1007 1007 } 1008 1008 fhp->input_cnt = input_cnt; 1009 1009 fhp->input_map = kzalloc(input_cnt,GFP_KERNEL); ··· 1018 1018 } 1019 1019 input_cnt = 0; 1020 1020 for (idx = 0; idx < (sizeof(input_mask) << 3); idx++) { 1021 - if (!(input_mask & (1 << idx))) continue; 1021 + if (!(input_mask & (1UL << idx))) continue; 1022 1022 fhp->input_map[input_cnt++] = idx; 1023 1023 } 1024 1024
+1 -1
drivers/media/v4l2-core/v4l2-ioctl.c
··· 1388 1388 (char)((fmt->pixelformat >> 8) & 0x7f), 1389 1389 (char)((fmt->pixelformat >> 16) & 0x7f), 1390 1390 (char)((fmt->pixelformat >> 24) & 0x7f), 1391 - (fmt->pixelformat & (1 << 31)) ? "-BE" : ""); 1391 + (fmt->pixelformat & (1UL << 31)) ? "-BE" : ""); 1392 1392 break; 1393 1393 } 1394 1394 }