>-----Original Message----- >From: Simon Jeons [mailto:simon.jeons@xxxxxxxxx] >Sent: Sunday, January 06, 2013 5:20 PM >To: Liu Hui-R64343 >Cc: Wanpeng Li; linux-kernel@xxxxxxxxxxxxxxx; mgorman@xxxxxxx; >akpm@xxxxxxxxxxxxxxxxxxxx; riel@xxxxxxxxxx; minchan@xxxxxxxxxx; >kamezawa.hiroyu@xxxxxxxxxxxxxx; linux-mm@xxxxxxxxx >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:liwanp@xxxxxxxxxxxxxxxxxx] >> >Sent: Sunday, January 06, 2013 4:46 PM >> >To: Liu Hui-R64343 >> >Cc: linux-kernel@xxxxxxxxxxxxxxx; mgorman@xxxxxxx; akpm@linux- >> >foundation.org; riel@xxxxxxxxxx; minchan@xxxxxxxxxx; >> >kamezawa.hiroyu@xxxxxxxxxxxxxx; linux-mm@xxxxxxxxx >> >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:liwanp@xxxxxxxxxxxxxxxxxx] >> >>>Sent: Sunday, January 06, 2013 4:00 PM >> >>>To: Liu Hui-R64343 >> >>>Cc: linux-kernel@xxxxxxxxxxxxxxx; mgorman@xxxxxxx; akpm@linux- >> >>>foundation.org; riel@xxxxxxxxxx; minchan@xxxxxxxxxx; >> >>>kamezawa.hiroyu@xxxxxxxxxxxxxx; linux-mm@xxxxxxxxx >> >>>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 <rientjes@xxxxxxxxxx> Cc:Mel Gorman >> >>>><mgorman@xxxxxxx> Cc:Andrew Morton <akpm@linux- >foundation.org> >> >>>Cc:Rik >> >>>>van Riel <riel@xxxxxxxxxx> Cc:Minchan Kim <minchan@xxxxxxxxxx> >> >>>>Cc:KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> >> >>>>Signed-off-by: Jason Liu <r64343@xxxxxxxxxxxxx> >> >>>>--- >> >>>> 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 majordomo@xxxxxxxxx. For more info on Linux MM, >> >>>>see: http://www.linux-mm.org/ . >> >>>>Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> >> >>> >> >> >> > >> >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in the body >> to majordomo@xxxxxxxxx. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> > > ��.n������g����a����&ޖ)���)��h���&������梷�����Ǟ�m������)������^�����������v���O��zf������