>-----Original Message----- >From: Simon Jeons [mailto:[email protected]] >Sent: Sunday, January 06, 2013 5:20 PM >To: Liu Hui-R64343 >Cc: Wanpeng Li; [email protected]; [email protected]; >[email protected]; [email protected]; [email protected]; >[email protected]; [email protected] >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory return >error issue > >On Sun, 2013-01-06 at 08:48 +0000, Liu Hui-R64343 wrote: >> >-----Original Message----- >> >From: Wanpeng Li [mailto:[email protected]] >> >Sent: Sunday, January 06, 2013 4:46 PM >> >To: Liu Hui-R64343 >> >Cc: [email protected]; [email protected]; akpm@linux- >> >foundation.org; [email protected]; [email protected]; >> >[email protected]; [email protected] >> >Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory >> >return error issue >> > >> >On Sun, Jan 06, 2013 at 08:11:58AM +0000, Liu Hui-R64343 wrote: >> >>>-----Original Message----- >> >>>From: Wanpeng Li [mailto:[email protected]] >> >>>Sent: Sunday, January 06, 2013 4:00 PM >> >>>To: Liu Hui-R64343 >> >>>Cc: [email protected]; [email protected]; akpm@linux- >> >>>foundation.org; [email protected]; [email protected]; >> >>>[email protected]; [email protected] >> >>>Subject: Re: [PATCH] mm: compaction: fix echo 1 > compact_memory >> >>>return error issue >> >>> >> >>>On Sun, Jan 06, 2013 at 03:44:33PM +0800, Jason Liu wrote: >> >>> >> >>>Hi Jason, >> >>> >> >>>>when run the folloing command under shell, it will return error >> >>>>sh/$ echo 1 > /proc/sys/vm/compact_memory sh/$ sh: write error: >> >>>>Bad address >> >>>> >> >>> >> >>>How can you modify the value through none privileged user since the >> >>>mode == 0200? >> >> >> >>I write it through privileged user(root). I'm using the GNOME_Mobile >rootfs. >> >> >> >>> >> >>>>After strace, I found the following log: >> >>>>... >> >>>>write(1, "1\n", 2) = 3 >> >>>>write(1, "", 4294967295) = -1 EFAULT (Bad address) >> >>>>write(2, "echo: write error: Bad address\n", 31echo: write error: >> >>>>Bad address >> >>>>) = 31 >> >>>> >> >>>>This tells system return 3(COMPACT_COMPLETE) after write data to >> >>>compact_memory. >> >>>> >> >>>>The fix is to make the system just return 0 instead >> >>>>3(COMPACT_COMPLETE) from sysctl_compaction_handler after >> >compaction_nodes finished. >> >>> >> >>>What's the special scenario you are in? I couldn't figure out the >> >>>similar error against latest 3.8-rc2, how could you reproduce it? >> >> >> >>I'm using the BusyBox v1.20.2 () built-in shell (ash), it reproduces the >issue: >> >100%. >> >> >> >>root@freescale /$ sh >> >> >> >> >> >>BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of >> >>built-in commands. >> >> >> >>Could you run strace and see the log: strace echo 1 > >> >>/proc/sys/vm/compact_memory >> >> >> > >> >I test it on my desktop against latest 3.8-rc2, can't repoduce it. :) >> > >> >write(1, "1\n", 2) = 3 >> >> Here it tells it. > >Why this value trouble you?
root@freescale /$strace echo 1 > /proc/sys/vm/compact_memory write(1, "1\n", 2) = 3 write(1, "", 4294967295) = -1 EFAULT (Bad address) write(2, "echo: write error: Bad address\n", 31echo: write error: Bad address ) = 31 root@freescale /$ sh BusyBox v1.20.2 () built-in shell (ash) Enter 'help' for a list of built-in commands. root@freescale /$ echo 1 > /proc/sys/vm/compact_memory sh: write error: Bad address > >> >> >close(1) = 0 >> >munmap(0xb779c000, 4096) = 0 >> >close(2) = 0 >> >exit_group(0) = ? >> >+++ exited with 0 +++ >> > >> >Regards, >> >Wanpeng Li >> > >> >>> >> >>>Regards, >> >>>Wanpeng Li >> >>> >> >>>> >> >>>>Suggested-by:David Rientjes <[email protected]> Cc:Mel Gorman >> >>>><[email protected]> Cc:Andrew Morton <akpm@linux- >foundation.org> >> >>>Cc:Rik >> >>>>van Riel <[email protected]> Cc:Minchan Kim <[email protected]> >> >>>>Cc:KAMEZAWA Hiroyuki <[email protected]> >> >>>>Signed-off-by: Jason Liu <[email protected]> >> >>>>--- >> >>>> mm/compaction.c | 6 ++---- >> >>>> 1 files changed, 2 insertions(+), 4 deletions(-) >> >>>> >> >>>>diff --git a/mm/compaction.c b/mm/compaction.c index >> >>>>6b807e4..f8f5c11 >> >>>>100644 >> >>>>--- a/mm/compaction.c >> >>>>+++ b/mm/compaction.c >> >>>>@@ -1210,7 +1210,7 @@ static int compact_node(int nid) } >> >>>> >> >>>> /* Compact all nodes in the system */ -static int >> >>>>compact_nodes(void) >> >>>>+static void compact_nodes(void) >> >>>> { >> >>>> int nid; >> >>>> >> >>>>@@ -1219,8 +1219,6 @@ static int compact_nodes(void) >> >>>> >> >>>> for_each_online_node(nid) >> >>>> compact_node(nid); >> >>>>- >> >>>>- return COMPACT_COMPLETE; >> >>>> } >> >>>> >> >>>> /* The written value is actually unused, all memory is compacted >> >>>>*/ @@ >> >>>>-1231,7 +1229,7 @@ int sysctl_compaction_handler(struct ctl_table >> >>>>*table, >> >>>int write, >> >>>> void __user *buffer, size_t *length, loff_t >> >>>> *ppos) >{ >> >>>> if (write) >> >>>>- return compact_nodes(); >> >>>>+ compact_nodes(); >> >>>> >> >>>> return 0; >> >>>> } >> >>>>-- >> >>>>1.7.5.4 >> >>>> >> >>>> >> >>>>-- >> >>>>To unsubscribe, send a message with 'unsubscribe linux-mm' in the >> >>>>body to [email protected]. For more info on Linux MM, >> >>>>see: http://www.linux-mm.org/ . >> >>>>Don't email: <a href=mailto:"[email protected]"> [email protected] </a> >> >>> >> >> >> > >> >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in the body >> to [email protected]. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: <a href=mailto:"[email protected]"> [email protected] </a> > >

