summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2014-02-13 16:18:43 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2014-02-13 16:26:49 +0000
commit9a9f6a9487201e4c80338e771eec28067f044240 (patch)
tree0a7f17a8040aae529ae0c76d9ad41f03a29a99dd
parent611490a176d9bfd136f4340f7c31e0e0f0beea4e (diff)
uxa: Check for access to backlight interface
Before attaching properties to any connector, check that we can indeed control the backlight through the sysfs interface by doing an access check. If the xserver is started without root privileges, we cannot write through /sys/class/backlight and so should take care not to advertise that we can. Reported-by: Hans de Geode <hdegeode@redhat.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/uxa/intel_display.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/uxa/intel_display.c b/src/uxa/intel_display.c
index a4e04ec4..e1b29201 100644
--- a/src/uxa/intel_display.c
+++ b/src/uxa/intel_display.c
@@ -298,6 +298,14 @@ intel_output_backlight_get_max(xf86OutputPtr output)
char path[BACKLIGHT_PATH_LEN], val[BACKLIGHT_VALUE_LEN];
int fd, max = 0;
+ /* We are used as an initial check to see if we can
+ * control the backlight, so first test if we can set values.
+ */
+ sprintf(path, "%s/%s/brightness",
+ BACKLIGHT_CLASS, intel_output->backlight_iface);
+ if (access(path, R_OK | W_OK))
+ return -1;
+
sprintf(path, "%s/%s/max_brightness",
BACKLIGHT_CLASS, intel_output->backlight_iface);
fd = open(path, O_RDONLY);