loader: Warn when we fail to open a device node due to permissions.
authorEric Anholt <eric@anholt.net>
Wed, 5 Feb 2020 01:31:28 +0000 (17:31 -0800)
committerMarge Bot <eric+marge@anholt.net>
Wed, 1 Apr 2020 09:32:25 +0000 (09:32 +0000)
This is definitely not the first time I've debugged why I'm getting swrast
on a device only to find out I'm not a member of the render node's group.

This does mean that you'll get a warning print even without EGL_LOG_LEVEL
set.  This may be an issue if we expect people outside of the DRI node's
group to actually be using swrast instead of getting their permissions
fixed.  Right now surfaceless throws a "libEGL warning: No hardware driver
found, falling back to software rendering" in that case anyway, so this is
just more informative.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3703>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3703>

src/loader/loader.c

index c896fdc336079383a54e7d61cb9eb67d92e96718..a6ad2ee075bb6d1a51b073e9e252780934009baf 100644 (file)
@@ -91,6 +91,10 @@ loader_open_device(const char *device_name)
       if (fd != -1)
          fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
    }
       if (fd != -1)
          fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
    }
+   if (fd == -1 && errno == EACCES) {
+      log_(_LOADER_WARNING, "failed to open %s: %s\n",
+           device_name, strerror(errno));
+   }
    return fd;
 }
 
    return fd;
 }