代码拉取完成,页面将自动刷新
影响和风险:具有特权的本地用户可以通过挂载异常镜像访问未初始化的变量触发空指针解引用,使服务器 panic 而拒绝服务
利用条件:用户 bitmap 实际大小与超级块中记录大小不一致的 gfs2 文件系统镜像,在计算 bitmap size 时即可触发该问题。
技术原因:gfs2_rgrp_dump() 在 rgd->rd_rgl 被赋值前就可能会在错误路径中被调用,比如计算 bitmap size 发现不一致时,此时 gfs2_rgrp_dump() 解引用未初始化的 rgd->rd_rgl 就会触发空指针解引用。
判断方法:
CONFIG依赖:CONFIG_GFS2_FS=n 则不涉及
ko依赖: 如果 CONFIG_GFS2_FS 以=m的形式打开的情况下,则可排查 gfs2.ko 否被加载,没有被加载则不涉及。
领域:【存储/文件系统】
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
问题触发流程如下:
do_mount
path_mount
vfs_get_tree
gfs2_get_tree
get_tree_bdev
gfs2_fill_super
init_inodes
gfs2_rindex_update
gfs2_ri_update
read_rindex_entry
compute_bitstructs
// 不一致异常镜像触发 EIO 报错
gfs2_consist_rgrpd_i
gfs2_rgrp_dump
// 这里未判空使用触发空指针解引用
rgl->rl_flags
// 这里赋值
rgd->rd_rgl = (struct gfs2_rgrp_lvb *)rgd->rd_gl->gl_lksb.sb_lvbptr;
重复 issue
登录 后才可以发表评论