PL3131 fix: prevent vservers from escaping chroot() barriers
authorMark Huang <mlhuang@cs.princeton.edu>
Tue, 23 Nov 2004 15:15:05 +0000 (15:15 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Tue, 23 Nov 2004 15:15:05 +0000 (15:15 +0000)
fs/ext3/acl.c

index cc26948..e89cb30 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/namei.h> 
 #include <linux/ext3_jbd.h>
 #include <linux/ext3_fs.h>
+#include <linux/vs_base.h>
 #include "xattr.h"
 #include "acl.h"
 
@@ -296,6 +297,9 @@ ext3_permission(struct inode *inode, int mask, struct nameidata *nd)
 {
        int mode = inode->i_mode;
 
+       /* Prevent vservers from escaping chroot() barriers */
+       if (IS_BARRIER(inode) && !vx_check(0, VX_ADMIN))
+               return -EACCES;
        /* Nobody gets write access to a read-only fs */
        if ((mask & MAY_WRITE) && (IS_RDONLY(inode) ||
            (nd && nd->mnt && MNT_IS_RDONLY(nd->mnt))) &&