diff -urN 2.4.0-test4-pre6/fs/exec.c vm-25/fs/exec.c
--- 2.4.0-test4-pre6/fs/exec.c	Tue Jul 11 03:50:33 2000
+++ vm-25/fs/exec.c	Fri Jul 14 18:42:03 2000
@@ -323,6 +324,7 @@
 		if (bprm->page[i]) {
 			current->mm->rss++;
 			put_dirty_page(current,bprm->page[i],stack_base);
+			bprm->page[i] = NULL;
 		}
 		stack_base += PAGE_SIZE;
 	}
@@ -875,9 +877,11 @@
 
 	/* Assumes that free_page() can take a NULL argument. */ 
 	/* I hope this is ok for all architectures */ 
-	for (i = 0 ; i < MAX_ARG_PAGES ; i++)
-		if (bprm.page[i])
-			__free_page(bprm.page[i]);
+	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
+		struct page * page = bprm.page[i];
+		if (page)
+			__free_page(page);
+	}
 
 	return retval;
 }