[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN 2月前查看 评论
[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN

本文介绍了Kernel Address Sanitizer (KASAN) 的功能、原理和配置方法。KASAN 是一个动态检测内存错误的工具,主要用于检测内存越界访问和使用已释放的内存等问题。它通过使用“额外”的内存来标记内存的状态,并在每次内存访问时检查对应影子内存的值是否有效,从而实现内存错误的检测。KASAN 集成在 Linux 内核中,可以在编译内核时通过添加相应的配置项来启用。

[Android稳定性] 第025篇 [问题篇] KASAN slab-out-of-bounds内存越界问题 4月前查看 评论
[Android稳定性] 第025篇 [问题篇] KASAN slab-out-of-bounds内存越界问题

文章摘要:在kasan版本corgi:4967550中,发现4台设备死机,问题源于usbpd模块的slab-out-of-bounds。分析发现,问题出在usbpd_mi_vdm_received_cb函数中的for循环,导致内存越界。通过汇编代码和源码确认,vdos起始地址为0xffffff808d6c0a58,范围为0x8。解决方案是调整循环次数,使用rx_msg->data_len/sizeof(u32)来控制。此外,问题是由KASAN检测出的slab内存泄漏,可通过内存分布和alloc/free track进一步分析。