ladybird/Kernel
Andreas Kling b0321bf290 Kernel: Zero-fill faults should not temporarily enable interrupts
We were doing a temporary STI/CLI in MemoryManager::zero_page() to be
able to acquire the VMObject's lock before zeroing out a page.

This logic was inherited from the inode fault handler, where we need
to enable interrupts anyway, since we might need to interact with the
underlying storage device.

Zero-fill faults don't actually need to lock the VMObject, since they
are already guaranteed exclusivity by interrupts being disabled when
entering the fault handler.

This is different from inode faults, where a second thread can often
get an inode fault for the same exact page in the same VMObject before
the first fault handler has received a response from the disk.
This is why the lock exists in the first place, to prevent this race.

This fixes an intermittent crash in sys$execve() that was made much
more visible after I made userspace stacks lazily allocated.
2019-11-01 17:59:47 +01:00
..
Arch/i386 Kernel: Move Boot/ into Arch/i386/Boot (#667) 2019-10-20 08:15:39 +02:00
Devices Kernel: Fixed fdc read/write problem 2019-10-23 07:46:16 +02:00
FileSystem AK: Allow JsonValue to store 64-bit integers internally 2019-10-29 16:36:50 +01:00
Heap Kernel: Make SlabAllocator fall back to kmalloc() when slabs run out 2019-10-10 11:58:15 +02:00
Net Net: Put a bunch of socket debug logging behind FOO_DEBUG 2019-10-18 16:50:23 +02:00
TTY TTY: Flush input on signal character. 2019-11-01 16:08:51 +01:00
VM Kernel: Zero-fill faults should not temporarily enable interrupts 2019-11-01 17:59:47 +01:00
.bochsrc Meta: Make Serenity run on Bochs once again 2019-08-06 21:09:24 +02:00
.gitignore Meta: Removed all gitignore in the source tree only keeping the root one 2019-06-30 10:41:26 +02:00
Assertions.h Kernel: Move i386.{cpp,h} => Arch/i386/CPU.{cpp,h} 2019-06-07 20:02:01 +02:00
build-gpt-image-grub.sh PartitionTable: Initial GPT Support, Adding Block Limit 2019-10-07 10:11:39 +02:00
build-image-grub.sh Build: Remove grub from default build process 2019-06-04 07:15:44 -07:00
build-image-qemu.sh Build: Fix incorrect user and group settings for disk image (#280) 2019-07-03 16:57:37 +02:00
build-root-filesystem.sh HackStudio: Start working on an IDE for SerenityOS 2019-10-21 18:46:55 +02:00
CMOS.cpp AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
CMOS.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
Console.cpp AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
Console.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
DoubleBuffer.cpp Revert "Kernel: Make DoubleBuffer use a KBuffer instead of kmalloc()ing" 2019-10-18 15:58:06 +02:00
DoubleBuffer.h Revert "Kernel: Make DoubleBuffer use a KBuffer instead of kmalloc()ing" 2019-10-18 15:58:06 +02:00
FB.h Kernel: Add framebuffer ioctls; wrap raw ioctls with a C API 2019-08-18 07:40:02 +02:00
grub.cfg Kernel: Add serial_debug cmdline parameter 2019-08-11 08:22:42 +02:00
grub_gpt.cfg PartitionTable: Initial GPT Support, Adding Block Limit 2019-10-07 10:11:39 +02:00
init.cpp Kernel: Add bare minimum for global constructors (#707) 2019-10-31 19:01:13 +01:00
install.sh Build: Install most headers to Root (and libcore.a/libgui.a) 2019-05-17 21:59:48 +02:00
IO.h Kernel: First cut of a sb16 driver 2019-07-13 08:00:24 +02:00
IRQHandler.cpp Kernel: Move PIC.cpp into Arch/i386/ 2019-07-09 15:04:43 +02:00
IRQHandler.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
KBuffer.h Kernel: Make Region single-owner instead of ref-counted 2019-09-27 14:25:42 +02:00
KBufferBuilder.cpp Kernel: Add KBufferBuilder, similar to StringBuilder but for KBuffer 2019-08-06 20:04:12 +02:00
KBufferBuilder.h AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
KeyCode.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
KParams.cpp AK: Make HashMap::get(Key) return an Optional<Value>. 2019-07-24 10:25:43 +02:00
KParams.h AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
kprintf.cpp Kernel: Write logs into dmesg from the start of the boot process 2019-09-09 08:14:00 +02:00
KResult.h Kernel: Align the KResult value storage appropriately. 2019-08-02 19:22:48 +02:00
kstdio.h Kernel: Add serial_debug cmdline parameter 2019-08-11 08:22:42 +02:00
KSyms.cpp ByteBuffer: Remove pointer() in favor of data() 2019-09-30 08:57:01 +02:00
KSyms.h AK: Rename <AK/AKString.h> to <AK/String.h> 2019-09-06 15:36:54 +02:00
linker.ld Kernel: Add bare minimum for global constructors (#707) 2019-10-31 19:01:13 +01:00
Lock.cpp AK: Add Atomic.h 2019-10-12 19:30:59 +02:00
Lock.h AK: Add Atomic.h 2019-10-12 19:30:59 +02:00
makeall.sh HackStudio: Start working on an IDE for SerenityOS 2019-10-21 18:46:55 +02:00
Makefile Kernel: Move Boot/ into Arch/i386/Boot (#667) 2019-10-20 08:15:39 +02:00
mkmap.sh Kernel: Don't symbolicate symbol+offset for obvious non-kernel addresses. 2019-04-30 14:47:22 +02:00
MousePacket.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
Multiboot.h AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
PCI.cpp Kernel: Hide PCI logs behind a debug flag like other logs 2019-08-14 06:28:53 +02:00
PCI.h Kernel: Add more PCI configuration reading functions 2019-08-14 06:28:53 +02:00
Process.cpp Kernel: Support passing arguments in shebangged scripts 2019-10-28 09:22:00 +01:00
Process.h Kernel: Support passing arguments in shebangged scripts 2019-10-28 09:22:00 +01:00
ProcessTracer.cpp AK: Rename the common integer typedefs to make it obvious what they are. 2019-07-03 21:20:13 +02:00
ProcessTracer.h Kernel: Move File.{cpp,h} into FileSystem/ 2019-07-09 15:04:45 +02:00
RTC.cpp Kernel: Fix BIOS date/time on hardware 2019-09-28 13:59:49 +02:00
RTC.h Add clang-format file 2019-05-28 17:31:20 +02:00
run Kernel: Enabling Text mode debugging (#696) 2019-10-29 16:41:40 +01:00
Scheduler.cpp Kernel: Add exception_code to RegisterDump. 2019-10-07 16:39:47 +02:00
Scheduler.h Kernel: Stop idling after handling an IRQ 2019-09-14 20:21:10 +02:00
SharedBuffer.cpp Kernel: Rename "vmo" to "vmobject" everywhere 2019-09-04 11:27:14 +02:00
SharedBuffer.h Kernel: Rename "vmo" to "vmobject" everywhere 2019-09-04 11:27:14 +02:00
StdLib.cpp AK: Add String::contains(String) 2019-10-28 19:08:48 +01:00
StdLib.h Kernel: Add strncmp() 2019-08-11 16:30:43 +02:00
sync.sh Build: Remove grub from default build process 2019-06-04 07:15:44 -07:00
Syscall.cpp Kernel: Add a Linux-style getrandom syscall 2019-10-13 18:03:21 +02:00
Syscall.h Kernel: Add a Linux-style getrandom syscall 2019-10-13 18:03:21 +02:00
Thread.cpp Kernel: Allow userspace stacks to grow up to 4 MB by default 2019-10-31 13:57:07 +01:00
Thread.h Kernel: Allow userspace stacks to grow up to 4 MB by default 2019-10-31 13:57:07 +01:00
UnixTypes.h Kernel: Add SIOCGIFHWADDR ioctl to get the MAC address of an adapter 2019-10-02 18:20:11 +02:00