1. 30 11月, 2021 1 次提交
  2. 11 11月, 2021 1 次提交
  3. 04 11月, 2021 1 次提交
  4. 29 10月, 2021 1 次提交
  5. 28 10月, 2021 1 次提交
  6. 26 10月, 2021 1 次提交
    • A
      dma-buf: st: fix error handling in test_get_fences() · 55d5e4f9
      Arnd Bergmann 提交于
      The new driver incorrectly unwinds after errors, as clang points out:
      
      drivers/dma-buf/st-dma-resv.c:295:7: error: variable 'i' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
                      if (r) {
                          ^
      drivers/dma-buf/st-dma-resv.c:336:9: note: uninitialized use occurs here
              while (i--)
                     ^
      drivers/dma-buf/st-dma-resv.c:295:3: note: remove the 'if' if its condition is always false
                      if (r) {
                      ^~~~~~~~
      drivers/dma-buf/st-dma-resv.c:288:6: error: variable 'i' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
              if (r) {
                  ^
      drivers/dma-buf/st-dma-resv.c:336:9: note: uninitialized use occurs here
              while (i--)
                     ^
      drivers/dma-buf/st-dma-resv.c:288:2: note: remove the 'if' if its condition is always false
              if (r) {
              ^~~~~~~~
      drivers/dma-buf/st-dma-resv.c:280:10: note: initialize the variable 'i' to silence this warning
              int r, i;
                      ^
                       = 0
      
      Skip cleaning up the bits that have not been allocated at this point.
      
      Fixes: 1d51775c ("dma-buf: add dma_resv selftest v4")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Reviewed-by: NArnd Bergmann <arnd@arndb.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20211026083448.3471055-1-arnd@kernel.orgSigned-off-by: NChristian König <christian.koenig@amd.com>
      55d5e4f9
  7. 25 10月, 2021 1 次提交
  8. 22 10月, 2021 1 次提交
  9. 19 10月, 2021 1 次提交
  10. 11 10月, 2021 1 次提交
    • T
      dma-resv: Fix dma_resv_get_fences and dma_resv_copy_fences after conversion · 5e51cc00
      Tvrtko Ursulin 提交于
      Cache the count of shared fences in the iterator to avoid dereferencing
      the dma_resv_object outside the RCU protection. Otherwise iterator and its
      users can observe an incosistent state which makes it impossible to use
      safely. Such as:
      
      <6> [187.517041] [IGT] gem_sync: executing
      <7> [187.536343] i915 0000:00:02.0: [drm:i915_gem_context_create_ioctl [i915]] HW context 1 created
      <7> [187.536793] i915 0000:00:02.0: [drm:i915_gem_context_create_ioctl [i915]] HW context 1 created
      <6> [187.551235] [IGT] gem_sync: starting subtest basic-many-each
      <1> [188.935462] BUG: kernel NULL pointer dereference, address: 0000000000000010
      <1> [188.935485] #PF: supervisor write access in kernel mode
      <1> [188.935495] #PF: error_code(0x0002) - not-present page
      <6> [188.935504] PGD 0 P4D 0
      <4> [188.935512] Oops: 0002 [#1] PREEMPT SMP NOPTI
      <4> [188.935521] CPU: 2 PID: 1467 Comm: gem_sync Not tainted 5.15.0-rc4-CI-Patchwork_21264+ #1
      <4> [188.935535] Hardware name:  /NUC6CAYB, BIOS AYAPLCEL.86A.0049.2018.0508.1356 05/08/2018
      <4> [188.935546] RIP: 0010:dma_resv_get_fences+0x116/0x2d0
      <4> [188.935560] Code: 10 85 c0 7f c9 be 03 00 00 00 e8 15 8b df ff eb bd e8 8e c6 ff ff eb b6 41 8b 04 24 49 8b 55 00 48 89 e7 8d 48 01 41 89 0c 24 <4c> 89 34 c2 e8 41 f2 ff ff 49 89 c6 48 85 c0 75 8c 48 8b 44 24 10
      <4> [188.935583] RSP: 0018:ffffc900011dbcc8 EFLAGS: 00010202
      <4> [188.935593] RAX: 0000000000000000 RBX: 00000000ffffffff RCX: 0000000000000001
      <4> [188.935603] RDX: 0000000000000010 RSI: ffffffff822e343c RDI: ffffc900011dbcc8
      <4> [188.935613] RBP: ffffc900011dbd48 R08: ffff88812d255bb8 R09: 00000000fffffffe
      <4> [188.935623] R10: 0000000000000001 R11: 0000000000000000 R12: ffffc900011dbd44
      <4> [188.935633] R13: ffffc900011dbd50 R14: ffff888113d29cc0 R15: 0000000000000000
      <4> [188.935643] FS:  00007f68d17e9700(0000) GS:ffff888277900000(0000) knlGS:0000000000000000
      <4> [188.935655] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4> [188.935665] CR2: 0000000000000010 CR3: 000000012d0a4000 CR4: 00000000003506e0
      <4> [188.935676] Call Trace:
      <4> [188.935685]  i915_gem_object_wait+0x1ff/0x410 [i915]
      <4> [188.935988]  i915_gem_wait_ioctl+0xf2/0x2a0 [i915]
      <4> [188.936272]  ? i915_gem_object_wait+0x410/0x410 [i915]
      <4> [188.936533]  drm_ioctl_kernel+0xae/0x140
      <4> [188.936546]  drm_ioctl+0x201/0x3d0
      <4> [188.936555]  ? i915_gem_object_wait+0x410/0x410 [i915]
      <4> [188.936820]  ? __fget_files+0xc2/0x1c0
      <4> [188.936830]  ? __fget_files+0xda/0x1c0
      <4> [188.936839]  __x64_sys_ioctl+0x6d/0xa0
      <4> [188.936848]  do_syscall_64+0x3a/0xb0
      <4> [188.936859]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      
      If the shared object has changed during the RCU unlocked period
      callers will correctly handle the restart on the next iteration.
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Fixes: 96601e8a ("dma-buf: use new iterator in dma_resv_copy_fences")
      Fixes: d3c80698 ("dma-buf: use new iterator in dma_resv_get_fences v3")
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4274
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: linux-media@vger.kernel.org
      Cc: dri-devel@lists.freedesktop.org
      Cc: linaro-mm-sig@lists.linaro.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20211008095007.972693-1-tvrtko.ursulin@linux.intel.comReviewed-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NChristian König <christian.koenig@amd.com>
      5e51cc00
  11. 07 10月, 2021 3 次提交
  12. 06 10月, 2021 5 次提交
  13. 01 10月, 2021 1 次提交
    • C
      dma-buf: fix and rework dma_buf_poll v7 · 6b51b02a
      Christian König 提交于
      Daniel pointed me towards this function and there are multiple obvious problems
      in the implementation.
      
      First of all the retry loop is not working as intended. In general the retry
      makes only sense if you grab the reference first and then check the sequence
      values.
      
      Then we should always also wait for the exclusive fence.
      
      It's also good practice to keep the reference around when installing callbacks
      to fences you don't own.
      
      And last the whole implementation was unnecessary complex and rather hard to
      understand which could lead to probably unexpected behavior of the IOCTL.
      
      Fix all this by reworking the implementation from scratch. Dropping the
      whole RCU approach and taking the lock instead.
      
      Only mildly tested and needs a thoughtful review of the code.
      
      Pushing through drm-misc-next to avoid merge conflicts and give the code
      another round of testing.
      
      v2: fix the reference counting as well
      v3: keep the excl fence handling as is for stable
      v4: back to testing all fences, drop RCU
      v5: handle in and out separately
      v6: add missing clear of events
      v7: change coding style as suggested by Michel, drop unused variables
      Signed-off-by: NChristian König <christian.koenig@amd.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Tested-by: NMichel Dänzer <mdaenzer@redhat.com>
      CC: stable@vger.kernel.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210720131110.88512-1-christian.koenig@amd.com
      6b51b02a
  14. 14 9月, 2021 1 次提交
  15. 07 9月, 2021 2 次提交
  16. 03 9月, 2021 1 次提交
  17. 02 9月, 2021 1 次提交
  18. 31 8月, 2021 1 次提交
    • D
      dma-resv: Give the docs a do-over · d9edf92d
      Daniel Vetter 提交于
      Specifically document the new/clarified rules around how the shared
      fences do not have any ordering requirements against the exclusive
      fence.
      
      But also document all the things a bit better, given how central
      struct dma_resv to dynamic buffer management the docs have been very
      inadequat.
      
      - Lots more links to other pieces of the puzzle. Unfortunately
        ttm_buffer_object has no docs, so no links :-(
      
      - Explain/complain a bit about dma_resv_locking_ctx(). I still don't
        like that one, but fixing the ttm call chains is going to be
        horrible. Plus we want to plug in real slowpath locking when we do
        that anyway.
      
      - Main part of the patch is some actual docs for struct dma_resv.
      
      Overall I think we still have a lot of bad naming in this area (e.g.
      dma_resv.fence is singular, but contains the multiple shared fences),
      but I think that's more indicative of how the semantics and rules are
      just not great.
      
      Another thing that's real awkard is how chaining exclusive fences
      right now means direct dma_resv.exclusive_fence pointer access with an
      rcu_assign_pointer. Not so great either.
      
      v2:
      - Fix a pile of typos (Matt, Jason)
      - Hammer it in that breaking the rules leads to use-after-free issues
        around dma-buf sharing (Christian)
      Reviewed-by: NChristian König <christian.koenig@amd.com>
      Cc: Jason Ekstrand <jason@jlekstrand.net>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: "Christian König" <christian.koenig@amd.com>
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Link: https://patchwork.freedesktop.org/patch/msgid/20210805104705.862416-21-daniel.vetter@ffwll.ch
      d9edf92d
  19. 16 8月, 2021 2 次提交
  20. 12 8月, 2021 1 次提交
  21. 20 7月, 2021 2 次提交
  22. 12 7月, 2021 1 次提交
  23. 08 7月, 2021 1 次提交
  24. 23 6月, 2021 2 次提交
  25. 15 6月, 2021 3 次提交
  26. 10 6月, 2021 1 次提交
  27. 06 6月, 2021 2 次提交