linux 内核 空指针,linux-用户空间和内核空间中的空指针取消引用

如果我们在用户空间和内核空间中取消引用空指针,将会发生什么?

据我了解,行为是基于编译器,体系结构等的.

但通常对于分配了虚拟内存的每个用户空间程序,使用分页表使用分页将虚拟地址转换为物理地址.

因此,如果我们在用户空间中取消引用空指针,则该地址无效,因此上下文切换将发生,并且在内核中基于此空指针取消引用的中断“将出现分段错误或将出现页面错误”.

在内核空间中:

如果我们取消引用NULL指针,则可能导致系统崩溃或内核可能无法从该调用返回.

我的理解正确吗?或者缺少其他信息,请解释.

解决方法:

内核将虚拟地址0的页面映射到所有未设置许可权位的进程中.当您尝试访问该页面时,您会得到一个page fault.处理该页面的内核例程将SIGSEGV signal发送给您的进程.如果您没有注册SIGSEGV的处理程序,则核心为dumped,并且看到“ Segmentation fault”消息.

内核方面,情况有所不同.毕竟,内核应该是健壮的:

>如果取消引用并且可以恢复(例如,您的触控板驱动程序犯了此罪行),则会生成kernel oops.内核继续运行(目前).

>如果发生取消引用从而无法恢复,那么Oops会导致kernel panic.需要重新引导.

>如果由于某种原因在第0页上映射了数据,则将损坏内存.这可能会导致恐慌,甚至没有引起注意,甚至可能是abused for a privilege escalation attack.

标签:kernel,linux,userspace

来源: https://codeday.me/bug/20191119/2033282.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值