luo-util: use new LIVEUPDATE_SESSION_GET_NAME ioctl to get session name if available

Added in kernel 7.2. Fallback can be removed once baseline
moves above. Ubuntu 26.04 uses 7.0.
This commit is contained in:
Luca Boccassi
2026-06-30 09:15:58 +01:00
parent ef5ef5544a
commit 8032290a98
+28
View File
@@ -377,6 +377,26 @@ int luo_preserve_fd_stores(sd_json_variant *serialization, int *ret_session_fd)
return 1;
}
static int luo_session_get_name(int session_fd, char **ret) {
struct liveupdate_session_get_name args = {
.size = sizeof(args),
};
assert(session_fd >= 0);
if (ioctl(session_fd, LIVEUPDATE_SESSION_GET_NAME, &args) < 0)
return -errno;
/* Paranonia check */
if (!memchr(args.name, 0, sizeof(args.name)))
return -EBADMSG;
if (ret)
return strdup_to(ret, (const char*) args.name);
return 0;
}
int fd_get_luo_session_name(int fd, char **ret) {
_cleanup_free_ char *path = NULL;
int r;
@@ -390,6 +410,14 @@ int fd_get_luo_session_name(int fd, char **ret) {
if (r == 0)
return -EMEDIUMTYPE;
/* IOCTL is new in 7.2, fallback to parsing procfs */
// FIXME: drop fallback once baseline moves to 7.2+
r = luo_session_get_name(fd, ret);
if (r >= 0)
return 0;
if (!ERRNO_IS_NEG_IOCTL_NOT_SUPPORTED(r))
return r;
r = fd_get_path(fd, &path);
if (r < 0)
return r;