Subject: vserver enabled 3.13.9+ and 3.14+ kernels hang on boot
From: Jan Rękorajski <baggins@sith.mimuw.edu.pl>
Date: Fri, 25 Apr 2014 21:52:29 +0200

Hi,
The upstream commit b37199e626b31e1175fb06764c5d1d687723aac2
(rcuwalk: recheck mount_lock after mountpoint crossing attempts) in 3.14
and 3.13.9 functionally invalidated one of the changes to fs/namei.c in
vserver patch:

@@ -1238,7 +1335,8 @@ static void follow_dotdot(struct nameida
 
                if (nd->path.dentry == nd->root.dentry &&
                    nd->path.mnt == nd->root.mnt) {
-                       break;
+                       /* for sane '/' avoid follow_mount() */
+                       return;
                }
                if (nd->path.dentry != nd->path.mnt->mnt_root) {
                        /* rare case of legitimate dget_parent()... */

With the above hunk applied vserver enabled 3.13.9 or 3.14.x kernel hangs on
boot when udev is started from initrd. Reverting it fixes the problem.

Does this change serve any purpose other than code path optimization?
Should I expect any breakege after removing it?

-- 
Jan Rękorajski                                 | PLD/Linux
SysAdm                                         | http://www.pld-linux.org/
baggins<at>mimuw.edu.pl
baggins<at>pld-linux.org