1. 20 Apr, 2018 24 commits
  2. 18 Apr, 2018 1 commit
  3. 17 Apr, 2018 15 commits
    • Daniel Scheller's avatar
      media: ddbridge: don't uselessly check for dma in start/stop functions · 8b8fcf32
      Daniel Scheller authored
      The check for a valid ptr in ddb_io->dma isn't really necessary since only
      devices that do data transport using DMA are supported by the driver, and
      all previous initialisation code (through input_init(), output_init() and
      dma_init(), has_dma is always true as it's set in ddb_probe() during
      driver load) guarantees the ptr is set.
      
      As a side effect, this silences these sparse warnings (albeit them being
      false positives as ddb_io->dma won't change in these functions so the
      condition always equals to the same result):
      
          drivers/media/pci/ddbridge/ddbridge-core.c:495:9: warning: context imbalance in 'ddb_output_start' - different lock contexts for basic block
          drivers/media/pci/ddbridge/ddbridge-core.c:510:9: warning: context imbalance in 'ddb_output_stop' - different lock contexts for basic block
          drivers/media/pci/ddbridge/ddbridge-core.c:525:9: warning: context imbalance in 'ddb_input_stop' - different lock contexts for basic block
          drivers/media/pci/ddbridge/ddbridge-core.c:560:9: warning: context imbalance in 'ddb_input_start' - different lock contexts for basic block
      Signed-off-by: default avatarDaniel Scheller <d.scheller@gmx.net>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      8b8fcf32
    • Mauro Carvalho Chehab's avatar
      media: mantis: prevent staying forever in a loop at IRQ · cac61a1a
      Mauro Carvalho Chehab authored
      As warned by smatch:
      	drivers/media/pci/mantis/mantis_uart.c:105 mantis_uart_work() warn: this loop depends on readl() succeeding
      
      If something goes wrong at readl(), the logic will stay there
      inside an IRQ code forever. This is not the nicest thing to
      do :-)
      
      So, add a timeout there, preventing staying inside the IRQ
      for more than 10ms.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      cac61a1a
    • Mauro Carvalho Chehab's avatar
      media: st_rc: Don't stay on an IRQ handler forever · ee2d243d
      Mauro Carvalho Chehab authored
      As warned by smatch:
      	drivers/media/rc/st_rc.c:110 st_rc_rx_interrupt() warn: this loop depends on readl() succeeding
      
      If something goes wrong at readl(), the logic will stay there
      inside an IRQ code forever. This is not the nicest thing to
      do :-)
      
      So, add a timeout there, preventing staying inside the IRQ
      for more than 10ms.
      Acked-by: default avatarPatrice Chotard <patrice.chotard@st.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      ee2d243d
    • Mauro Carvalho Chehab's avatar
      media: atomisp: get rid of a warning · ca33f8f6
      Mauro Carvalho Chehab authored
      On smatch, this warning is trigged:
      
      	drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_bo.c:324 __bo_take_off_handling() error: we previously assumed 'bo->prev' could be null (see line 314)
      
      Because it can't properly analize the truth table for the above
      function. So, add an explicit check for the final condition there.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      ca33f8f6
    • Mauro Carvalho Chehab's avatar
      media: atomisp: compat32: fix __user annotations · ad4222a0
      Mauro Carvalho Chehab authored
      The __user annotations at the compat32 code is not right:
      
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:81:18: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:81:18:    expected void *base
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:81:18:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:232:23: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:232:23:    expected unsigned int [usertype] *xcoords_y
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:232:23:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:233:23: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:233:23:    expected unsigned int [usertype] *ycoords_y
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:233:23:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:234:24: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:234:24:    expected unsigned int [usertype] *xcoords_uv
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:234:24:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:235:24: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:235:24:    expected unsigned int [usertype] *ycoords_uv
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:235:24:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:296:29: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:296:29:    expected unsigned int [usertype] *effective_width
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:296:29:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:360:29: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:360:29:    expected unsigned int [usertype] *effective_width
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:360:29:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:437:19: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:437:19:    expected struct v4l2_framebuffer *frame
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:437:19:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:481:29: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:481:29:    expected unsigned short *calb_grp_values
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:481:29:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:701:39: warning: cast removes address space of expression
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:704:21: warning: incorrect type in argument 1 (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:704:21:    expected void const volatile [noderef] <asn:1>*<noident>
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:704:21:    got unsigned int [usertype] *src
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:43: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:43:    expected struct atomisp_shading_table *shading_table
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:43:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:742:44: warning: incorrect type in argument 1 (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:742:44:    expected void [noderef] <asn:1>*to
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:742:44:    got struct atomisp_shading_table *shading_table
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:755:41: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:755:41:    expected struct atomisp_morph_table *morph_table
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:755:41:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:760:44: warning: incorrect type in argument 1 (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:760:44:    expected void [noderef] <asn:1>*to
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:760:44:    got struct atomisp_morph_table *morph_table
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:772:40: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:772:40:    expected struct atomisp_dvs2_coefficients *dvs2_coefs
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:772:40:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:777:44: warning: incorrect type in argument 1 (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:777:44:    expected void [noderef] <asn:1>*to
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:777:44:    got struct atomisp_dvs2_coefficients *dvs2_coefs
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:46: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:46:    expected struct atomisp_dvs_6axis_config *dvs_6axis_config
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:46:    got void [noderef] <asn:1>*
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:793:44: warning: incorrect type in argument 1 (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:793:44:    expected void [noderef] <asn:1>*to
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:793:44:    got struct atomisp_dvs_6axis_config *dvs_6axis_config
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:853:17: warning: incorrect type in assignment (different address spaces)
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:853:17:    expected struct atomisp_sensor_ae_bracketing_lut_entry *lut
         drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:853:17:    got void [noderef] <asn:1>*
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      ad4222a0
    • Mauro Carvalho Chehab's avatar
      media: staging: atomisp: add missing include · f224cbec
      Mauro Carvalho Chehab authored
      There are two functions used externally:
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:866:6: warning: symbol 'atomisp_do_compat_ioctl' was not declared. Should it be static?
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:1110:6: warning: symbol 'atomisp_compat_ioctl32' was not declared. Should it be static?
      
      whose include header is missing. Add it.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      f224cbec
    • Mauro Carvalho Chehab's avatar
      media: atomisp: compat32: use get_user() before referencing user data · 158dff0e
      Mauro Carvalho Chehab authored
      The logic at get_atomisp_parameters32() is broken, as pointed by
      smatch:
      
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:21: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:744:60: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:763:21: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:770:60: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:21: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:795:60: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:812:21: warning: dereference of noderef expression
      	drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:819:60: warning: dereference of noderef expression
      
      It tries to access userspace data directly, without calling
      get_user(). That should generate OOPS. Thankfully, the right
      logic is already there (although commented out).
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      158dff0e
    • Mauro Carvalho Chehab's avatar
      media: v4l2-compat-ioctl32: prevent go past max size · ea72fbf5
      Mauro Carvalho Chehab authored
      As warned by smatch:
      	drivers/media/v4l2-core/v4l2-compat-ioctl32.c:879 put_v4l2_ext_controls32() warn: check for integer overflow 'count'
      
      The access_ok() logic should check for too big arrays too.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      ea72fbf5
    • Mauro Carvalho Chehab's avatar
      media: platform: fix some 64-bits warnings · 34b2ea1c
      Mauro Carvalho Chehab authored
      The omap/omap3 and viu drivers are for 32 bit platforms only.
      There, a pointer has 32 bits. Now that those drivers build
      for 64 bits with COMPILE_TEST, they produce the following
      warnings:
      
      drivers/media/platform/omap/omap_vout_vrfb.c: In function 'omap_vout_allocate_vrfb_buffers':
      drivers/media/platform/omap/omap_vout_vrfb.c:57:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
         memset((void *) vout->smsshado_virt_addr[i], 0,
                ^
      drivers/media/platform/fsl-viu.c: In function 'viu_setup_preview':
      drivers/media/platform/fsl-viu.c:753:28: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
        reg_val.field_base_addr = (u32)dev->ovbuf.base;
                                  ^
      drivers/media/platform/omap/omap_vout.c: In function 'omap_vout_get_userptr':
      drivers/media/platform/omap/omap_vout.c:209:25: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
         *physp = virt_to_phys((void *)virtp);
                               ^
      drivers/media/platform/omap3isp/ispccdc.c: In function 'ccdc_config':
      drivers/media/platform/omap3isp/ispccdc.c:738:9: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
               (__force void __user *)fpc.fpcaddr,
               ^
      
      Add some typecasts to remove those warnings when building for
      64 bits.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      34b2ea1c
    • Mauro Carvalho Chehab's avatar
      media: atomisp: remove an impossible condition · e935dbfc
      Mauro Carvalho Chehab authored
      Changeset dc9f65cf ("media: staging: atomisp: avoid a warning if 32
      bits build") was meant to solve an impossible condition when building
      with 32 bits. It turns that this impossible condition also happens wit
      64 bits:
      	drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c:698 gmin_get_config_var() warn: impossible condition '(*out_len > (~0)) => (0-u64max > u64max)'
      
      After a further analysis, this condition will always be false as, on
      all architectures, size_t doesn't have more bits than unsigned long.
      
      Also, the only two archs that really matter are x86 and x86_64, as this
      driver doesn't build on other archs (as it depends on X86-specific UEFI
      support).
      
      So, just drop the useless code.
      
      Fixes: dc9f65cf ("media: staging: atomisp: avoid a warning if 32 bits build")
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      e935dbfc
    • Hans Verkuil's avatar
      media: cec: fix smatch error · b66d4484
      Hans Verkuil authored
      drivers/media/cec/cec-pin-error-inj.c:231
      cec_pin_error_inj_parse_line() error: uninitialized symbol 'pos'.
      
      The tx-add-bytes command didn't check for the presence of an argument, and
      also didn't check that it was > 0.
      
      This should fix this error.
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      b66d4484
    • Mauro Carvalho Chehab's avatar
      media: v4l2-fwnode: simplify v4l2_fwnode_reference_parse_int_props() · 9879c9d3
      Mauro Carvalho Chehab authored
      The logic at v4l2_fwnode_reference_parse_int_props() is somewhat
      complex and violates Linux coding style, as it does multiple
      statements on a single line. That makes static analyzers to
      be confused, as warned by smatch:
      
      	drivers/media/v4l2-core/v4l2-fwnode.c:832 v4l2_fwnode_reference_parse_int_props() warn: passing zero to 'PTR_ERR'
      
      Simplify the logic, in order to make clearer about what happens
      when v4l2_fwnode_reference_get_int_prop() returns an error.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      9879c9d3
    • Mauro Carvalho Chehab's avatar
      media: dvb_frontend: fix locking issues at dvb_frontend_get_event() · 76d81243
      Mauro Carvalho Chehab authored
      As warned by smatch:
      	drivers/media/dvb-core/dvb_frontend.c:314 dvb_frontend_get_event() warn: inconsistent returns 'sem:&fepriv->sem'.
      	  Locked on:   line 288
      	               line 295
      	               line 306
      	               line 314
      	  Unlocked on: line 303
      
      The lock implementation for get event is wrong, as, if an
      interrupt occurs, down_interruptible() will fail, and the
      routine will call up() twice when userspace calls the ioctl
      again.
      
      The bad code is there since when Linux migrated to git, in
      2005.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      76d81243
    • Mauro Carvalho Chehab's avatar
      media: staging: atomisp: fix string comparation logic · 65c11673
      Mauro Carvalho Chehab authored
      it makes no sense to use strncmp() with a size with is
      bigger than the string we're comparing with.
      
      Fix those warnings:
      
          drivers/staging/media/atomisp/pci/atomisp2/atomisp_fops.c:776 atomisp_open() error: strncmp() '"ATOMISP ISP ACC"' too small (16 vs 32)
          drivers/staging/media/atomisp/pci/atomisp2/atomisp_fops.c:913 atomisp_release() error: strncmp() '"ATOMISP ISP ACC"' too small (16 vs 32)
          drivers/staging/media/atomisp/pci/atomisp2/atomisp_ioctl.c:2751 atomisp_vidioc_default() error: strncmp() '"ATOMISP ISP ACC"' too small (16 vs 32)
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      65c11673
    • Mauro Carvalho Chehab's avatar
      media: atomisp: fix __user annotations · 90d53d19
      Mauro Carvalho Chehab authored
      There are lots of troubles with atomisp __user annotations. Fix them.
      
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_acc.c:357:49: warning: incorrect type in argument 2 (different address spaces)
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_acc.c:357:49:    expected void *userptr
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_acc.c:357:49:    got void [noderef] <asn:1>*user_ptr
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:3302:43: warning: incorrect type in argument 2 (different address spaces)
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:3302:43:    expected void const [noderef] <asn:1>*from
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:3302:43:    got void const *from
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:4070:58: warning: incorrect type in argument 2 (different address spaces)
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:4070:58:    expected void const *from
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:4070:58:    got unsigned short [noderef] <asn:1>*<noident>
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:4082:58: warning: incorrect type in argument 2 (different address spaces)
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:4082:58:    expected void const *from
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:4082:58:    got unsigned short [noderef] <asn:1>*<noident>
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:6179:62: warning: incorrect type in argument 2 (different address spaces)
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:6179:62:    expected void const [noderef] <asn:1>*from
      drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c:6179:62:    got unsigned short [usertype] *<noident>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      90d53d19