1. 21 10月, 2015 9 次提交
  2. 01 10月, 2015 6 次提交
  3. 26 9月, 2015 3 次提交
    • H
      [media] v4l2-compat-ioctl32: replace pr_warn by pr_debug · 9ec32cc7
      Hans Verkuil 提交于
      Every time compat32 encounters an unknown ioctl it will call pr_warn.
      However, that's very irritating since it is perfectly normal that this
      happens. For example, applications often try to call an ioctl to see if
      it exists, and if that's used with an older kernel where compat32 doesn't
      support that ioctl yet, then it starts spamming the kernel log.
      
      So replace pr_warn by pr_debug.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Acked-by: NSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      9ec32cc7
    • A
      [media] v4l2-compat-ioctl32: fix alignment for ARM64 · 655e9780
      Andrzej Hajda 提交于
      Alignment/padding rules on AMD64 and ARM64 differs. To allow properly match
      compatible ioctls on ARM64 kernels without breaking AMD64 some fields
      should be aligned using compat_s64 type and in one case struct should be
      unpacked.
      Signed-off-by: NAndrzej Hajda <a.hajda@samsung.com>
      Cc: <stable@vger.kernel.org>      # for v3.10 and up
      [hans.verkuil@cisco.com: use compat_u64 instead of compat_s64 in v4l2_input32]
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      655e9780
    • Z
      [media] m2m: fix bad unlock balance · f1a81afc
      Zahari Doychev 提交于
      This patch removes unnecessary mutex queue unlock/lock sequence causing bad
      unlock balance in v4l2_m2m_poll when the last buffer on the destination
      queue has been dequeued and adds spin lock protection for the done list
      list_empty calls.
      
      [  144.990873] =====================================
      [  144.995584] [ BUG: bad unlock balance detected! ]
      [  145.000301] 4.1.0-00137-ga105070 #98 Tainted: G        W
      [  145.006140] -------------------------------------
      [  145.010851] demux:sink/487 is trying to release lock (&dev->dev_mutex) at:
      [  145.017785] [<808cc578>] mutex_unlock+0x18/0x1c
      [  145.022322] but there are no more locks to release!
      [  145.027205]
      [  145.027205] other info that might help us debug this:
      [  145.033741] no locks held by demux:sink/487.
      [  145.038015]
      [  145.038015] stack backtrace:
      [  145.042385] CPU: 2 PID: 487 Comm: demux:sink Tainted: G        W       4.1.0-00137-ga105070 #98
      [  145.051089] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
      [  145.057622] Backtrace:
      [  145.060102] [<80014a4c>] (dump_backtrace) from [<80014cc4>] (show_stack+0x20/0x24)
      [  145.067679]  r6:80cedf78 r5:00000000 r4:00000000 r3:00000000
      [  145.073421] [<80014ca4>] (show_stack) from [<808c61e0>] (dump_stack+0x8c/0xa4)
      [  145.080661] [<808c6154>] (dump_stack) from [<80072b64>] (print_unlock_imbalance_bug+0xb8/0xe8)
      [  145.089277]  r6:808cc578 r5:ac6cd050 r4:ac38e400 r3:00000001
      [  145.095020] [<80072aac>] (print_unlock_imbalance_bug) from [<80077db4>] (lock_release+0x1a4/0x250)
      [  145.103983]  r6:808cc578 r5:ac6cd050 r4:ac38e400 r3:00000000
      [  145.109728] [<80077c10>] (lock_release) from [<808cc470>] (__mutex_unlock_slowpath+0xc4/0x1b4)
      [  145.118344]  r9:acb27a41 r8:00000000 r7:81553814 r6:808cc578 r5:60030013 r4:ac6cd01c
      [  145.126190] [<808cc3ac>] (__mutex_unlock_slowpath) from [<808cc578>] (mutex_unlock+0x18/0x1c)
      [  145.134720]  r7:00000000 r6:aced7cd4 r5:00000041 r4:acb87800
      [  145.140468] [<808cc560>] (mutex_unlock) from [<805a98b8>] (v4l2_m2m_fop_poll+0x5c/0x64)
      [  145.148494] [<805a985c>] (v4l2_m2m_fop_poll) from [<805955a0>] (v4l2_poll+0x6c/0xa0)
      [  145.156243]  r6:aced7bec r5:00000000 r4:ac6cc380 r3:805a985c
      [  145.161991] [<80595534>] (v4l2_poll) from [<80156edc>] (do_sys_poll+0x230/0x4c0)
      [  145.169391]  r5:00000000 r4:aced7be4
      [  145.173013] [<80156cac>] (do_sys_poll) from [<801574a8>] (SyS_ppoll+0x1d4/0x1fc)
      [  145.180414]  r10:00000000 r9:aced6000 r8:00000000 r7:00000000 r6:75c04538 r5:00000002
      [  145.188338]  r4:00000000
      [  145.190906] [<801572d4>] (SyS_ppoll) from [<800108c0>] (ret_fast_syscall+0x0/0x54)
      [  145.198481]  r8:80010aa4 r7:00000150 r6:75c04538 r5:00000002 r4:00000008
      Signed-off-by: NZahari Doychev <zahari.doychev@linux.com>
      Acked-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      f1a81afc
  4. 17 8月, 2015 6 次提交
  5. 12 8月, 2015 1 次提交
  6. 11 8月, 2015 3 次提交
    • P
      [media] v4l2: move tracepoint generation into separate file · 9deb6ad6
      Philipp Zabel 提交于
      To compile videobuf2-core as a module, the vb2_* tracepoints must be
      exported from the videodev module. Instead of exporting vb2 tracepoint
      symbols from v4l2-ioctl.c, move the tracepoint generation into a separate
      file. This patch fixes the following build error in the modpost stage,
      introduced by 2091f518 ("[media] videobuf2: add trace events"):
      
          ERROR: "__tracepoint_vb2_buf_done" undefined!
          ERROR: "__tracepoint_vb2_dqbuf" undefined!
          ERROR: "__tracepoint_vb2_qbuf" undefined!
          ERROR: "__tracepoint_vb2_buf_queue" undefined!
      Suggested-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NPhilipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      9deb6ad6
    • L
      [media] v4l2-ioctl: Give more information when device_caps are missing · 6d7570c4
      Laura Abbott 提交于
      Currently, the warning for missing device_caps gives a backtrace like so:
      
      [<ffffffff8175c199>] dump_stack+0x45/0x57
      [<ffffffff8109ad5a>] warn_slowpath_common+0x8a/0xc0
      [<ffffffff8109ae8a>] warn_slowpath_null+0x1a/0x20
      [<ffffffffa0237453>] v4l_querycap+0x43/0x80 [videodev]
      [<ffffffffa0237734>] __video_do_ioctl+0x2a4/0x320 [videodev]
      [<ffffffff812207e5>] ? do_last+0x195/0x1210
      [<ffffffffa023a11e>] video_usercopy+0x22e/0x5b0 [videodev]
      [<ffffffffa0237490>] ? v4l_querycap+0x80/0x80 [videodev]
      [<ffffffffa023a4b5>] video_ioctl2+0x15/0x20 [videodev]
      [<ffffffffa0233733>] v4l2_ioctl+0x113/0x150 [videodev]
      [<ffffffff81225798>] do_vfs_ioctl+0x2f8/0x4f0
      [<ffffffff8113b2d4>] ? __audit_syscall_entry+0xb4/0x110
      [<ffffffff81022d7c>] ? do_audit_syscall_entry+0x6c/0x70
      [<ffffffff81225a11>] SyS_ioctl+0x81/0xa0
      [<ffffffff8113b526>] ? __audit_syscall_exit+0x1f6/0x2a0
      [<ffffffff81763549>] system_call_fastpath+0x12/0x17
      
      This indicates that device_caps are missing but doesn't give
      much of a clue which driver is actually at fault. Improve
      the warning output by showing the capabilities and the
      responsible driver.
      Signed-off-by: NLaura Abbott <labbott@fedoraproject.org>
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      6d7570c4
    • H
      [media] v4l2-mem2mem: drop lock in v4l2_m2m_fop_mmap · e752577e
      Hans Verkuil 提交于
      The v4l2_m2m_fop_mmap function takes the core mutex, but this will result in a potential
      circular locking dependency:
      
      [  262.517164] ======================================================
      [  262.517166] [ INFO: possible circular locking dependency detected ]
      [  262.517169] 4.2.0-rc2-koryphon #844 Not tainted
      [  262.517171] -------------------------------------------------------
      [  262.517173] v4l2-compliance/1379 is trying to acquire lock:
      [  262.517175]  (&dev->dev_mutex){+.+.+.}, at: [<ffffffffa000ddab>] v4l2_m2m_fop_mmap+0x2b/0x90 [v4l2_mem2mem]
      [  262.517187]
                     but task is already holding lock:
      [  262.517189]  (&mm->mmap_sem){++++++}, at: [<ffffffff81159309>] vm_mmap_pgoff+0x69/0xc0
      [  262.517199]
                     which lock already depends on the new lock.
      
      [  262.517202]
                     the existing dependency chain (in reverse order) is:
      [  262.517204]
                     -> #1 (&mm->mmap_sem){++++++}:
      [  262.517209]        [<ffffffff810d0e6b>] __lock_acquire+0x62b/0xe80
      [  262.517215]        [<ffffffff810d2095>] lock_acquire+0x65/0x90
      [  262.517218]        [<ffffffff811612e5>] __might_fault+0x75/0xa0
      [  262.517222]        [<ffffffffa06dead9>] video_usercopy+0x3e9/0x4e0 [videodev]
      [  262.517231]        [<ffffffffa06debe0>] video_ioctl2+0x10/0x20 [videodev]
      [  262.517238]        [<ffffffffa06d8663>] v4l2_ioctl+0xc3/0xe0 [videodev]
      [  262.517243]        [<ffffffff811a8cac>] do_vfs_ioctl+0x2fc/0x550
      [  262.517248]        [<ffffffff811a8f74>] SyS_ioctl+0x74/0x80
      [  262.517252]        [<ffffffff81a4d2ee>] entry_SYSCALL_64_fastpath+0x12/0x76
      [  262.517258]
                     -> #0 (&dev->dev_mutex){+.+.+.}:
      [  262.517262]        [<ffffffff810cf464>] validate_chain.isra.38+0xd04/0x1170
      [  262.517266]        [<ffffffff810d0e6b>] __lock_acquire+0x62b/0xe80
      [  262.517270]        [<ffffffff810d2095>] lock_acquire+0x65/0x90
      [  262.517273]        [<ffffffff81a48e3c>] mutex_lock_interruptible_nested+0x6c/0x4b0
      [  262.517279]        [<ffffffffa000ddab>] v4l2_m2m_fop_mmap+0x2b/0x90 [v4l2_mem2mem]
      [  262.517284]        [<ffffffffa06d80ff>] v4l2_mmap+0x4f/0x90 [videodev]
      [  262.517288]        [<ffffffff8116b06c>] mmap_region+0x38c/0x5b0
      [  262.517293]        [<ffffffff8116b585>] do_mmap_pgoff+0x2f5/0x3e0
      [  262.517297]        [<ffffffff8115932a>] vm_mmap_pgoff+0x8a/0xc0
      [  262.517300]        [<ffffffff81169bab>] SyS_mmap_pgoff+0x1cb/0x270
      [  262.517304]        [<ffffffff8100876d>] SyS_mmap+0x1d/0x20
      [  262.517309]        [<ffffffff81a4d2ee>] entry_SYSCALL_64_fastpath+0x12/0x76
      [  262.517313]
                     other info that might help us debug this:
      
      [  262.517315]  Possible unsafe locking scenario:
      
      [  262.517318]        CPU0                    CPU1
      [  262.517319]        ----                    ----
      [  262.517321]   lock(&mm->mmap_sem);
      [  262.517324]                                lock(&dev->dev_mutex);
      [  262.517327]                                lock(&mm->mmap_sem);
      [  262.517329]   lock(&dev->dev_mutex);
      [  262.517332]
                      *** DEADLOCK ***
      
      Since vb2_fop_mmap doesn't take the lock, neither should v4l2_m2m_fop_mmap.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Tested-by: NMikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
      e752577e
  7. 10 8月, 2015 1 次提交
  8. 07 8月, 2015 1 次提交
  9. 17 7月, 2015 5 次提交
  10. 06 7月, 2015 5 次提交