I have a process PID that access a memory region that it's not allowed to, the CPU creates a trap into the kernel which calls do_page_fault() which will send SIGSEGV to the user process. The user process has a custom signal handler that has some logic and the faulting instruction is resumed. What I want to do is to move this signal handler logic to kernel space and prevent SIGSEGV from being sent. For that could I write a kernel module that hijacks the fault handler for this PID or something? or do I have to add my logic to do_page_fault()? Some guidance would be helpful.
Related Questions in LINUX-KERNEL
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Facing fatal errors while running "yum update" command on CentOS 7/Cloudlinux 7
- crash utility itself crashes while decoding kdump generated from null pointer dereference in kernel module
- How to compile the Linux kernel with -O0 for more detailed debug?
- Linux support for parallel Pixel data Image sensor
- Can't upgrade to newest version of linux-image-6.5.0-26-generic
- How to protect a page so that it cannot be write in mips arch?
- How to extract the .img file into normal kernel source file in the linux?
- Storage size of struct hash_desc desc; isn't known
- How can I intercept failed file openning calls?
- struct nameidata-Linux Kernel Module
- How to modify a 'struct msghdr' in Linux Kernel Module?
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- Hyper Threading: nosmt in grub configuration
Related Questions in SEGMENTATION-FAULT
- scanf in x64 NASM results in segfault
- My code keeps failing with a segmentation fault but I don't allocate any memory
- Segmentation fault while trying to draw an array in raylib
- change the value of double pointer with indirection(dereference) operator cause segmentation fault
- segmentation fault while reading in text file ( c++ )
- Why do I get a segmentation fault for assigning a unique pointer to a nullptr?
- How to throw an error when a program acesses a block of memory created by you that has been deallocated by a call of free?
- Segfault when re-implementing tolower() in C
- Bug in Clang code generation for member initializers in objects on x86-64 when page alignment off?
- Closing a file after a segmentation fault occurs in C
- Segfault GTK4 on windows 10
- When I assigned a static global pointer, segmentation fault occurred
- thread crashes with SIGSEGV or SIGABRT
- How to properly call an object method in ruby C api?
- Unexpected segmentation fault encountered in pytorch DataLoader
Related Questions in KERNEL-MODULE
- crash utility itself crashes while decoding kdump generated from null pointer dereference in kernel module
- How to modify a 'struct msghdr' in Linux Kernel Module?
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- Something's wrong with the makefile indentation? (Makefile:x: *** missing separator. Stop.)
- How to setup configfs for a custom Linux kernel module
- How to reduce reserved memory allocated by Linux kernel during boot time
- How do I use RDMA in the kernel so that I can communicate with user-space RDMA?
- How to get full mountpoint path name by the sturct fc_context
- Do kernel and kernel modules have their own task_struct?
- How external kernel module look for exported symbol during modpost
- kernel log trace file entries issue
- memcpy() - unable to handle kernel NULL pointer dereference
- Making a few charecter device in linux
- insmod fails - module does not seem to match running kernel but I cannot figure out why
- Can't get vermagic to match on Linux NVMe driver
Related Questions in PAGE-FAULT
- How do I solve a page-fault problem involving LRU, FIFO and Optimal page replacement algorithms?
- what's the exact performance cost of context switch within the same thread? (memory access -> page fault -> memory access again)
- Linux: Difference between page fault latencies for sequential vs random access
- The kernel linux's lookup_address function in x86 returns NULL when debugging a specific case of Page Fault
- do_page_fault issue after system boot up for a while
- Detecting Page Faults on Android via ADB
- Getting "GPU page fault" by initializing data in a kernel
- Why using rg(ripgrep) with mmap triggers more minor page faults?
- How do I force a page to generate a pagefault on next access?
- In aarch64 two stage page table translation, how will the exception level change?
- Incorrect address displayed by bpf_printk
- Why does copy_to_user fail after process forked?
- Concurrent mmap page faults failing to use NVMe IO queue on Linux?
- How to check/detect for page faults in application level functions?
- page fault error with SIMD strlen (using SWAR in integer registers, not SSE)
Related Questions in MPROTECT
- Calling mprotect to set the memory on the stack as read-only directly leads to a program SIGSEGV
- `mprotect`ing a custom ELF section leads to segmentation fault
- Can I reallocate memory without change the address in C?
- How to find the data structure of Mips syscall arguments?
- How to mprotect() existing address to enable PROT_WRITE without using mmap()? (is it even possible)?
- Is there any application that extensively uses `mprotect`?
- Using page protection to surface pointer/iterator invalidation bugs
- calling mprotect in kernel module
- Hijacking page fault handler
- run `make qemu` got error: `qemu_mprotect__osdep: mprotect failed: Permission denied`
- How to mprotect the data section?
- Most portable way to use mprotect() on allocated memory
- Why is mprotect a distinct syscall from mmap
- assembly, how to use mprotect?
- How to mprotect an object
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
userfaultfd() could be useful to you. It allows you to handle page faults in usermode.