subtitle
04
10
如何栈回溯 如何栈回溯
调用约定参考这篇文章https://www.cnblogs.com/rosesmall/p/14849478.html 看一下几类常见的调用约定:(虽然本文探究的问题似乎不是由调用约定的改变而引起的😊) 笔者目前遇到的问题就是,希望通过
2025-04-10 q1ming
09
Linux网络基础 Linux网络基础
前言从复现CVE中的命令行开始: ip link set lo up tc qdisc add dev lo root handle 1: drr tc class add dev lo parent 1: classid 1:10 d
2025-04-09 q1ming
08
CVE-2016-0728 [HALF] CVE-2016-0728 [HALF]
漏洞成因每一个进程都可以使用keyctl(全名为KEYCTL_JOIN_SESSION_KEYRING)来为当前的会话创建相应的keyring,而且还可以为keyring指定名称,如果不需要指定名称的话,传入NULL参数即可。 通过引用相同
2025-04-08 q1ming
07
Linux进程调度入门 Linux进程调度入门
基础知识思维导图 调度类和调度策略摘自:https://zhuanlan.zhihu.com/p/554149581 Stop调度器,stop_sched_class:优先级最高的调度类,可以抢占其他所有的进程,但不能被其他进程抢占。用于
2025-04-07 q1ming
05
timerfd_ctx应用 timerfd_ctx应用
条件竞争创建timerfd#define _GNU_SOURCE#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <un
2025-04-05 q1ming
05
poll学习笔记 poll学习笔记
epoll先参考这个:https://evian-zhang.github.io/introduction-to-linux-x86_64-syscall/src/filesystem/epoll_create-epoll_wait-epo
2025-04-05 q1ming
04
timerfd-条件竞争 timerfd-条件竞争
源码分析https://elixir.bootlin.com/linux/v5.19/source/fs/timerfd.c 重点学习三个syscall(其实是5个,区分64位和32位):timerfd_create、timerfd_set
2025-04-04 q1ming
03
虚拟地址管理[half] 虚拟地址管理[half]
思维导图 相关数据结构vm_area_structvm_area_struct可以描述一个VMA区域的起始地址和大小,区域的属性,由vm_flags表示。 红黑树红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算
2025-04-03 q1ming
03
vmalloc 学习笔记 vmalloc 学习笔记
vmalloc的作用valloc的作用是为了解决线性映射区空间不足的问题: 分配过程源码路径:https://elixir.bootlin.com/linux/v5.19/source/mm/vmalloc.c vmalloc直接调用了_
2025-04-03 q1ming
02
KASAN学习笔记 KASAN学习笔记
KASAN基本原理KernelAddressSANitizer(KASAN)是一个动态检测内存错误的工具。它为找到use-after-free和out-of-bounds问题提供了一个快速和全面的解决方案。 KASAN本质是一个编译插桩的工
2025-04-02 q1ming
02
创建设备文件 创建设备文件
前言 具体步骤和上一篇的区别仅仅体现在代码上。 第一步:头文件增多了: LICENSE保持不变即可: 第二步:声明以及编写文件接口函数 查看一下file_operations在Linux源码中的定义:https://elixir.bo
2025-04-02 q1ming
02
内核模块编写入门 内核模块编写入门
基本步骤步骤一:在源码路径下创建你的模块的文件夹: 步骤二:然后在这个文件夹下编写你的文件: 步骤三:具体内容包括头文件、LICENSE、模块的初始化和退出函数: 对于初始化和结束销毁,笔者的理解是module_init和module
2025-04-02 q1ming
5 / 14