Marcin Slusarz
7fa0cba2b2
drm/nouveau: properly handle pushbuffer check failures
When "buffer in list" check does not pass, don't free validation lists - they were
not initialized yet.
Fixes this oops:
[drm] nouveau 0000:02:00.0: push 105 buffer not in list
BUG: unable to handle kernel NULL pointer dereference at 000000000000057c
IP: [<ffffffff81236aa4>] do_raw_spin_lock+0x14/0x13c
PGD 1ac6cb067 PUD 1aaa52067 PMD 0
CPU 0
Modules linked in: nouveau ttm drm_kms_helper snd_hda_codec_realtek snd_hda_intel snd_hda_codec
Pid: 6265, comm: OilRush_x86 Not tainted 2.6.38-rc6-nv+ #632 System manufacturer System Product Name/P6T SE
RIP: 0010:[<ffffffff81236aa4>] [<ffffffff81236aa4>] do_raw_spin_lock+0x14/0x13c
(...)
Process OilRush_x86 (pid: 6265, threadinfo ffff8801a6aee000, task ffff8801a26c0000)
0000000000000000 ffff8801ac74c618 0000000000000000 0000000000000578
0000000000000000 ffff8801ac74c618 0000000000000000 ffff8801bd9d0000
[<ffffffff81417f78>] _raw_spin_lock+0x1e/0x22
[<ffffffffa00a2746>] nouveau_bo_fence+0x2e/0x60 [nouveau]
[<ffffffffa00a540b>] validate_fini_list+0x35/0xeb [nouveau]
[<ffffffffa00a54d3>] validate_fini+0x12/0x31 [nouveau]
[<ffffffffa00a6386>] nouveau_gem_ioctl_pushbuf+0xe94/0xf6b [nouveau]
[<ffffffff8141ac56>] ? sub_preempt_count+0x9e/0xb2
[<ffffffff81417e94>] ? _raw_spin_unlock_irqrestore+0x30/0x4d
[<ffffffff8105dea2>] ? __wake_up+0x3f/0x48
[<ffffffff812aebb4>] drm_ioctl+0x289/0x361
[<ffffffff8141ac56>] ? sub_preempt_count+0x9e/0xb2
[<ffffffffa00a54f2>] ? nouveau_gem_ioctl_pushbuf+0x0/0xf6b [nouveau]
[<ffffffff8141ac56>] ? sub_preempt_count+0x9e/0xb2
[<ffffffffa010caa2>] nouveau_compat_ioctl+0x16/0x1c [nouveau]
[<ffffffff81142c0d>] compat_sys_ioctl+0x1c8/0x12d7
[<ffffffff814179ca>] ? trace_hardirqs_off_thunk+0x3a/0x6c
[<ffffffff81058099>] sysenter_dispatch+0x7/0x30
[<ffffffff8141798e>] ? trace_hardirqs_on_thunk+0x3a/0x3c
RIP [<ffffffff81236aa4>] do_raw_spin_lock+0x14/0x13c
RSP <ffff8801a6aefb88>
---[ end trace 0014d5d93e6147e1 ]---
Additionally, don't call validate_fini twice in case of validation failure.
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2011-03-14 16:31:45 +10:00
..
2011-01-20 18:30:17 -08:00
2011-01-28 03:16:20 -05:00
2011-01-24 13:17:06 -08:00
2011-01-25 20:50:07 +01:00
2011-01-13 10:50:24 -08:00
2011-01-19 14:40:41 -02:00
2011-01-13 10:45:01 -08:00
2011-02-04 09:43:57 +10:00
2011-01-26 10:50:04 +10:00
2011-01-20 17:02:05 -08:00
2011-01-12 18:06:19 -05:00
2011-01-13 10:25:58 -08:00
2011-01-13 08:03:09 -08:00
2011-01-17 10:54:41 -08:00
2011-01-13 10:05:56 -08:00
2011-01-21 13:34:39 -08:00
2011-01-20 17:02:05 -08:00
2011-01-26 10:49:59 +10:00
2011-03-14 16:31:45 +10:00
2011-01-20 17:02:05 -08:00
2011-01-25 09:10:50 -08:00
2011-01-14 22:03:50 +01:00
2011-01-20 17:02:05 -08:00
2011-01-25 05:57:34 +10:00
2011-02-03 11:19:26 -08:00
2011-02-06 16:49:48 +01:00
2011-02-01 14:17:51 -08:00
2011-01-26 10:49:58 +10:00
2011-01-20 21:37:29 +10:30
2011-01-21 14:08:34 +11:00
2011-01-14 18:44:22 +01:00
2011-02-02 17:52:19 -08:00
2011-01-13 08:03:22 -08:00
2011-01-14 12:38:18 +01:00
2011-01-14 12:38:12 +01:00
2011-01-31 10:53:37 +00:00
2011-01-29 18:27:13 +02:00
2011-02-04 13:20:01 -08:00
2011-01-16 17:28:21 -08:00
2011-01-15 22:01:58 -07:00
2011-01-26 10:49:59 +10:00
2011-01-20 17:02:05 -08:00
2011-01-20 17:02:05 -08:00
2011-01-31 12:59:34 +10:00
2011-01-12 04:59:44 -05:00
2011-01-14 09:25:59 -08:00
2011-01-26 10:50:00 +10:00
2011-01-22 20:32:37 -08:00
2011-01-14 12:38:16 +01:00
2011-02-03 12:59:50 -08:00
2011-02-04 13:20:01 -08:00
2011-01-03 20:02:06 -07:00
2011-01-24 11:52:33 -06:00
2011-01-11 23:27:25 -05:00
2011-01-19 19:02:35 +09:00
2011-01-18 14:28:48 -08:00
2011-01-20 17:02:05 -08:00
2011-02-02 17:52:19 -08:00
2011-01-14 10:12:29 -06:00
2011-01-13 10:05:56 -08:00
2011-01-12 05:14:15 -05:00
2011-02-01 08:05:19 +10:00
2011-01-24 08:14:07 +09:00
2011-02-01 16:48:46 +02:00
2011-01-26 10:50:06 +10:00
2011-01-20 21:37:30 +10:30
2011-01-13 08:03:22 -08:00
2011-01-12 13:51:35 +00:00
2011-01-20 16:37:28 -08:00
2011-01-14 10:12:29 -06:00
2011-01-20 16:39:23 -08:00