linux内核内存检测方法实践手记

本文介绍了Linux内核中的slub_debug工具,用于检测内存问题,包括越界访问、重复释放和使用已释放内存的情况,详细阐述了slub_debug的功能及其在内存管理中的作用。
摘要由CSDN通过智能技术生成

前言


一、slub_debug是什么?

说明:在linux内核中,小块内存分配使用slab/slub分配器,slab/slub分配器提供内存检测功能。主要检测如下功能:
访问已经释放的内存
越界访问
释放已经释放过的内存

二、检测越界访问 out-of-bounds

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>

static char*buf;
static void create_slub_error(void)
{
   
    buf = kmalloc(128,GFP_KERNEL);
	if(buf){
   
    	memset(buf,0x55,200); // 
	}
}
static int __init my_test_init(void)
{
   
	printk("figo:my module init\n");
	create_slub_error();
    return 0;
}
static void __exit my_test_exit(void)
{
   
	printk("goodbyte\n");
    kfree(buf);
}
module_init(my_test_init);
module_exit(my_test_exit);
MODULE_LICENSE("GPL");

## 
aarch64-linux-gnu-gcc  slabinfo.c  slabinfo
echo 1 > /sys/kernel/slab/kmalloc-128/validate
insmod  slub.ko
/slabinfo -v
/mnt # ./slabinfo  -v
=============================================================================
BUG kmalloc-128 (Tainted: P           O     ): Redzone overwritten
--------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天少内耗10点半睡觉和今天早晚运动

老铁的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值