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 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@xxxxxxxxxxxxxxxxxxxx> >>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>