backend/drm: handle errors when fetching DRM name/version

These functions can fail if the FD is not a DRM device or on
memory allocation failure, for instance.
master
Simon Ser 7 months ago
parent 82b4bc3f5f
commit 3aef433f97

@ -171,7 +171,17 @@ struct wlr_backend *wlr_drm_backend_create(struct wlr_session *session,
assert(!parent || wlr_backend_is_drm(parent)); assert(!parent || wlr_backend_is_drm(parent));
char *name = drmGetDeviceNameFromFd2(dev->fd); char *name = drmGetDeviceNameFromFd2(dev->fd);
if (name == NULL) {
wlr_log_errno(WLR_ERROR, "drmGetDeviceNameFromFd2() failed");
return NULL;
}
drmVersion *version = drmGetVersion(dev->fd); drmVersion *version = drmGetVersion(dev->fd);
if (version == NULL) {
wlr_log_errno(WLR_ERROR, "drmGetVersion() failed");
free(name);
return NULL;
}
wlr_log(WLR_INFO, "Initializing DRM backend for %s (%s)", name, version->name); wlr_log(WLR_INFO, "Initializing DRM backend for %s (%s)", name, version->name);
drmFreeVersion(version); drmFreeVersion(version);

Loading…
Cancel
Save