Re: [Intel-gfx] [PATCH] drm: Fix deadlock retry loop in page_flip_ioctl

2017-05-22 Thread Tommi Rantala
2017-05-22 16:59 GMT+03:00 Daniel Vetter :
> I failed to properly onion-wrap the unwind code: We acquire the vblank
> reference before we start with the wait-wound locking dance, hence we
> must make sure we retry before we drop the reference. Oops.
>
> v2: The vblank_put must be after the frambuffer_put (Michel). I suck at
> unwrapping code that doesn't use separate labels for each stage, but
> checks each pointer first ... While re-reading everything I also
> realized that we must clean up the fb refcounts, and specifically
> plane->old_fb before we drop the locks, either in the final unlocking,
> or in the w/w retry path. Hence the correct fix is to drop the
> vblank_put to the very bottom.
>
> Fixes: 29dc0d1de182 ("drm: Roll out acquire context for the page_flip ioctl")
> Cc: Harry Wentland 
> Cc: Daniel Vetter 
> Cc: Jani Nikula 
> Cc: Sean Paul 
> Cc: David Airlie 
> Cc: dri-de...@lists.freedesktop.org
> Reported-by: Tommi Rantala 
> Cc: Tommi Rantala 
> Cc: Michel Dänzer 
> Signed-off-by: Daniel Vetter 

Thanks, confirmed that this fixes the warning that I was seeing!

Tested-by: Tommi Rantala 

> ---
>  drivers/gpu/drm/drm_plane.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index fedd4d60d9cd..5dc8c4350602 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -948,8 +948,6 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
> }
>
>  out:
> -   if (ret && crtc->funcs->page_flip_target)
> -   drm_crtc_vblank_put(crtc);
> if (fb)
> drm_framebuffer_put(fb);
> if (crtc->primary->old_fb)
> @@ -964,5 +962,8 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
> drm_modeset_drop_locks(&ctx);
> drm_modeset_acquire_fini(&ctx);
>
> +   if (ret && crtc->funcs->page_flip_target)
> +   drm_crtc_vblank_put(crtc);
> +
> return ret;
>  }
> --
> 2.11.0
>
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Sanity check incoming ioctl data for a NULL pointer

2013-03-17 Thread Tommi Rantala
2013/3/14 Chris Wilson :
> In order to prevent a potential NULL deference with hostile userspace,
> we need to check whether the ioctl was passed an invalid args pointer.
>
> Reported-by: Tommi Rantala 
> Link: 
> http://lkml.kernel.org/r/ca+ydwtpubvbwxbt-tdgpuvj1eu7itmcho_2b3w13hkd5+jw...@mail.gmail.com
> Signed-off-by: Chris Wilson 

Thanks, looks good. I still see a flood of oopses from the other
ioctls, so it's a bit difficult to test this patch properly.

> ---
>  drivers/gpu/drm/i915/i915_gem_execbuffer.c |   11 +--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
> b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 365e41a..9f5602e 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -1103,7 +1103,11 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
> struct drm_i915_gem_exec_object2 *exec2_list = NULL;
> int ret, i;
>
> -   if (args->buffer_count < 1) {
> +   if (args == NULL)
> +   return -EINVAL;
> +
> +   if (args->buffer_count < 1 ||
> +   args->buffer_count > INT_MAX / sizeof(*exec2_list)) {
> DRM_DEBUG("execbuf with %d buffers\n", args->buffer_count);
> return -EINVAL;
> }
> @@ -1182,8 +1186,11 @@ i915_gem_execbuffer2(struct drm_device *dev, void 
> *data,
> struct drm_i915_gem_exec_object2 *exec2_list = NULL;
> int ret;
>
> +   if (args == NULL)
> +   return -EINVAL;
> +
> if (args->buffer_count < 1 ||
> -   args->buffer_count > UINT_MAX / sizeof(*exec2_list)) {
> +   args->buffer_count > INT_MAX / sizeof(*exec2_list)) {
> DRM_DEBUG("execbuf2 with %d buffers\n", args->buffer_count);
> return -EINVAL;
> }
> --
> 1.7.10.4
>
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Sanity check incoming ioctl data for a NULL pointer

2013-04-11 Thread Tommi Rantala
2013/3/17 Chris Wilson :
> On Mon, Mar 18, 2013 at 07:42:58AM +1000, Dave Airlie wrote:
>> On Mon, Mar 18, 2013 at 7:40 AM, Chris Wilson  
>> wrote:
>> > On Sun, Mar 17, 2013 at 08:50:03PM +0100, Daniel Vetter wrote:
>> >> On Sat, Mar 16, 2013 at 11:19 AM, Chris Wilson  
>> >> wrote:
>> >> > If *userspace* doesn't request either IOC_IN | IOC_OUT in their ioctl
>> >> > command (which are seperate from the ioctl number), then kdata is set to
>> >> > NULL.
>> >>
>> >> Doesn't that mean that we need these checks everywhere? Or at least a
>> >> fixup in drm core proper?
>> >
>> > That's my conclusion. We either add a flag to ask drm_ioctl to prevent
>> > passing NULL pointers (as the existing behaviour may be useful
>> > somewhere, and I have not checked all callees) or saturate our callbacks
>> > with NULL checks.
>>
>> Do we have the kernel's expected IOC_IN/IOC_OUT flags at that point as well?
>>
>> we could check them and block NULL in that case.
>
> Yes. For the core ioctls, we use drm_ioctls[nr].cmd rather than the
> value passed in by userspace for the IOC_IN|IN_OUT bits. So:

Thanks, trinity can indeed set the in/out bits randomly, in a way that
does not match the driver ioctl definition.

Your patch almost fixes this. For the driver ioctls we will want to
grab the cmd from cmd_drv. So the patch should be:

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 25f91cd..5210f33 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -408,6 +408,7 @@ long drm_ioctl(struct file *filp,
usize = asize = _IOC_SIZE(cmd);
if (drv_size > asize)
asize = drv_size;
+   cmd = ioctl->cmd_drv;
}
else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) {
ioctl = &drm_ioctls[nr];

Can you please submit this officially?

> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 25f91cd..79b8bd1 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -408,6 +408,7 @@ long drm_ioctl(struct file *filp,
> usize = asize = _IOC_SIZE(cmd);
> if (drv_size > asize)
> asize = drv_size;
> +   cmd = ioctl->cmd;
> }
> else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) {
> ioctl = &drm_ioctls[nr];
>
>
> --
> Chris Wilson, Intel Open Source Technology Centre
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm: Fix deadlock due to getconnector locking changes

2015-03-02 Thread Tommi Rantala
2015-02-24 1:55 GMT+02:00 Marc Finet :
> On Sun, Feb 22, 2015 at 11:38:36AM +0100, Daniel Vetter wrote:
>> In
>>
>> daniel@phenom:~/linux/src$ git show ccfc08655
>> commit ccfc08655d5fd5076828f45fb09194c070f2f63a
>> Author: Rob Clark 
>> Date:   Thu Dec 18 16:01:48 2014 -0500
>>
>> drm: tweak getconnector locking
>>
>> We need to extend the locking to cover connector->state reading for
>> atomic drivers, but the above commit was a bit too eager and also
>> included the fill_modes callback. Which on i915 on old platforms using
>> load detection needs to acquire modeset locks, resulting in a deadlock
>> on output probing.
>>
>> Reported-by: Marc Finet 
>> Cc: Marc Finet 
>> Cc: robdcl...@gmail.com
>> Signed-off-by: Daniel Vetter 
>
> Tested-by: Marc Finet 
>
> Thanks.
>> ---
>>  drivers/gpu/drm/drm_crtc.c | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
>> index b15d720eda4c..ce5f1193ecd6 100644
>> --- a/drivers/gpu/drm/drm_crtc.c
>> +++ b/drivers/gpu/drm/drm_crtc.c
>> @@ -2180,7 +2180,6 @@ int drm_mode_getconnector(struct drm_device *dev, void 
>> *data,
>>   DRM_DEBUG_KMS("[CONNECTOR:%d:?]\n", out_resp->connector_id);
>>
>>   mutex_lock(&dev->mode_config.mutex);
>> - drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
>>
>>   connector = drm_connector_find(dev, out_resp->connector_id);
>>   if (!connector) {
>> @@ -2210,6 +2209,8 @@ int drm_mode_getconnector(struct drm_device *dev, void 
>> *data,
>>   out_resp->mm_height = connector->display_info.height_mm;
>>   out_resp->subpixel = connector->display_info.subpixel_order;
>>   out_resp->connection = connector->status;
>> +
>> + drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
>>   encoder = drm_connector_get_encoder(connector);
>>   if (encoder)
>>   out_resp->encoder_id = encoder->base.id;
>> --
>> 2.1.4
>>

Hi,

I think this patch introduced the following.

If the drm_connector_find() call fails, we jump to the 'out' label and
call drm_modeset_unlock(), before the drm_modeset_lock() call.

[   59.076011] =
[   59.076011] [ BUG: bad unlock balance detected! ]
[   59.076011] 4.0.0-rc1+ #60 Tainted: GW
[   59.076011] -
[   59.076011] trinity-c14/2418 is trying to release lock
(crtc_ww_class_mutex) at:
[   59.076011] [] ww_mutex_unlock+0x42/0xb0
[   59.076011] but there are no more locks to release!
[   59.076011]
[   59.076011] other info that might help us debug this:
[   59.076011] 1 lock held by trinity-c14/2418:
[   59.076011]  #0:  (&dev->mode_config.mutex){+.+.+.}, at:
[] drm_mode_getconnector+0x83/0x400
[   59.076011]
[   59.076011] stack backtrace:
[   59.076011] CPU: 0 PID: 2418 Comm: trinity-c14 Tainted: GW
 4.0.0-rc1+ #60
[   59.076011] Hardware name: Hewlett-Packard HP Compaq dc5750 Small
Form Factor/0A64h, BIOS 786E3 v02.10 01/25/2007
[   59.076011]  81dc2872 88005b777b48 81db6706

[   59.076011]  88005b719440 88005b777b78 810f8074
001d51c0
[   59.076011]  880069d3a5d0 88005b719440 81dc2872
88005b777bf8
[   59.076011] Call Trace:
[   59.076011]  [] ? ww_mutex_unlock+0x42/0xb0
[   59.076011]  [] dump_stack+0x4c/0x65
[   59.076011]  [] print_unlock_imbalance_bug+0xf4/0x100
[   59.076011]  [] ? ww_mutex_unlock+0x42/0xb0
[   59.076011]  [] lock_release_non_nested+0x24e/0x350
[   59.076011]  [] ? mark_held_locks+0x75/0xa0
[   59.076011]  [] ? __mutex_unlock_slowpath+0xad/0x170
[   59.076011]  [] ? ww_mutex_unlock+0x42/0xb0
[   59.076011]  [] lock_release+0xbc/0x380
[   59.076011]  [] __mutex_unlock_slowpath+0x71/0x170
[   59.076011]  [] ? drm_mode_getconnector+0x83/0x400
[   59.076011]  [] ww_mutex_unlock+0x42/0xb0
[   59.076011]  [] drm_modeset_unlock+0x2f/0x40
[   59.076011]  [] drm_mode_getconnector+0x280/0x400
[   59.076011]  [] ? might_fault+0x57/0xb0
[   59.076011]  [] drm_ioctl+0x19c/0x640
[   59.076011]  [] ? trace_hardirqs_on+0xd/0x10
[   59.076011]  [] radeon_drm_ioctl+0x46/0x80
[   59.076011]  [] do_vfs_ioctl+0x318/0x570
[   59.076011]  [] ? selinux_file_ioctl+0x56/0x110
[   59.076011]  [] SyS_ioctl+0x81/0xa0
[   59.076011]  [] system_call_fastpath+0x12/0x17
[   59.316190] [drm:radeon_gem_pread_ioctl] *ERROR* unimplemented
radeon_gem_pread_ioctl
[   59.579952] [drm:radeon_info_ioctl] *ERROR* copy_to_user
radeon_info_ioctl:555
[watchdog] kernel became tainted! (512/0) Last seed was 1541132817

Tommi
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: fix definition of the DRM_IOCTL_I915_GET_SPRITE_COLORKEY ioctl

2015-03-26 Thread Tommi Rantala
Fix definition of the DRM_IOCTL_I915_GET_SPRITE_COLORKEY ioctl, so that it
is different from the DRM_IOCTL_I915_SET_SPRITE_COLORKEY ioctl.

Signed-off-by: Tommi Rantala 
---
 include/uapi/drm/i915_drm.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
index 6eed16b..0e9c835 100644
--- a/include/uapi/drm/i915_drm.h
+++ b/include/uapi/drm/i915_drm.h
@@ -270,7 +270,7 @@ typedef struct _drm_i915_sarea {
 #define DRM_IOCTL_I915_OVERLAY_PUT_IMAGE   DRM_IOW(DRM_COMMAND_BASE + 
DRM_I915_OVERLAY_PUT_IMAGE, struct drm_intel_overlay_put_image)
 #define DRM_IOCTL_I915_OVERLAY_ATTRS   DRM_IOWR(DRM_COMMAND_BASE + 
DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs)
 #define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + 
DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
-#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + 
DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
+#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + 
DRM_I915_GET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
 #define DRM_IOCTL_I915_GEM_WAITDRM_IOWR(DRM_COMMAND_BASE + 
DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
 #define DRM_IOCTL_I915_GEM_CONTEXT_CREATE  DRM_IOWR (DRM_COMMAND_BASE + 
DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
 #define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + 
DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
-- 
2.1.0

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] intel_sprite_get_colorkey oops

2015-03-26 Thread Tommi Rantala
Hello,

Trinity discovered oopses with the i915 colorkey ioctls, reproducible
on my system with this:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define GET DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_SPRITE_COLORKEY,
struct drm_intel_sprite_colorkey)

int main(int argc, char **argv)
{
int fd = open(argv[1], O_RDWR);
if (fd < 0) {
perror("open");
return 1;
}
for (int i=0; i < 128; ++i) {
printf("get=%d\n", i);
struct drm_intel_sprite_colorkey colorkey = { .plane_id = i };
ioctl(fd, GET, &colorkey);
}
for (int i=0; i < 128; ++i) {
printf("set=%d\n", i);
struct drm_intel_sprite_colorkey colorkey = { .plane_id = i };
ioctl(fd, DRM_IOCTL_I915_SET_SPRITE_COLORKEY, &colorkey);
}
return 0;
}

$ ./main /dev/dri/card0
get=0
get=1
get=2
get=3
get=4
get=5
get=6
get=7
get=8
get=9
get=10
get=11
get=12
get=13
get=14
get=15
get=16
get=17

[   40.467123] BUG: unable to handle kernel NULL pointer dereference
at   (null)
[   40.475012] IP: [<  (null)>]   (null)
[   40.480094] PGD 1728cd067 PUD 17163c067 PMD 0
[   40.484589] Oops: 0010 [#1] SMP KASAN
[   40.488297] CPU: 0 PID: 2198 Comm: main Not tainted 4.0.0-rc5+ #87
[   40.501666] task: 8800c66cd380 ti: 88017279 task.ti:
88017279
[   40.509179] RIP: 0010:[<>]  [<  (null)>]
   (null)
[   40.516702] RSP: 0018:880172797d30  EFLAGS: 00010246
[   40.522037] RAX: ed002e7acbe2 RBX: 88017401d000 RCX: 0007
[   40.529200] RDX:  RSI: 880172797dd8 RDI: 880173d65c00
[   40.536361] RBP: 880172797d68 R08:  R09: 
[   40.543523] R10:  R11:  R12: 
[   40.550686] R13: 880173d65cd8 R14: 880172797dd8 R15: 880173d65c00
[   40.557852] FS:  7f09a72e6700() GS:880175c0()
knlGS:
[   40.565976] CS:  0010 DS:  ES:  CR0: 80050033
[   40.571744] CR2:  CR3: 00017261c000 CR4: 000406f0
[   40.578907] Stack:
[   40.580926]  81b4a437 880172797d68 88017401d000
88017147
[   40.588394]  0014 fff2 8271c400
880172797e88
[   40.595864]  818acbbc 880172797e18 8165d7c2
8165d660
[   40.603335] Call Trace:
[   40.605797]  [] ? intel_sprite_get_colorkey+0x97/0xc0
[   40.612438]  [] drm_ioctl+0x27c/0x890
[   40.617687]  [] ? avc_has_perm+0x182/0x320
[   40.623371]  [] ? avc_has_perm+0x20/0x320
[   40.628966]  [] ? intel_sprite_set_colorkey+0x260/0x260
[   40.635785]  [] ? inode_has_perm.isra.28+0x7c/0xa0
[   40.642169]  [] ? _raw_spin_unlock_irq+0x2b/0x40
[   40.648376]  [] do_vfs_ioctl+0x3cf/0x720
[   40.653887]  [] ? selinux_file_ioctl+0x6a/0x130
[   40.660008]  [] SyS_ioctl+0x81/0xa0
[   40.665083]  [] system_call_fastpath+0x12/0x17
[   40.671112] Code:  Bad RIP value.
[   40.674465] RIP  [<  (null)>]   (null)
[   40.679634]  RSP 
[   40.683134] CR2: 
[   40.686498] ---[ end trace 9292d9b4aba8dfe9 ]---
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915: Rip out GET_SPRITE_COLORKEY ioctl

2015-03-27 Thread Tommi Rantala
2015-03-27 18:42 GMT+02:00 Jani Nikula :
> On Fri, 27 Mar 2015, Daniel Vetter  wrote:
>> On Fri, Mar 27, 2015 at 09:10:02AM +0100, Daniel Vetter wrote:
>>> It's completely unused and Tommi noticed that the #define is borked
>>> since forever. I've done a git search in userspace and only found
>>> broken definitions and no users anywhere.
>>>
>>> Cc: Tommi Rantala 
>>> Signed-off-by: Daniel Vetter 
>>
>> Hm Tommi discovered oopses in there, so I guess this should be
>> cherry-picked to -fixes+cc: stable too? Jani?
>
> My OCD really wants to know why this blows up. The get/set functions
> look so similar that it feels like the set should fail just the same...
> Tommi, did you try just the set part of your test program [1]?

Yes, both the set and get ioctls crash:

[   20.868660] BUG: unable to handle kernel NULL pointer dereference
at   (null)
[   20.876527] IP: [<  (null)>]   (null)
[   20.881573] PGD c4f7d067 PUD c2a6b067 PMD 0
[   20.885866] Oops: 0010 [#1] SMP KASAN
[   20.889549] CPU: 1 PID: 2207 Comm: main Not tainted 4.0.0-rc5+ #89
[   20.902805] task: 8800c4fad380 ti: 8800c2b98000 task.ti:
8800c2b98000
[   20.910257] RIP: 0010:[<>]  [<  (null)>]
   (null)
[   20.917722] RSP: 0018:8800c2b9fd30  EFLAGS: 00010246
[   20.923012] RAX: ed002e87c961 RBX: 88017463d000 RCX: 0006
[   20.930116] RDX: dc00 RSI: 8800c2b9fdd8 RDI: 8801743e4800
[   20.937214] RBP: 8800c2b9fd68 R08:  R09: 
[   20.944318] R10:  R11:  R12: 8800c2b9fdd8
[   20.951416] R13: 8801743e48d8 R14: fffe R15: 8801743e4800
[   20.958524] FS:  7f7139b3a700() GS:880175e0()
knlGS:
[   20.966575] CS:  0010 DS:  ES:  CR0: 80050033
[   20.972300] CR2:  CR3: c2a67000 CR4: 000406e0
[   20.979407] Stack:
[   20.981414]  81b4a11d 8800c2b9fd68 88017463d000
8800c4c50c00
[   20.988838]  0014 fff2 8271c3e0
8800c2b9fe88
[   20.996238]  818acbbc 8800c2b9fe18 8165d7c2
8165d660
[   21.003658] Call Trace:
[   21.006110]  [] ? intel_sprite_set_colorkey+0xad/0xf0
[   21.012695]  [] drm_ioctl+0x27c/0x890
[   21.017904]  [] ? avc_has_perm+0x182/0x320
[   21.023544]  [] ? avc_has_perm+0x20/0x320
[   21.029098]  [] ? intel_pre_disable_primary+0x90/0x90
[   21.035690]  [] ? inode_has_perm.isra.28+0x7c/0xa0
[   21.042023]  [] do_vfs_ioctl+0x3cf/0x720
[   21.047488]  [] ? selinux_file_ioctl+0x6a/0x130
[   21.053558]  [] SyS_ioctl+0x81/0xa0
[   21.058595]  [] system_call_fastpath+0x12/0x17
[   21.064580] Code:  Bad RIP value.
[   21.067916] RIP  [<  (null)>]   (null)
[   21.073048]  RSP 
[   21.076524] CR2: 
[   21.079863] ---[ end trace 161ba639126f6a45 ]---


[  274.286068] BUG: unable to handle kernel NULL pointer dereference
at   (null)
[  274.295149] IP: [<  (null)>]   (null)
[  274.300242] PGD 171999067 PUD 171b93067 PMD 0
[  274.304744] Oops: 0010 [#1] SMP KASAN
[  274.308460] CPU: 0 PID: 2202 Comm: main Not tainted 4.0.0-rc5+ #89
[  274.321856] task: 8801726914e0 ti: 880172928000 task.ti:
880172928000
[  274.329383] RIP: 0010:[<>]  [<  (null)>]
   (null)
[  274.336924] RSP: 0018:88017292fd30  EFLAGS: 00010246
[  274.342267] RAX: ed002e7bc362 RBX: 88017442f000 RCX: 0007
[  274.349446] RDX:  RSI: 88017292fdd8 RDI: 880173de1800
[  274.356624] RBP: 88017292fd68 R08:  R09: 
[  274.363803] R10:  R11:  R12: 
[  274.370979] R13: 880173de18d8 R14: 88017292fdd8 R15: 880173de1800
[  274.378157] FS:  7f48d6b16700() GS:880175c0()
knlGS:
[  274.386297] CS:  0010 DS:  ES:  CR0: 80050033
[  274.392078] CR2:  CR3: 00017188d000 CR4: 000406f0
[  274.399257] Stack:
[  274.401280]  81b4a1f7 88017292fd68 88017442f000
880172cc7c00
[  274.408761]  0014 fff2 8271c3c0
88017292fe88
[  274.416244]  818acbbc 88017292fe18 8165d7c2
8165d660
[  274.423727] Call Trace:
[  274.426192]  [] ? intel_sprite_get_colorkey+0x97/0xc0
[  274.432849]  [] drm_ioctl+0x27c/0x890
[  274.438107]  [] ? avc_has_perm+0x182/0x320
[  274.443800]  [] ? avc_has_perm+0x20/0x320
[  274.449407]  [] ? intel_sprite_set_colorkey+0xf0/0xf0
[  274.456065]  [] ? inode_has_perm.isra.28+0x7c/0xa0
[  274.462462]  [] do_vfs_ioctl+0x3cf/0x720
[  274.467984]  [] ? selinux_file_ioctl+0x6a/0x130
[  274.474115]  [] SyS_ioctl+0x81/0xa

Re: [Intel-gfx] [PATCH] drm/i915: Reject the colorkey ioctls for primary and cursor planes

2015-03-29 Thread Tommi Rantala
2015-03-27 19:59 GMT+02:00  :
> From: Ville Syrjälä 
>
> The legcy colorkey ioctls are only implemented for sprite planes, so
> reject the ioctl for primary/cursor planes. If we want to support
> colorkeying with these planes (assuming we have hw support of course)
> we should just move ahead with the colorkey property conversion.
>
> Cc: Tommi Rantala 
> Signed-off-by: Ville Syrjälä 

Thanks, this fixes the oopses I was seeing.

Tommi
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx