serenity/Userland/Applications
Andreas Kling b6d4eea7ac LibJS: Never give back virtual memory once it belongs to a cell type
Instead of returning HeapBlock memory to the kernel (or a non-type
specific shared cache), we now keep a BlockAllocator per CellAllocator
and implement "deallocation" by basically informing the kernel that we
don't need the physical memory right now.

This is done with MADV_FREE or MADV_DONTNEED if available, but for other
platforms (including SerenityOS) we munmap and then re-mmap the memory
to achieve the same effect. It's definitely clunky, so I've added a
FIXME about implementing the madvise options on SerenityOS too.

The important outcome of this change is that GC types that use a
type-specific allocator become immune to use-after-free type confusion
attacks, since their virtual addresses will only ever be re-used for
the same exact type again and again.

Fixes #22274
2023-12-31 15:35:56 +01:00
..
3DFileViewer Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
About About: Display Application's Icon in File Manager 2023-09-02 16:27:08 +01:00
AnalogClock Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Assistant LibJS: Never give back virtual memory once it belongs to a cell type 2023-12-31 15:35:56 +01:00
Browser Ladybird+BrowserSettings: Load the NTP/home resource files with LibWeb 2023-12-24 14:09:23 +01:00
BrowserSettings Ladybird+BrowserSettings: Load the NTP/home resource files with LibWeb 2023-12-24 14:09:23 +01:00
Calculator Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Calendar Calendar: Add a link to the Manual in Help Menu 2023-12-26 18:37:35 +01:00
CalendarSettings Userland: Prefer non-fallible construction for LibGUI objects 2023-09-18 18:00:45 +02:00
CertificateSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CharacterMap Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ClockSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CrashReporter CrashReporter: Port CrashReporter to GML Compiler 2023-12-27 15:29:50 +01:00
Debugger Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
DisplaySettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Escalator Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
FileManager FileManager: Conditionally display the "ICC profile:" line 2023-12-29 07:57:12 +00:00
FontEditor Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
GamesSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Help Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
HexEditor HexEditor: Move drawing cursor under a lambda and reuse it 2023-12-27 09:22:09 +01:00
ImageViewer Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
KeyboardMapper Userland: Actually use the correct character map index from KeyEvent 2023-12-29 16:40:59 +01:00
KeyboardSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Magnifier Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Mail Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
MailSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Maps Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
MapsSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
MouseSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
NetworkSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
PartitionEditor Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
PDFViewer Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
Piano Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
PixelPaint Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
Presenter Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
Run Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Settings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SoundPlayer Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
SpaceAnalyzer Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Spreadsheet LibJS: Never give back virtual memory once it belongs to a cell type 2023-12-31 15:35:56 +01:00
SystemMonitor Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Terminal Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
TerminalSettings Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
TextEditor Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ThemeEditor Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
VideoPlayer Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Welcome Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CMakeLists.txt Maps: Add MapsSettings with multiple tile providers options 2023-09-18 12:46:41 -06:00