Exploiting Recursion in the Linux Kernel
On Linux, userland processes typically have a stack that is around 8 MB long. If a program overflows the stack, e.g. using infinite recursion, this is normally caught by a guard page below the stack.
Linux kernel stacks, which are e.g. used when handling system calls, are very different. They are relatively short: 4096 bytes on 32-bit x86, 16384 bytes on x86-64. (The kernel stack size is specified by THREAD_SIZE_ORDER and THREAD_SIZE.) They are allocated using the kernel's buddy allocator, which is the kernel's normal allocator for page-sized allocations (and power-of-two numbers of pages) and doesn't create guard pages. This means that if kernel stacks overflow, they overlap with normal data. For this reason, kernel code must be (and usually is) very careful to not make big allocations on the stack and has to prevent excessive recursion.
- Login or register to post comments
- Printer-friendly version
- 1297 reads
- PDF version
More in Tux Machines
- Highlights
- Front Page
- Latest Headlines
- Archive
- Recent comments
- All-Time Popular Stories
- Hot Topics
- New Members
digiKam 7.7.0 is releasedAfter three months of active maintenance and another bug triage, the digiKam team is proud to present version 7.7.0 of its open source digital photo manager. See below the list of most important features coming with this release. |
Dilution and Misuse of the "Linux" Brand
|
Samsung, Red Hat to Work on Linux Drivers for Future TechThe metaverse is expected to uproot system design as we know it, and Samsung is one of many hardware vendors re-imagining data center infrastructure in preparation for a parallel 3D world. Samsung is working on new memory technologies that provide faster bandwidth inside hardware for data to travel between CPUs, storage and other computing resources. The company also announced it was partnering with Red Hat to ensure these technologies have Linux compatibility. |
today's howtos
|
Recent comments
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago