logind-session-device: use _cleanup_close_

This commit is contained in:
Mike Yuan 2023-12-28 20:43:12 +08:00
parent 3760416ee8
commit 1189815a6b
No known key found for this signature in database
GPG key ID: 417471C0A40F58B3

View file

@ -114,7 +114,8 @@ static int sd_drmdropmaster(int fd) {
}
static int session_device_open(SessionDevice *sd, bool active) {
int fd, r;
_cleanup_close_ int fd = -EBADF;
int r;
assert(sd);
assert(sd->type != DEVICE_TYPE_UNKNOWN);
@ -132,10 +133,8 @@ static int session_device_open(SessionDevice *sd, bool active) {
/* Weird legacy DRM semantics might return an error even though we're master. No way to detect
* that so fail at all times and let caller retry in inactive state. */
r = sd_drmsetmaster(fd);
if (r < 0) {
(void) close_nointr(fd);
if (r < 0)
return r;
}
} else
/* DRM-Master is granted to the first user who opens a device automatically (ughh,
* racy!). Hence, we just drop DRM-Master in case we were the first. */
@ -153,7 +152,7 @@ static int session_device_open(SessionDevice *sd, bool active) {
break;
}
return fd;
return TAKE_FD(fd);
}
static int session_device_start(SessionDevice *sd) {