Added privilidges
This commit is contained in:
@@ -565,13 +565,21 @@ These statistics are surfaced to the user via the `mem` and `memtest` commands.
|
||||
|
||||
## Runtime memory diagnostics (`mem` and `memtest`)
|
||||
|
||||
The `mem` command (in `commands.c`) prints a snapshot of PMM and heap state by calling `memory_print_stats`:
|
||||
The `mem` command (in `commands.c`) prints a snapshot of PMM and heap state by calling `memory_print_stats`. Access requires `TASK_PRIV_KERNEL`:
|
||||
|
||||
```525:562:/home/lochlan/Documents/Coding/c/os/memory.c
|
||||
```525:572:/home/lochlan/Documents/Coding/c/os/memory.c
|
||||
void memory_print_stats(BootInfo *Boot)
|
||||
{
|
||||
UINTN h_total, h_used, h_free, h_blocks;
|
||||
UINTN p_total, p_free, p_used;
|
||||
Task *caller;
|
||||
|
||||
/* Subsystem-level privilege enforcement: memory stats require KERNEL. */
|
||||
caller = task_current();
|
||||
if (caller != NULL && task_get_privilege(caller) < TASK_PRIV_KERNEL) {
|
||||
SAFE_PRINT(Boot, L"Permission denied: memory stats require kernel privilege.\n\r");
|
||||
return;
|
||||
}
|
||||
|
||||
p_total = pmm_get_total_pages();
|
||||
p_free = pmm_get_free_pages();
|
||||
@@ -590,7 +598,7 @@ void memory_print_stats(BootInfo *Boot)
|
||||
}
|
||||
```
|
||||
|
||||
The `memtest` command runs a scripted set of tests that exercise heap allocation, heap free/coalescing, and PMM single- and multi-page allocation:
|
||||
The `memtest` command runs a scripted set of tests that exercise heap allocation, heap free/coalescing, and PMM single- and multi-page allocation. It also enforces `TASK_PRIV_KERNEL`:
|
||||
|
||||
```306:379:/home/lochlan/Documents/Coding/c/os/commands.c
|
||||
static void cmd_memtest(BootInfo *Boot, CHAR16 *Args)
|
||||
@@ -600,8 +608,16 @@ static void cmd_memtest(BootInfo *Boot, CHAR16 *Args)
|
||||
UINTN i;
|
||||
UINT64 page;
|
||||
UINTN h_total, h_used, h_free, h_blocks;
|
||||
Task *caller;
|
||||
(void)Args;
|
||||
|
||||
/* Subsystem-level privilege enforcement: memtest requires KERNEL. */
|
||||
caller = task_current();
|
||||
if (caller != NULL && task_get_privilege(caller) < TASK_PRIV_KERNEL) {
|
||||
SAFE_PRINT(Boot, L"Permission denied: memtest requires kernel privilege.\n\r");
|
||||
return;
|
||||
}
|
||||
|
||||
SAFE_PRINT(Boot, L"\n\r");
|
||||
SAFE_PRINT(Boot, L"Memory Test\n\r");
|
||||
SAFE_PRINT(Boot, L"================================================\n\r");
|
||||
|
||||
Reference in New Issue
Block a user