From: Yu Watanabe Date: Mon, 8 Aug 2022 14:25:34 +0000 (+0900) Subject: backlight: filter out unnecessary backlight devices by device enumerator X-Git-Tag: v252-rc1~424^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f8ff4b60763cb3afc619119b2ed280d3b1fa0aba;p=thirdparty%2Fsystemd.git backlight: filter out unnecessary backlight devices by device enumerator --- diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c index 46b1301ff6a..b01b94b2b6c 100644 --- a/src/backlight/backlight.c +++ b/src/backlight/backlight.c @@ -188,17 +188,22 @@ static int validate_device(sd_device *device) { if (r < 0) return log_debug_errno(r, "Failed to add subsystem match: %m"); + r = sd_device_enumerator_add_nomatch_sysname(enumerate, sysname); + if (r < 0) + return log_debug_errno(r, "Failed to add sysname unmatch: %m"); + + r = sd_device_enumerator_add_match_sysattr(enumerate, "type", "platform", /* match = */ true); + if (r < 0) + return log_debug_errno(r, "Failed to add sysattr match: %m"); + + r = sd_device_enumerator_add_match_sysattr(enumerate, "type", "firmware", /* match = */ true); + if (r < 0) + return log_debug_errno(r, "Failed to add sysattr match: %m"); + FOREACH_DEVICE(enumerate, other) { const char *other_subsystem; sd_device *other_parent; - if (same_device(device, other) > 0) - continue; - - if (sd_device_get_sysattr_value(other, "type", &v) < 0 || - !STR_IN_SET(v, "platform", "firmware")) - continue; - /* OK, so there's another backlight device, and it's a platform or firmware device. * Let's see if we can verify it belongs to the same device as ours. */ r = find_pci_or_platform_parent(other, &other_parent);