Files
RedBear-OS/local/patches/base/P0-i2c-control-response-empty.patch
T
vasilito ff5a132a9d fix: comprehensive boot hardening — crashes, warnings, sensors, bare-metal PS/2
- firmware-loader: handle missing INIT_NOTIFY gracefully (Option<RawFd>)
- driver-params: suppress ENODEV (19) on missing driver-manager scheme
- compositor: add wl_seat.name + pointer capabilities for Qt6 compat
- greeter: use redox QPA (libqredox.so) instead of broken Qt6 Wayland
- greeter: reduce DRM wait 10s→2s, kded6 offscreen QPA to avoid crash
- thermald: add CPU die temperature via MSR IA32_THERM_STATUS (Linux coretemp)
- pcid: diagnostic MCFG warning with Q35 guidance, address validation
- dhcpd: auto-interface detection (P0-dhcpd-auto-iface.patch wired)
- procmgr: SIGCHLD EPERM→debug (kernel limitation, not a bug)
- ps2d LED: warn→debug on modern hw without real PS/2 controller
- ps2d mouse: 10×1s→3×250ms retry, fast-fail on unknown response
- i2c RON: handle empty response from i2cd when no adapters present
- base recipe: wire 6 new/improved patches
- config: remove INIT_SKIP, enable all 14 previously-suppressed daemons
2026-05-06 11:16:18 +01:00

31 lines
1.2 KiB
Diff

--- a/drivers/usb/ucsid/src/main.rs
+++ b/drivers/usb/ucsid/src/main.rs
@@ -785,7 +785,11 @@
.context("failed to read I2C control response")?;
buffer.truncate(count);
let text = std::str::from_utf8(&buffer).context("I2C control response was not UTF-8")?;
- ron::from_str(text).context("failed to decode I2C control response")
+ let trimmed = text.trim();
+ if trimmed.is_empty() {
+ return Ok(I2cControlResponse::AdapterList(Vec::new()));
+ }
+ ron::from_str(trimmed).context("failed to decode I2C control response")
}
fn read_symbol_id(path: &Path) -> Result<Option<String>> {
--- a/drivers/gpio/i2c-gpio-expanderd/src/main.rs
+++ b/drivers/gpio/i2c-gpio-expanderd/src/main.rs
@@ -429,7 +429,11 @@
.context("failed to read I2C control response")?;
buffer.truncate(count);
let text = std::str::from_utf8(&buffer).context("I2C control response was not UTF-8")?;
- ron::from_str(text).context("failed to decode I2C control response")
+ let trimmed = text.trim();
+ if trimmed.is_empty() {
+ return Ok(I2cControlResponse::AdapterList(Vec::new()));
+ }
+ ron::from_str(trimmed).context("failed to decode I2C control response")
}
fn eisa_id_from_integer(integer: u64) -> String {