Bug 97993 - amdgpu_query_gpu_info () segfaults when user does not have permission to open /dev/dri/card*
Summary: amdgpu_query_gpu_info () segfaults when user does not have permission to open...
Status: RESOLVED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/AMDgpu-pro (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium critical
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-09-30 15:50 UTC by Vedran Miletić
Modified: 2017-12-20 18:09 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
possible fix (886 bytes, patch)
2016-10-28 21:00 UTC, Alex Deucher
no flags Details | Splinter Review

Description Vedran Miletić 2016-09-30 15:50:50 UTC
$ gdb clinfo
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from clinfo...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/clinfo 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff061bd22 in amdgpu_query_gpu_info () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libdrm_amdgpu.so.1
(gdb) backtrace
#0  0x00007ffff061bd22 in amdgpu_query_gpu_info () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libdrm_amdgpu.so.1
#1  0x00007ffff39d7fae in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#2  0x00007ffff39d861b in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#3  0x00007ffff39daceb in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#4  0x00007ffff39ca848 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#5  0x00007ffff36bcf0b in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#6  0x00007ffff363e2d9 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#7  0x00007ffff363e337 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#8  0x00007ffff363f0c9 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#9  0x00007ffff3605d48 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#10 0x00007ffff36071e7 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#11 0x00007ffff3607376 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#12 0x00007ffff35c5300 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#13 0x00007ffff35e0947 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#14 0x00007ffff35aea03 in clIcdGetPlatformIDsKHR () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libamdocl64.so
#15 0x00007ffff74bd76e in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libOpenCL.so.1
#16 0x00007ffff74bf647 in ?? () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libOpenCL.so.1
#17 0x00007ffff7096ad9 in __pthread_once_slow (once_control=0x7ffff76c13d8, init_routine=0x7ffff74bf4a0) at pthread_once.c:116
#18 0x00007ffff74bdd31 in clGetPlatformIDs () from /usr/lib/x86_64-linux-gnu/amdgpu-pro/libOpenCL.so.1
#19 0x000000000040f4c7 in ?? ()
#20 0x0000000000407bb2 in ?? ()
#21 0x00007ffff6cdf830 in __libc_start_main (main=0x407b00, argc=1, argv=0x7fffffffe4a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe498) at ../csu/libc-start.c:291
#22 0x000000000040e5f1 in ?? ()

It should fail without segfault.
Comment 1 Vedran Miletić 2016-10-28 17:16:37 UTC
Still occurs with 16.40.

Simple test:

$ ls -la /dev/dri/* # verify that other does not have rwx
$ sudo chgrp root /dev/dri/* # or any group which the user is not a member of
$ clinfo
Comment 2 Alex Deucher 2016-10-28 21:00:04 UTC
Created attachment 127593 [details] [review]
possible fix

The patch should fix the acute problem, but may not fix the actual root cause which is likely in the OCL driver.
Comment 3 Vedran Miletić 2016-11-02 15:29:04 UTC
(In reply to Alex Deucher from comment #2)
> Created attachment 127593 [details] [review] [review]
> possible fix
> 
> The patch should fix the acute problem, but may not fix the actual root
> cause which is likely in the OCL driver.

Thanks. I don't have time to test it now, but it looks good.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.