#
4986a9a3 |
|
24-May-2020 |
Michael Lotz <mmlr@mlotz.ch> |
Revert "kernel: Remove the B_KERNEL_AREA protection flag." This reverts parts of hrev52546 that removed the B_KERNEL_AREA protection flag and replaced it with an address space comparison. Checking for areas in the kernel address space inside a user address space does not work, as areas can only ever belong to one address space. This rendered these checks ineffective and allowed to unmap, delete or resize kernel managed areas from their respective userland teams. That protection was meant to be applied to the team user data area which was introduced to reduce the kernel to userland overhead by directly sharing some data between the two. It was intended to be set up in such a manner that this is safe on the kernel side and the B_KERNEL_AREA flag was introduced specifically for this purpose. Incidentally the actual application of the B_KERNEL_AREA flag on the team user data area was apparently forgotten in the original commit. The absence of that protection allowed applications to induce KDLs by modifying the user area and generating a signal for example. This change restores the B_KERNEL_AREA flag and also applies it to the team user data area. Change-Id: I993bb1cf7c6ae10085100db7df7cc23fe66f4edd Reviewed-on: https://review.haiku-os.org/c/haiku/+/2836 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
9cc0f06a |
|
17-Nov-2018 |
Augustin Cavalier <waddlesplash@gmail.com> |
kernel: Remove the B_KERNEL_AREA protection flag. It is now no longer used.
|
#
db9b70ee |
|
07-May-2018 |
Jérôme Duval <jerome.duval@gmail.com> |
kernel: add a compatibility commpage on x86_64. * x86 uses a commpage with 32-bit addresses, incompatible with the one used for x86_64. For this reason, a compatibility commpage is needed to support a 32-bit userland on x86_64. * define ADDRESS_TYPE as a macro for addr_t (default) or uint32 (for the 32-bit commpage). * team_create_thread_start_internal() will use clone_commpage_area() with KERNEL_USER_DATA_BASE or clone_commpage_compat_area() with KERNEL_USER32_DATA_BASE, to setup the correct commpage. * real_time_clock (in compatibility mode) also updates the compatibility commpage with real time data. Change-Id: I61605077ce0beabab4439ef54edd1eae26f26fd2
|
#
f697412f |
|
03-Apr-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
vm: place commpage and team data near the top of user address space Placing commpage and team user data somewhere at the top of the user accessible virtual address space prevents these areas from conflicting with elf images that require to be mapped at exact address (in most cases: runtime_loader).
|
#
ffbf0328 |
|
20-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
debug: update debug kit to correctly recognize commpage
|
#
e85e399f |
|
17-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
commpage: randomize position of commpage This patch introduces randomization of commpage position. From now on commpage table contains offsets from begining to of the commpage to the particular commpage entry. Similary addresses of symbols in ELF memory image "commpage" are just offsets from the begining of the commpage. This patch also updates KDL so that commpage entries are recognized and shown correctly in stack trace. An update of Debugger is yet to be done.
|
#
59ae45c1 |
|
21-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Fixed commpage for x86_64. Since the commpage is at a kernel address, changed 64-bit paging code to match x86's behaviour of allowing user-accessible mappings to be created in the kernel portion of the address space. This is also required by some drivers.
|
#
e50cf876 |
|
02-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the VM headers into subdirectory vm/. * Renamed vm_cache.h/vm_address_space.h to VMCache.h/VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34449 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fab1c05c |
|
24-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Split the commpage initialization into two parts. The second part is executed after all CPUs have been queried for their features. On SMP machines sysenter/sysexit weren't used before due to the non-boot CPUs appearing not to have the feature. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31226 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8a85be46 |
|
24-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Register the commpage as an image and its entries as symbols. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27722 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
34b3b26b |
|
10-Jan-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged branch haiku/branches/developer/bonefish/optimization revision 23139 into trunk, with roughly the following changes (for details svn log the branch): * The int 99 syscall handler is now fully in assembly. * Added a sysenter/sysexit handler and use it on Pentiums that support it (via commpage). * Got rid of i386_handle_trap(). A bit of functionality was moved into the assembly handler which now uses a jump table to call C functions handling the respective interrupt. * Some optimizations to get user debugger support code out of the interrupt handling path. * Introduced a thread::flags fields which allows to skip handling of rare events (signals, user debug enabling/disabling) on the common interrupt handling path. * Got rid of the explicit iframe stack. The iframes can still be retrieved by iterating through the stack frames. * Made the commpage an architecture independent feature. It's used for the real time data stuff (instead of creating a separate area). * The x86 CPU modules can now provide processor optimized versions for common functions (currently memcpy() only). They are used in the kernel and are provided to the userland via commpage entries. * Introduced build system feature allowing easy use of C structure member offsets in assembly code. Changes after merging: * Fixed merge conflict in src/system/kernel/arch/x86/arch_debug.cpp (caused by refactoring and introduction of "call" debugger command). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23370 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f697412ff81a6d6a4a9866abce93f1f20a68330f |
|
03-Apr-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
vm: place commpage and team data near the top of user address space Placing commpage and team user data somewhere at the top of the user accessible virtual address space prevents these areas from conflicting with elf images that require to be mapped at exact address (in most cases: runtime_loader).
|
#
ffbf0328d29bc3ce8fe2a05bf2065d5c6676fc7c |
|
20-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
debug: update debug kit to correctly recognize commpage
|
#
e85e399fd7b229b8bc92f28928a059876d7216d3 |
|
17-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
commpage: randomize position of commpage This patch introduces randomization of commpage position. From now on commpage table contains offsets from begining to of the commpage to the particular commpage entry. Similary addresses of symbols in ELF memory image "commpage" are just offsets from the begining of the commpage. This patch also updates KDL so that commpage entries are recognized and shown correctly in stack trace. An update of Debugger is yet to be done.
|
#
59ae45c1ab32476f1fa428dae22989f8387a1f9e |
|
21-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Fixed commpage for x86_64. Since the commpage is at a kernel address, changed 64-bit paging code to match x86's behaviour of allowing user-accessible mappings to be created in the kernel portion of the address space. This is also required by some drivers.
|
#
e50cf8765be50a7454c9488db38b638cf90805af |
|
02-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved the VM headers into subdirectory vm/. * Renamed vm_cache.h/vm_address_space.h to VMCache.h/VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34449 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fab1c05c0521518ed89f3ed4ebc176dfe1cdbf70 |
|
24-Jun-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Split the commpage initialization into two parts. The second part is executed after all CPUs have been queried for their features. On SMP machines sysenter/sysexit weren't used before due to the non-boot CPUs appearing not to have the feature. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31226 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8a85be4636d96fe300265720e9522aa372b5749c |
|
24-Sep-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Register the commpage as an image and its entries as symbols. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27722 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
34b3b26b3b8c46ba46ddde037b10dd173f4936d6 |
|
10-Jan-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Merged branch haiku/branches/developer/bonefish/optimization revision 23139 into trunk, with roughly the following changes (for details svn log the branch): * The int 99 syscall handler is now fully in assembly. * Added a sysenter/sysexit handler and use it on Pentiums that support it (via commpage). * Got rid of i386_handle_trap(). A bit of functionality was moved into the assembly handler which now uses a jump table to call C functions handling the respective interrupt. * Some optimizations to get user debugger support code out of the interrupt handling path. * Introduced a thread::flags fields which allows to skip handling of rare events (signals, user debug enabling/disabling) on the common interrupt handling path. * Got rid of the explicit iframe stack. The iframes can still be retrieved by iterating through the stack frames. * Made the commpage an architecture independent feature. It's used for the real time data stuff (instead of creating a separate area). * The x86 CPU modules can now provide processor optimized versions for common functions (currently memcpy() only). They are used in the kernel and are provided to the userland via commpage entries. * Introduced build system feature allowing easy use of C structure member offsets in assembly code. Changes after merging: * Fixed merge conflict in src/system/kernel/arch/x86/arch_debug.cpp (caused by refactoring and introduction of "call" debugger command). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23370 a95241bf-73f2-0310-859d-f6bbb57e9c96
|