Skip to contentSkip to conversation

Fix sys_mount not to free_page(0)

PATCH In review Kanoj Sarcar 2 participants 4 messages Aug 6, 1999 – Aug 7, 1999

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix sys_mount not to free_page(0)

Linus/Alan,

Could you please take this patch into the 2.2 and 2.3 streams? It basically prevents sys_mount() from trying to invoke free_page(0). Note that copy_mount_options() might return 0 both in the case where it allocates a page, and in the case it does not.

Thanks.

Kanoj
[email protected]

super.c renamed from usr/tmp/p_rdiff_a005Eo/super.c +6 -3
@@ -1037,7 +1037,8 @@
 		retval = do_remount(dir_name,
 				    new_flags & ~MS_MGC_MSK & ~MS_REMOUNT,
 				    (char *) page);
-		free_page(page);
+		if (page)
+			free_page(page);
 		goto out;
 	}
 
@@ -1045,7 +1046,8 @@
 	if (retval < 0)
 		goto out;
 	fstype = get_fs_type((char *) page);
-	free_page(page);
+	if (page)
+		free_page(page);
 	retval = -ENODEV;
 	if (!fstype)		
 		goto out;
@@ -1099,7 +1101,8 @@
 	}
 	retval = do_mount(dev, dev_name, dir_name, fstype->name, flags,
 				(void *) page);
-	free_page(page);
+	if (page)
+		free_page(page);
 	if (retval)
 		goto clean_up;
 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/

#1 lore raw
Quoted 3 lines · Kanoj Sarcar

Could you please take this patch into the 2.2 and 2.3 streams? It basically prevents sys_mount() from trying to invoke free_page(0).

Hmm..

free_page(0) is actually supposed to work. Doesn't it?

Linus

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/

#2 lore raw
Quoted 14 lines · Kanoj Sarcar
Quoted 3 lines

Could you please take this patch into the 2.2 and 2.3 streams? It basically prevents sys_mount() from trying to invoke free_page(0).

Hmm..

free_page(0) is actually supposed to work. Doesn't it?

Linus

Umm, it does ... I was thinking it was happenstance, and not by design. I ran into a panic with some code I am trying to write and ran into this ... maybe I should fix my code ...

Is it worthwhile to clean this up, or do other places in the code rely on this behavior of free_page?

Kanoj
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/

#3 lore raw
Quoted 4 lines · Kanoj Sarcar
Quoted 2 lines

free_page(0) is actually supposed to work. Doesn't it?

Umm, it does ... I was thinking it was happenstance, and not by design.

It's by design - I am of the religion that thinks that

	free(malloc());

is always legal, even when the malloc() fails.

Quoted 2 lines

Is it worthwhile to clean this up, or do other places in the code rely on this behavior of free_page?

There might be any number of places who just free a page, it doesn't even slow down free_page(), because the 0 case just falls out quite naturally from having to test for out-of-range and reserved pages anyway.

Linus

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/