From eff0837fdc0957509d4940ed4be018ace0e6de17 Mon Sep 17 00:00:00 2001 From: Themis Demetriades Date: Fri, 15 Nov 2024 13:35:58 +0000 Subject: [PATCH] Update stack initialization code to handle all possible overflows and implement a user program to test this --- src/examples/Makefile | 3 ++- src/examples/args-ovf | Bin 0 -> 63532 bytes src/userprog/process.c | 22 ++++++++++++++++------ 3 files changed, 18 insertions(+), 7 deletions(-) create mode 100755 src/examples/args-ovf diff --git a/src/examples/Makefile b/src/examples/Makefile index b6b902f..3bb6ac9 100644 --- a/src/examples/Makefile +++ b/src/examples/Makefile @@ -4,7 +4,7 @@ SRCDIR = .. # To add a new test, put its name on the PROGS list # and then add a name_SRC line that lists its source files. PROGS = cat cmp cp echo halt hex-dump mcat mcp rm \ - bubsort insult lineup matmult recursor + bubsort insult lineup matmult recursor args-ovf # Should work from task 2 onward. cat_SRC = cat.c @@ -18,6 +18,7 @@ lineup_SRC = lineup.c ls_SRC = ls.c recursor_SRC = recursor.c rm_SRC = rm.c +args-ovf_SRC = args-ovf.c # Should work in task 3; also in task 4 if VM is included. bubsort_SRC = bubsort.c diff --git a/src/examples/args-ovf b/src/examples/args-ovf new file mode 100755 index 0000000000000000000000000000000000000000..ba2990ee7d8a5f751f6a8d82291fae41eb01bcb9 GIT binary patch literal 63532 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 W;nHHF*5ka=Z~CXI4mAnA{Qd% PGSIZE) + overflow, allocate as many extra pages as needed to the user process + contiguously in the virtual address space below the initial page. */ + int overflow_bytes = (PHYS_BASE - *esp) + remaining_size - PGSIZE; + if (overflow_bytes > 0) { - uint8_t *kpage = palloc_get_page (PAL_USER | PAL_ZERO); - if (!install_page (((uint8_t *) PHYS_BASE) - PGSIZE * 2, kpage, true)) - return false; + int pages_needed = DIV_CEIL (overflow_bytes, PGSIZE); + for (int i = 1; i < pages_needed + 1; i++) + { + uint8_t *kpage = palloc_get_page (PAL_USER | PAL_ZERO); + if (!install_page (((uint8_t *) PHYS_BASE) - PGSIZE * (i + 1), + kpage, true)) + return false; + } } /* Align stack pointer to word size before pushing argv elements for -- 2.49.1