1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 09:14:58 +00:00
serenity/Userland/Libraries
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
..
LibAccelGfx LibWeb: Implement border radius corner clipping in GPU painter 2023-12-17 23:12:48 +01:00
LibArchive Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibAudio Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibC LibC: Implement siginterrupt() 2023-12-26 18:36:43 +01:00
LibCards Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibChess Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibCMake LibSyntax+Userland: Make LibSyntax not depend on LibGUI 2023-08-29 07:57:39 -04:00
LibCodeComprehension Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCompress LibCompress: Add a PackBits decoder 2023-12-27 17:40:11 +01:00
LibConfig Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCore LibCore: Default to a temp directory for runtime directory on non-Linux 2023-12-29 09:46:50 +01:00
LibCoredump Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCrypt Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibCrypto Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibDebug Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibDesktop Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibDeviceTree Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
LibDiff Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibDNS Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibDSP Userland: Prefer _string over _short_string 2023-08-08 07:37:21 +02:00
LibEDID Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibELF Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibFileSystem Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibFileSystemAccessClient Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibGemini Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibGfx LibGfx/ICC: Improve XYZ coordinates of gray colors 2023-12-31 13:20:37 +01:00
LibGL LibGL: Optimize appends in gl_vertex 2023-10-15 12:14:07 +02:00
LibGLSL LibGLSL: Add tests for GLSL parser 2023-08-18 15:29:48 +02:00
LibGPU Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibGUI Userland: Actually use the correct character map index from KeyEvent 2023-12-29 16:40:59 +01:00
LibHTTP Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibIDL Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibImageDecoderClient Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibIMAP Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibIPC Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibJIT LibJIT: Integrate GDB JIT Interface with ELF builders 2023-12-07 15:34:38 -07:00
LibJS LibJS: Never give back virtual memory once it belongs to a cell type 2023-12-31 15:35:56 +01:00
LibKeyboard Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibLine LibLine: Use the correct loop conditions for erase_character_forwards() 2023-12-24 16:12:27 +01:00
LibLocale LibLocale: Remove compact currency patterns 2023-09-04 18:22:28 +02:00
LibMain
LibManual Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibMarkdown Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibPartition Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibPCIDB Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibPDF LibGfx+LibPDF: Use LibCompress' implementation of the PackBits decoder 2023-12-27 17:40:11 +01:00
LibProtocol Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibRegex Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibSanitizer LibSanitizer: Add _abort variants of UBSan handlers 2023-08-13 05:14:07 +02:00
LibSoftGPU LibSoftGPU: Optimize GPU::Vertex lists 2023-10-15 12:14:07 +02:00
LibSQL Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibSymbolication Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibSyntax Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibSystem Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
LibTest Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibTextCodec LibTextCodec+AK: Don't validate UTF-8 strings twice 2023-12-30 13:49:50 +01:00
LibThreading Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibTimeZone Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibTLS Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibUnicode Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibUSBDB Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibVideo Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibVirtGPU LibGL+Lib*GPU: Set model view and projection matrices separately 2023-10-15 12:14:07 +02:00
LibVT Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibWasm Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
LibWeb LibWeb: Implement the default sizing algorithm steps for backgrounds 2023-12-30 23:23:19 +01:00
LibWebSocket Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibWebView LibWebView+WebContent: Make the DOM node editing IPCs async 2023-12-30 17:30:55 +01:00
LibX86 Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
LibXML Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
CMakeLists.txt LibAccelGfx+Meta: Introduce OpenGL painting library 2023-10-29 17:13:23 +01:00