1. 22 9月, 2014 1 次提交
    • M
      [media] em28xx: fix VBI handling logic · c7854c2c
      Mauro Carvalho Chehab 提交于
      When both VBI and video are streaming, and video stream is stopped,
      a subsequent trial to restart it will fail, because S_FMT will
      return -EBUSY.
      
      That prevents applications like zvbi to work properly.
      
      Please notice that, while this fix it fully for zvbi, the
      best is to get rid of streaming_users and res_get logic as a hole.
      
      However, this single-line patch is better to be merged at -stable.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      c7854c2c
  2. 27 7月, 2014 4 次提交
  3. 05 7月, 2014 1 次提交
  4. 25 5月, 2014 1 次提交
  5. 24 5月, 2014 18 次提交
  6. 23 5月, 2014 2 次提交
  7. 23 4月, 2014 1 次提交
  8. 11 3月, 2014 1 次提交
  9. 06 3月, 2014 1 次提交
  10. 03 3月, 2014 1 次提交
  11. 05 2月, 2014 2 次提交
  12. 15 1月, 2014 7 次提交
    • F
      [media] em28xx: fix usb alternate setting for analog and digital video endpoints > 0 · 961717b4
      Frank Schaefer 提交于
      The current code assumes that the analog + digital video endpoints are always at
      interface number 0 when changing the alternate setting.
      This seems to work fine for most existing devices.
      However, at least the SpeedLink VAD Laplace webcam has the video endpoint on
      interface number 3 (which fortunately doesn't cause any trouble because ist uses
      bulk transfers only).
      We already consider the actual interface number for audio endpoints, so
      rename the the audio_ifnum variable and use it for all device types.
      Also get get rid of a pointless (ifnum < 0) in em28xx-audio.
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      961717b4
    • F
      [media] em28xx: make 'em28xx_ctrl_ops' static · 8068eb88
      Fengguang Wu 提交于
      sparse warnings: (new ones prefixed by >>)
      
      >> drivers/media/usb/em28xx/em28xx-video.c:1151:28: sparse: symbol 'em28xx_ctrl_ops' was not declared. Should it be static?
      Signed-off-by: NFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      8068eb88
    • M
      [media] em28xx: push mutex down to extensions on .fini callback · ebbfbc20
      Mauro Carvalho Chehab 提交于
      Avoid circular mutex lock by pushing the dev->lock to the .fini
      callback on each extension.
      
      As em28xx-dvb, em28xx-alsa and em28xx-rc have their own data
      structures, and don't touch at the common structure during .fini,
      only em28xx-v4l needs to be locked.
      
      [   90.994317] ======================================================
      [   90.994356] [ INFO: possible circular locking dependency detected ]
      [   90.994395] 3.13.0-rc1+ #24 Not tainted
      [   90.994427] -------------------------------------------------------
      [   90.994458] khubd/54 is trying to acquire lock:
      [   90.994490]  (&card->controls_rwsem){++++.+}, at: [<ffffffffa0177b08>] snd_ctl_dev_free+0x28/0x60 [snd]
      [   90.994656]
      [   90.994656] but task is already holding lock:
      [   90.994688]  (&dev->lock){+.+.+.}, at: [<ffffffffa040db81>] em28xx_close_extension+0x31/0x90 [em28xx]
      [   90.994843]
      [   90.994843] which lock already depends on the new lock.
      [   90.994843]
      [   90.994874]
      [   90.994874] the existing dependency chain (in reverse order) is:
      [   90.994905]
      -> #1 (&dev->lock){+.+.+.}:
      [   90.995057]        [<ffffffff810b8fa3>] __lock_acquire+0xb43/0x1330
      [   90.995121]        [<ffffffff810b9f82>] lock_acquire+0xa2/0x120
      [   90.995182]        [<ffffffff816a5b6c>] mutex_lock_nested+0x5c/0x3c0
      [   90.995245]        [<ffffffffa0422cca>] em28xx_vol_put_mute+0x1ba/0x1d0 [em28xx_alsa]
      [   90.995309]        [<ffffffffa017813d>] snd_ctl_elem_write+0xfd/0x140 [snd]
      [   90.995376]        [<ffffffffa01791c2>] snd_ctl_ioctl+0xe2/0x810 [snd]
      [   90.995442]        [<ffffffff811db8b0>] do_vfs_ioctl+0x300/0x520
      [   90.995504]        [<ffffffff811dbb51>] SyS_ioctl+0x81/0xa0
      [   90.995568]        [<ffffffff816b1929>] system_call_fastpath+0x16/0x1b
      [   90.995630]
      -> #0 (&card->controls_rwsem){++++.+}:
      [   90.995780]        [<ffffffff810b7a47>] check_prevs_add+0x947/0x950
      [   90.995841]        [<ffffffff810b8fa3>] __lock_acquire+0xb43/0x1330
      [   90.995901]        [<ffffffff810b9f82>] lock_acquire+0xa2/0x120
      [   90.995962]        [<ffffffff816a762b>] down_write+0x3b/0xa0
      [   90.996022]        [<ffffffffa0177b08>] snd_ctl_dev_free+0x28/0x60 [snd]
      [   90.996088]        [<ffffffffa017a255>] snd_device_free+0x65/0x140 [snd]
      [   90.996154]        [<ffffffffa017a751>] snd_device_free_all+0x61/0xa0 [snd]
      [   90.996219]        [<ffffffffa0173af4>] snd_card_do_free+0x14/0x130 [snd]
      [   90.996283]        [<ffffffffa0173f14>] snd_card_free+0x84/0x90 [snd]
      [   90.996349]        [<ffffffffa0423397>] em28xx_audio_fini+0x97/0xb0 [em28xx_alsa]
      [   90.996411]        [<ffffffffa040dba6>] em28xx_close_extension+0x56/0x90 [em28xx]
      [   90.996475]        [<ffffffffa040f639>] em28xx_usb_disconnect+0x79/0x90 [em28xx]
      [   90.996539]        [<ffffffff814a06e7>] usb_unbind_interface+0x67/0x1d0
      [   90.996620]        [<ffffffff8142920f>] __device_release_driver+0x7f/0xf0
      [   90.996682]        [<ffffffff814292a5>] device_release_driver+0x25/0x40
      [   90.996742]        [<ffffffff81428b0c>] bus_remove_device+0x11c/0x1a0
      [   90.996801]        [<ffffffff81425536>] device_del+0x136/0x1d0
      [   90.996863]        [<ffffffff8149e0c0>] usb_disable_device+0xb0/0x290
      [   90.996923]        [<ffffffff814930c5>] usb_disconnect+0xb5/0x1d0
      [   90.996984]        [<ffffffff81495ab6>] hub_port_connect_change+0xd6/0xad0
      [   90.997044]        [<ffffffff814967c3>] hub_events+0x313/0x9b0
      [   90.997105]        [<ffffffff81496e95>] hub_thread+0x35/0x170
      [   90.997165]        [<ffffffff8108ea2f>] kthread+0xff/0x120
      [   90.997226]        [<ffffffff816b187c>] ret_from_fork+0x7c/0xb0
      [   90.997287]
      [   90.997287] other info that might help us debug this:
      [   90.997287]
      [   90.997318]  Possible unsafe locking scenario:
      [   90.997318]
      [   90.997348]        CPU0                    CPU1
      [   90.997378]        ----                    ----
      [   90.997408]   lock(&dev->lock);
      [   90.997497]                                lock(&card->controls_rwsem);
      [   90.997607]                                lock(&dev->lock);
      [   90.997697]   lock(&card->controls_rwsem);
      [   90.997786]
      [   90.997786]  *** DEADLOCK ***
      [   90.997786]
      [   90.997817] 5 locks held by khubd/54:
      [   90.997847]  #0:  (&__lockdep_no_validate__){......}, at: [<ffffffff81496564>] hub_events+0xb4/0x9b0
      [   90.998025]  #1:  (&__lockdep_no_validate__){......}, at: [<ffffffff81493076>] usb_disconnect+0x66/0x1d0
      [   90.998204]  #2:  (&__lockdep_no_validate__){......}, at: [<ffffffff8142929d>] device_release_driver+0x1d/0x40
      [   90.998383]  #3:  (em28xx_devlist_mutex){+.+.+.}, at: [<ffffffffa040db77>] em28xx_close_extension+0x27/0x90 [em28xx]
      [   90.998567]  #4:  (&dev->lock){+.+.+.}, at: [<ffffffffa040db81>] em28xx_close_extension+0x31/0x90 [em28xx]
      Reviewed-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Tested-by: NAntti Palosaari <crope@iki.fi>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      ebbfbc20
    • M
      [media] em28xx: print a message at disconnect · aa929ad7
      Mauro Carvalho Chehab 提交于
      That helps to identify if something fails and explain why em28xx
      struct is not freed (if it ever happens).
      Reviewed-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Tested-by: NAntti Palosaari <crope@iki.fi>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      aa929ad7
    • F
      [media] em28xx-v4l: fix the freeing of the video devices memory · e847022a
      Frank Schaefer 提交于
      Remove some dead code from em28xx_v4l2_fini() and fix the leaking of the video,
      vbi and radio video_device struct memories.
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      e847022a
    • F
      [media] em28xx: always call em28xx_release_resources() in the usb disconnect handler · 5a620c7c
      Frank Schaefer 提交于
      When the usb device is disconnected, the resources are no longer available,
      so there is no reason to keep them registered.
      
      This will also fix the various sysfs group removal warnings which we can see
      since kernel 3.13.
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      5a620c7c
    • F
      [media] em28xx-v4l: move v4l2_ctrl_handler freeing and v4l2_device... · f188da43
      Frank Schaefer 提交于
      [media] em28xx-v4l: move v4l2_ctrl_handler freeing and v4l2_device unregistration to em28xx_v4l2_fini
      
      v4l2_ctrl_handler_free() and v4l2_device_unregister() are currently only called
      when the last user closes the device and the device is already disconnected.
      But that's wrong, we need to call these functions whenever the em28xx-v4l
      extension is closed and we can already do this if the device is still opened
      by some users.
      Signed-off-by: NFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: NMauro Carvalho Chehab <m.chehab@samsung.com>
      f188da43