diff --git a/kernel/kernel/Input/PS2/Controller.cpp b/kernel/kernel/Input/PS2/Controller.cpp index bf31a73a..10dcf5e4 100644 --- a/kernel/kernel/Input/PS2/Controller.cpp +++ b/kernel/kernel/Input/PS2/Controller.cpp @@ -319,11 +319,18 @@ namespace Kernel::Input if (crs_obj == nullptr) return PS2ResourceSetting {}; + const auto crs = TRY(ACPI::AML::evaluate_node(crs_path, crs_obj->node)); + if (crs.type != ACPI::AML::Node::Type::Buffer) + { + dwarnln("PS/2 _CRS is not a buffer, but {}", crs); + return BAN::Error::from_errno(EINVAL); + } + PS2ResourceSetting result; result.type = type; BAN::Optional data; - ACPI::ResourceParser parser({ crs_obj->node.as.str_buf->bytes, static_cast(crs_obj->node.as.str_buf->size) }); + ACPI::ResourceParser parser({ crs.as.str_buf->bytes, static_cast(crs.as.str_buf->size) }); while ((data = parser.get_next()).has_value()) { switch (data->type)