in 32-bit system, one process only allocate 3Gb memory at
least, even though there are enough memory and setting
overcommit_memory=1, the porcess always exit when it arrives
in 3Gb memory.

the patch use '__WORDSIZE' macro to avoid the incorrect 'TFAIL'
without the patch:
 ---- snip ----
 min_free_kbytes    0  TINFO  :  set overcommit_memory to 1
 min_free_kbytes    0  TINFO  :  set min_free_kbytes to 3794
 memfree is 15478420 kB before eatup mem
 memfree is 12333408 kB after eatup mem
 min_free_kbytes    3  TFAIL  :  child unexpectedly failed: 0
 min_free_kbytes    0  TINFO  :  set min_free_kbytes to 7588
 ---- snip ----

after applying the patch:
 ---- snip ----
 min_free_kbytes    0  TINFO  :  set overcommit_memory to 1
 min_free_kbytes    0  TINFO  :  set min_free_kbytes to 3794
 memfree is 15478420 kB before eatup mem
 memfree is 12333408 kB after eatup mem
 min_free_kbytes    0  TINFO  :  Child can't allocate >3Gb memory in 32bit 
system
 min_free_kbytes    0  TINFO  :  set min_free_kbytes to 7588
 ---- snip ----

Reported-by: Shuang Qiu <[email protected]>
Signed-off-by: Zhouping Liu <[email protected]>
---
 testcases/kernel/mem/tunable/min_free_kbytes.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/testcases/kernel/mem/tunable/min_free_kbytes.c 
b/testcases/kernel/mem/tunable/min_free_kbytes.c
index dde182c..873b807 100644
--- a/testcases/kernel/mem/tunable/min_free_kbytes.c
+++ b/testcases/kernel/mem/tunable/min_free_kbytes.c
@@ -158,8 +158,19 @@ static void test_tune(unsigned long overcommit_policy)
                                    "child unexpectedly failed: %d", status);
                } else if (overcommit_policy == 1) {
                        if (!WIFSIGNALED(status) || WTERMSIG(status) != SIGKILL)
+#if __WORDSIZE == 32
+                       {
+                               if (total_mem < 3145728UL)
+#endif
                                tst_resm(TFAIL,
                                    "child unexpectedly failed: %d", status);
+#if __WORDSIZE == 32
+       /* in 32-bit system, a process allocate about 3Gb memory at most */
+                               else
+                                       tst_resm(TINFO, "Child can't allocate "
+                                           ">3Gb memory in 32bit system");
+                       }
+#endif
                } else {
                        if (WIFEXITED(status)) {
                                if (WEXITSTATUS(status) != 0) {
-- 
1.7.11.2


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to