Bug 72732 - Missing NULL check; radeon_drm_winsys.c
Summary: Missing NULL check; radeon_drm_winsys.c
Status: RESOLVED MOVED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/Gallium/r600 (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-15 16:05 UTC by Dave Gilbert
Modified: 2019-09-18 19:12 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Dave Gilbert 2013-12-15 16:05:50 UTC
I can sometime trigger a seg in do_winsys_init at radeon_drm_winsys.c on my HD4350

There seems to be a simple missing NULL check:


214    version = drmGetVersion(ws->fd);
215    if (version->version_major != 2 ||
216        version->version_minor < 3) {

All the other users of drmGetVersion do a NULL check, so I suggest adding:

    if (!version) {
      fprintf(stderr,"%s: drmGetVersion NULL - bad fd (%d)?\n", __FUNCTION__, ws->fd);
      return FALSE;
    }

I believe this to be part of the reason for:
https://bugzilla.redhat.com/show_bug.cgi?id=993463


why drmGetVersion is failing is a different matter (probably a bad fd at that point - but why?) , but at least the NULL check would stop the seg.

Dave
Comment 1 Dave Gilbert 2014-01-01 01:26:19 UTC
OK, I believe the case that's causing it to go down this route is a perms screw up somewhere; I was running this test in a separate X session (just logging as a normal user on the console and running X :2 )

But with a bit of debug I'm seeing:

libGL: OpenDriver: trying /usr/lib64/dri/tls/r600_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/r600_dri.so
libGL error: failed to open drm device: Permission denied
libGL error: failed to load driver: r600

[dg@major ~]$ ls -lZ /dev/dri/card0
crw-rw----+ root video system_u:object_r:dri_device_t:s0 /dev/dri/card0
[dg@major ~]$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

So I'm not quite sure what the perm screw up is, but that's separate - this will seg in glxgears or anything if the drm device won't open.

Dave
Comment 2 Dave Gilbert 2014-01-01 14:43:45 UTC
and now understand the perm problem; I was running 

X :2 


  from vt 2, it was starting X visible on vt 3, when I changed to vt3 it removed the acl on /dev/dri/card0 so that it lost the perms when clients ran (although the server still had it open).

So still say it's missing that NULL check.
Comment 3 GitLab Migration User 2019-09-18 19:12:08 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/476.


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.