1. 10 11月, 2011 1 次提交
    • M
      drm/nouveau: initialize chan->fence.lock before use · 5e60ee78
      Marcin Slusarz 提交于
      Fence lock needs to be initialized before any call to nouveau_channel_put
      because it calls nouveau_channel_idle->nouveau_fence_update which uses
      fence lock.
      
      BUG: spinlock bad magic on CPU#0, test/24134
       lock: ffff88019f90dba8, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
      Pid: 24134, comm: test Not tainted 3.0.0-nv+ #800
      Call Trace:
       spin_bug+0x9c/0xa3
       do_raw_spin_lock+0x29/0x13c
       _raw_spin_lock+0x1e/0x22
       nouveau_fence_update+0x2d/0xf1
       nouveau_channel_idle+0x22/0xa0
       nouveau_channel_put_unlocked+0x84/0x1bd
       nouveau_channel_put+0x20/0x24
       nouveau_channel_alloc+0x4ec/0x585
       nouveau_ioctl_fifo_alloc+0x50/0x130
       drm_ioctl+0x289/0x361
       do_vfs_ioctl+0x4dd/0x52c
       sys_ioctl+0x42/0x65
       system_call_fastpath+0x16/0x1b
      
      It's easily triggerable from userspace.
      
      Additionally remove double initialization of chan->fence.pending.
      Signed-off-by: NMarcin Slusarz <marcin.slusarz@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
      5e60ee78
  2. 20 9月, 2011 1 次提交
  3. 23 6月, 2011 7 次提交
  4. 16 5月, 2011 4 次提交
  5. 31 3月, 2011 1 次提交
  6. 25 2月, 2011 2 次提交
  7. 07 1月, 2011 1 次提交
  8. 30 12月, 2010 1 次提交
  9. 27 12月, 2010 1 次提交
  10. 21 12月, 2010 1 次提交
  11. 08 12月, 2010 3 次提交
  12. 03 12月, 2010 12 次提交
  13. 05 10月, 2010 2 次提交
  14. 24 9月, 2010 2 次提交
  15. 17 8月, 2010 1 次提交
    • D
      drm: block userspace under allocating buffer and having drivers overwrite it (v2) · 1b2f1489
      Dave Airlie 提交于
      With the current screwed but its ABI, ioctls for the drm, Linus pointed out that we could allow userspace to specify the allocation size, but we pass it to the driver which then uses it blindly to store a struct. Now if userspace specifies the allocation size as smaller than the driver needs, the driver can possibly overwrite memory.
      
      This patch restructures the driver ioctls so we store the structure size we are expecting, and make sure we allocate at least that size. The copy from/to userspace are still restricted to the size the user specifies, this allows ioctl structs to grow on both sides of the equation.
      
      Up until now we didn't really use the DRM_IOCTL defines in the kernel, so this cleans them up and adds them for nouveau.
      
      v2:
      fix nouveau pushbuf arg (thanks to Ben for pointing it out)
      Reported-by: NLinus Torvalds <torvalds@linuxfoundation.org>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      1b2f1489