From 83358030458709bb24347090f4aceb1b23a2f0da Mon Sep 17 00:00:00 2001 From: Hendiadyoin1 Date: Thu, 31 Aug 2023 16:49:31 +0200 Subject: [PATCH] Kernel/USB: Explicitely copy descriptor.hub_characteristics for printing This field is in a packed struct, which makes it possibly misaligned. This knowledge is lost when invoking `dbgln` triggering an unaligned access to it, aka UB. By explicitely copying it we avoid this issue. --- Kernel/Bus/USB/USBHub.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Bus/USB/USBHub.cpp b/Kernel/Bus/USB/USBHub.cpp index 44540af3e0..e50b1a0f28 100644 --- a/Kernel/Bus/USB/USBHub.cpp +++ b/Kernel/Bus/USB/USBHub.cpp @@ -72,7 +72,7 @@ ErrorOr Hub::enumerate_and_power_on_hub() if constexpr (USB_DEBUG) { dbgln("USB Hub Descriptor for {:04x}:{:04x}", m_vendor_id, m_product_id); dbgln("Number of Downstream Ports: {}", descriptor.number_of_downstream_ports); - dbgln("Hub Characteristics: 0x{:04x}", descriptor.hub_characteristics); + dbgln("Hub Characteristics: 0x{:04x}", static_cast(descriptor.hub_characteristics)); dbgln("Power On to Power Good Time: {} ms ({} * 2ms)", descriptor.power_on_to_power_good_time * 2, descriptor.power_on_to_power_good_time); dbgln("Hub Controller Current: {} mA", descriptor.hub_controller_current); }