** Description changed:

  == Justification ==
  When one vma was with flag VM_LOCKED|VM_LOCKONFAULT (by invoking
  mlock2(,MLOCK_ONFAULT)), it can again be populated with mlock() with
  VM_LOCKED flag only.
  
  There is a hole in mlock_fixup() which increase mm->locked_vm twice even
  the two operations are on the same vma and both with VM_LOCKED flags.
  
  The issue can be reproduced by following code:
  
-   mlock2(p, 1024 * 64, MLOCK_ONFAULT); //VM_LOCKED|VM_LOCKONFAULT
-   mlock(p, 1024 * 64);  //VM_LOCKED
+   mlock2(p, 1024 * 64, MLOCK_ONFAULT); //VM_LOCKED|VM_LOCKONFAULT
+   mlock(p, 1024 * 64);  //VM_LOCKED
  
  Then check the increase VmLck field in /proc/pid/status(to 128k).
  
  When vma is set with different vm_flags, and the new vm_flags is with
  VM_LOCKED, it is not necessarily be a "new locked" vma.
  
- There is a dedicated reproducer called "mlock203" test in
+ There is a dedicated reproducer, the "mlock203" test in
  ubuntu_ltp_syscalls, you can see the failure for all the Ubuntu 4.4
  kernel:
  
-  <<<test_start>>>
-  tag=mlock203 stime=1537369891
-  cmdline="mlock203"
-  contacts=""
-  analysis=exit
-  <<<test_output>>>
-  tst_test.c:1063: INFO: Timeout per run is 0h 05m 00s
-  mlock203.c:63: FAIL: Locking one memory again increased VmLck
+  <<<test_start>>>
+  tag=mlock203 stime=1537369891
+  cmdline="mlock203"
+  contacts=""
+  analysis=exit
+  <<<test_output>>>
+  tst_test.c:1063: INFO: Timeout per run is 0h 05m 00s
+  mlock203.c:63: FAIL: Locking one memory again increased VmLck
  
-  Summary:
-  passed   0
-  failed   1
-  skipped  0
-  warnings 0
+  Summary:
+  passed   0
+  failed   1
+  skipped  0
+  warnings 0
  
  == Fix ==
  b155b4fd (mm: mlock: avoid increase mm->locked_vm on mlock() when already 
mlock2(,MLOCK_ONFAULT))
  
  A test kernel for Xenial / Xenial-KVM could be found here:
  http://people.canonical.com/~phlin/kernel/lp-1793451-mlock203/
  
  == Regression Potential ==
  Low, this patch prevents mm->locked_vm from increment just by adding an extra 
check to see if the old vm_flags is already VM_LOCKED.
  
  == Test Case ==
  Run the mlock203 test in ubuntu_ltp_syscalls test suite. And it will pass 
with the patched kernel.
- 
  
  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: linux-image-4.4.0-1068-aws 4.4.0-1068.78
  ProcVersionSignature: User Name 4.4.0-1068.78-aws 4.4.144
  Uname: Linux 4.4.0-1068-aws x86_64
  ApportVersion: 2.20.1-0ubuntu2.18
  Architecture: amd64
  Date: Thu Sep 20 06:44:13 2018
  Ec2AMI: ami-0e32ec5bc225539f5
  Ec2AMIManifest: (unknown)
  Ec2AvailabilityZone: us-west-2b
  Ec2InstanceType: c3.large
  Ec2Kernel: unavailable
  Ec2Ramdisk: unavailable
  SourcePackage: linux-aws
  UpgradeStatus: No upgrade log present (probably fresh install)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1793451

Title:
  mlock203 test in ubuntu_ltp_syscalls failed with Xenial kernel

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/1793451/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to