2024-12-19
[Android稳定性] 第009篇 [问题篇] 数组越界导致的内核panic
**问题现象**: 部分机器插着 USB 后出现死机。 **问题分析**: 通过 `dmesg` 和 `trace32` 分析,发现死机原因是 `power_operation_mode_show` 函数中 `typec_port` 结构体的 `pwr_opmode` 成员值错误(为负数),导致数组越界。 **解决方案**: 更新 charger 模块,修复对 `pwr_opmode` 的误判,确保其值为正数,避免数组越界。 **总结**: 本次问题是由 `typec_port` 结构体的 `pwr_opmode` 成员值错误导致,通过分析定位问题,并更新 charger 模块修复了问题。
2024-12-19
[Android稳定性] 第008篇 [原理篇] 动态设置kernel cmdline
本文介绍了一种在fastboot模式下动态修改内核参数的方法,无需重新打包。首先,通过扩展fastboot oem指令,接收输入的内核参数并写入到devinfo分区中。然后,在更新kernel cmdline时,将保存的内核参数添加到cmdline中。实验测试显示,该方案可以成功修改内核参数,并永久生效。代码更新后,支持设置、追加和清除模式,方便用户根据需求进行操作。