From: Ben Pfaff Date: Wed, 5 Apr 2006 19:25:49 +0000 (+0000) Subject: Add comment to explain why we don't free initial_thread. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=commitdiff_plain;h=d07d499dd6655d15b274bb7713138dc9641a1fdb Add comment to explain why we don't free initial_thread. Thanks to Sunit Pal for the question. --- diff --git a/src/threads/thread.c b/src/threads/thread.c index 01e8ea4..16b8c8b 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -483,12 +483,13 @@ schedule_tail (struct thread *prev) /* If the thread we switched from is dying, destroy its struct thread. This must happen late so that thread_exit() doesn't - pull out the rug under itself. */ - if (prev != NULL && prev->status == THREAD_DYING) + pull out the rug under itself. (We don't free + initial_thread because its memory was not obtained via + palloc().) */ + if (prev != NULL && prev->status == THREAD_DYING && prev != initial_thread) { ASSERT (prev != cur); - if (prev != initial_thread) - palloc_free_page (prev); + palloc_free_page (prev); } }