# btrfs:在btrfs_convert_extent_bit()中插入状态失败后退出
## 概述
在Linux内核中,`btrfs_convert_extent_bit()`函数中存在一个漏洞。当`insert_state()`失败时,代码会调用`extent_io_tree_panic()`触发`BUG()`,但当`CONFIG_BUG`禁用时,代码会继续执行并导致错误指针被解引用,进而引发内存越界访问。
## 影响版本
未提供具体影响的版本信息。
## 细节
当`insert_state()`函数失败返回错误指针时,代码会执行`extent_io_tree_panic()`,这会触发`BUG()`。但是,如果配置`CONFIG_BUG`被禁用(这是一个不常见的场景),代码将继续执行,调用`cache_state()`并解引用错误指针,导致非法内存访问。
## 影响
在`CONFIG_BUG`配置禁用的情况下,会导致内存越界访问。修复方案是在调用`extent_io_tree_panic()`后跳转到`out`标签,并使代码更加清晰。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: btrfs: exit after state insertion failure at btrfs_convert_extent_bit() - kernel/git/stable/linux.git - Linux kernel stable tree -- 🔗来源链接
标签:
神龙速读