]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
mm: cma: fix deadlock on s_follow_page_lock
authorSri Krishna chowdary <schowdary@nvidia.com>
Wed, 8 Oct 2014 19:06:52 +0000 (00:36 +0530)
committerKrishna Reddy <vdumpa@nvidia.com>
Sat, 11 Oct 2014 06:18:44 +0000 (23:18 -0700)
unlock s_follow_page_lock before jump to next_page label,
else any subsequent mutex_lock() on this lock will be waiting
infinitely causing deadlock.

Bug 1550455
Bug 200043261

Change-Id: I62689f808a133d3b491fc4044040f9c7275302e8
Signed-off-by: Sri Krishna chowdary <schowdary@nvidia.com>
Reviewed-on: http://git-master/r/554720
Reviewed-by: Peter Newman <pnewman@nvidia.com>
Tested-by: Peter Newman <pnewman@nvidia.com>
Reviewed-by: Vandana Salve <vsalve@nvidia.com>
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
mm/memory.c

index 350c69acac9d6494fe5f5809837441d9cf454260..359ba4c7e4a31199e814abb60978660ce858919f 100644 (file)
@@ -1866,8 +1866,10 @@ follow_page_again:
 
                                /* For mlock, just skip the stack guard page. */
                                if (foll_flags & FOLL_MLOCK) {
-                                       if (stack_guard_page(vma, start))
+                                       if (stack_guard_page(vma, start)) {
+                                               mutex_unlock(&s_follow_page_lock);
                                                goto next_page;
+                                       }
                                }
                                if (foll_flags & FOLL_WRITE)
                                        fault_flags |= FAULT_FLAG_WRITE;