intel_sprite_get_colorkey oops
Tommi Rantala
tt.rantala at gmail.com
Thu Mar 26 12:56:25 PDT 2015
Hello,
Trinity discovered oopses with the i915 colorkey ioctls, reproducible
on my system with this:
#include <unistd.h>
#include <inttypes.h>
#include <drm/i915_drm.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdio.h>
#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: ffff8800c66cd380 ti: ffff880172790000 task.ti:
ffff880172790000
[ 40.509179] RIP: 0010:[<0000000000000000>] [< (null)>]
(null)
[ 40.516702] RSP: 0018:ffff880172797d30 EFLAGS: 00010246
[ 40.522037] RAX: ffffed002e7acbe2 RBX: ffff88017401d000 RCX: 0000000000000007
[ 40.529200] RDX: 0000000000000000 RSI: ffff880172797dd8 RDI: ffff880173d65c00
[ 40.536361] RBP: ffff880172797d68 R08: 0000000000000000 R09: 0000000000000000
[ 40.543523] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[ 40.550686] R13: ffff880173d65cd8 R14: ffff880172797dd8 R15: ffff880173d65c00
[ 40.557852] FS: 00007f09a72e6700(0000) GS:ffff880175c00000(0000)
knlGS:0000000000000000
[ 40.565976] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 40.571744] CR2: 0000000000000000 CR3: 000000017261c000 CR4: 00000000000406f0
[ 40.578907] Stack:
[ 40.580926] ffffffff81b4a437 ffff880172797d68 ffff88017401d000
ffff880171470000
[ 40.588394] 0000000000000014 fffffffffffffff2 ffffffff8271c400
ffff880172797e88
[ 40.595864] ffffffff818acbbc ffff880172797e18 ffffffff8165d7c2
ffffffff8165d660
[ 40.603335] Call Trace:
[ 40.605797] [<ffffffff81b4a437>] ? intel_sprite_get_colorkey+0x97/0xc0
[ 40.612438] [<ffffffff818acbbc>] drm_ioctl+0x27c/0x890
[ 40.617687] [<ffffffff8165d7c2>] ? avc_has_perm+0x182/0x320
[ 40.623371] [<ffffffff8165d660>] ? avc_has_perm+0x20/0x320
[ 40.628966] [<ffffffff81b4a3a0>] ? intel_sprite_set_colorkey+0x260/0x260
[ 40.635785] [<ffffffff8165ffac>] ? inode_has_perm.isra.28+0x7c/0xa0
[ 40.642169] [<ffffffff825dfe5b>] ? _raw_spin_unlock_irq+0x2b/0x40
[ 40.648376] [<ffffffff812f8caf>] do_vfs_ioctl+0x3cf/0x720
[ 40.653887] [<ffffffff81660caa>] ? selinux_file_ioctl+0x6a/0x130
[ 40.660008] [<ffffffff812f9081>] SyS_ioctl+0x81/0xa0
[ 40.665083] [<ffffffff825e0ab2>] system_call_fastpath+0x12/0x17
[ 40.671112] Code: Bad RIP value.
[ 40.674465] RIP [< (null)>] (null)
[ 40.679634] RSP <ffff880172797d30>
[ 40.683134] CR2: 0000000000000000
[ 40.686498] ---[ end trace 9292d9b4aba8dfe9 ]---
More information about the dri-devel
mailing list