]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- apparmor (2.8) and vserver (2.3.3.4) update
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 22 May 2012 07:21:36 +0000 (07:21 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    kernel-apparmor.patch -> 1.16
    kernel-vserver-2.3.patch -> 1.95
    kernel.spec -> 1.1048

kernel-apparmor.patch
kernel-vserver-2.3.patch
kernel.spec

index 9f2ac69aaf986f44039dc3423afcf7dd10adad5f..152d7d460fceb2316748298d5204525a2eee2d3b 100644 (file)
-From 0ae314bc92d8b22250f04f85e4bd36ee9ed30890 Mon Sep 17 00:00:00 2001
 From: John Johansen <john.johansen@canonical.com>
-Date: Mon, 4 Oct 2010 15:03:36 -0700
-Subject: [PATCH 1/3] AppArmor: compatibility patch for v5 network controll
+Date: Thu, 22 Jul 2010 09:32:02 +0000 (-0700)
+Subject: UBUNTU: SAUCE: AppArmor: Add profile introspection file to interface
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjj%2Flinux-apparmor.git;a=commitdiff_plain;h=8de755e4dfdbc40bfcaca848ae6b5aeaf0ede0e8
 
-Add compatibility for v5 network rules.
+UBUNTU: SAUCE: AppArmor: Add profile introspection file to interface
+
+Add the dynamic profiles file to the interace, to allow load policy
+introspection.
+
+Signed-off-by: John Johansen <john.johansen@canonical.com>
+Acked-by: Kees Cook <kees@ubuntu.com>
+Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
+---
+
+diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c
+index 16c15ec..89bdc62 100644
+--- a/security/apparmor/apparmorfs.c
++++ b/security/apparmor/apparmorfs.c
+@@ -182,6 +182,232 @@ const struct file_operations aa_fs_seq_file_ops = {
+       .release        = single_release,
+ };
++/**
++ * __next_namespace - find the next namespace to list
++ * @root: root namespace to stop search at (NOT NULL)
++ * @ns: current ns position (NOT NULL)
++ *
++ * Find the next namespace from @ns under @root and handle all locking needed
++ * while switching current namespace.
++ *
++ * Returns: next namespace or NULL if at last namespace under @root
++ * NOTE: will not unlock root->lock
++ */
++static struct aa_namespace *__next_namespace(struct aa_namespace *root,
++                                           struct aa_namespace *ns)
++{
++      struct aa_namespace *parent;
++
++      /* is next namespace a child */
++      if (!list_empty(&ns->sub_ns)) {
++              struct aa_namespace *next;
++              next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list);
++              read_lock(&next->lock);
++              return next;
++      }
++
++      /* check if the next ns is a sibling, parent, gp, .. */
++      parent = ns->parent;
++      while (parent) {
++              read_unlock(&ns->lock);
++              list_for_each_entry_continue(ns, &parent->sub_ns, base.list) {
++                      read_lock(&ns->lock);
++                      return ns;
++              }
++              if (parent == root)
++                      return NULL;
++              ns = parent;
++              parent = parent->parent;
++      }
++
++      return NULL;
++}
++
++/**
++ * __first_profile - find the first profile in a namespace
++ * @root: namespace that is root of profiles being displayed (NOT NULL)
++ * @ns: namespace to start in   (NOT NULL)
++ *
++ * Returns: unrefcounted profile or NULL if no profile
++ */
++static struct aa_profile *__first_profile(struct aa_namespace *root,
++                                        struct aa_namespace *ns)
++{
++      for ( ; ns; ns = __next_namespace(root, ns)) {
++              if (!list_empty(&ns->base.profiles))
++                      return list_first_entry(&ns->base.profiles,
++                                              struct aa_profile, base.list);
++      }
++      return NULL;
++}
++
++/**
++ * __next_profile - step to the next profile in a profile tree
++ * @profile: current profile in tree (NOT NULL)
++ *
++ * Perform a depth first taversal on the profile tree in a namespace
++ *
++ * Returns: next profile or NULL if done
++ * Requires: profile->ns.lock to be held
++ */
++static struct aa_profile *__next_profile(struct aa_profile *p)
++{
++      struct aa_profile *parent;
++      struct aa_namespace *ns = p->ns;
++
++      /* is next profile a child */
++      if (!list_empty(&p->base.profiles))
++              return list_first_entry(&p->base.profiles, typeof(*p),
++                                      base.list);
++
++      /* is next profile a sibling, parent sibling, gp, subling, .. */
++      parent = p->parent;
++      while (parent) {
++              list_for_each_entry_continue(p, &parent->base.profiles,
++                                           base.list)
++                              return p;
++              p = parent;
++              parent = parent->parent;
++      }
++
++      /* is next another profile in the namespace */
++      list_for_each_entry_continue(p, &ns->base.profiles, base.list)
++              return p;
++
++      return NULL;
++}
++
++/**
++ * next_profile - step to the next profile in where ever it may be
++ * @root: root namespace  (NOT NULL)
++ * @profile: current profile  (NOT NULL)
++ *
++ * Returns: next profile or NULL if there isn't one
++ */
++static struct aa_profile *next_profile(struct aa_namespace *root,
++                                     struct aa_profile *profile)
++{
++      struct aa_profile *next = __next_profile(profile);
++      if (next)
++              return next;
++
++      /* finished all profiles in namespace move to next namespace */
++      return __first_profile(root, __next_namespace(root, profile->ns));
++}
++
++/**
++ * p_start - start a depth first traversal of profile tree
++ * @f: seq_file to fill
++ * @pos: current position
++ *
++ * Returns: first profile under current namespace or NULL if none found
++ *
++ * acquires first ns->lock
++ */
++static void *p_start(struct seq_file *f, loff_t *pos)
++      __acquires(root->lock)
++{
++      struct aa_profile *profile = NULL;
++      struct aa_namespace *root = aa_current_profile()->ns;
++      loff_t l = *pos;
++      f->private = aa_get_namespace(root);
++
++
++      /* find the first profile */
++      read_lock(&root->lock);
++      profile = __first_profile(root, root);
++
++      /* skip to position */
++      for (; profile && l > 0; l--)
++              profile = next_profile(root, profile);
++
++      return profile;
++}
++
++/**
++ * p_next - read the next profile entry
++ * @f: seq_file to fill
++ * @p: profile previously returned
++ * @pos: current position
++ *
++ * Returns: next profile after @p or NULL if none
++ *
++ * may acquire/release locks in namespace tree as necessary
++ */
++static void *p_next(struct seq_file *f, void *p, loff_t *pos)
++{
++      struct aa_profile *profile = p;
++      struct aa_namespace *root = f->private;
++      (*pos)++;
++
++      return next_profile(root, profile);
++}
++
++/**
++ * p_stop - stop depth first traversal
++ * @f: seq_file we are filling
++ * @p: the last profile writen
++ *
++ * Release all locking done by p_start/p_next on namespace tree
++ */
++static void p_stop(struct seq_file *f, void *p)
++      __releases(root->lock)
++{
++      struct aa_profile *profile = p;
++      struct aa_namespace *root = f->private, *ns;
++
++      if (profile) {
++              for (ns = profile->ns; ns && ns != root; ns = ns->parent)
++                      read_unlock(&ns->lock);
++      }
++      read_unlock(&root->lock);
++      aa_put_namespace(root);
++}
++
++/**
++ * seq_show_profile - show a profile entry
++ * @f: seq_file to file
++ * @p: current position (profile)    (NOT NULL)
++ *
++ * Returns: error on failure
++ */
++static int seq_show_profile(struct seq_file *f, void *p)
++{
++      struct aa_profile *profile = (struct aa_profile *)p;
++      struct aa_namespace *root = f->private;
++
++      if (profile->ns != root)
++              seq_printf(f, ":%s://", aa_ns_name(root, profile->ns));
++      seq_printf(f, "%s (%s)\n", profile->base.hname,
++                 COMPLAIN_MODE(profile) ? "complain" : "enforce");
++
++      return 0;
++}
++
++static const struct seq_operations aa_fs_profiles_op = {
++      .start = p_start,
++      .next = p_next,
++      .stop = p_stop,
++      .show = seq_show_profile,
++};
++
++static int profiles_open(struct inode *inode, struct file *file)
++{
++      return seq_open(file, &aa_fs_profiles_op);
++}
++
++static int profiles_release(struct inode *inode, struct file *file)
++{
++      return seq_release(inode, file);
++}
++
++const struct file_operations aa_fs_profiles_fops = {
++      .open = profiles_open,
++      .read = seq_read,
++      .llseek = seq_lseek,
++      .release = profiles_release,
++};
++
+ /** Base file system setup **/
+ static struct aa_fs_entry aa_fs_entry_file[] = {
+@@ -210,6 +436,7 @@ static struct aa_fs_entry aa_fs_entry_apparmor[] = {
+       AA_FS_FILE_FOPS(".load", 0640, &aa_fs_profile_load),
+       AA_FS_FILE_FOPS(".replace", 0640, &aa_fs_profile_replace),
+       AA_FS_FILE_FOPS(".remove", 0640, &aa_fs_profile_remove),
++      AA_FS_FILE_FOPS("profiles", 0640, &aa_fs_profiles_fops),
+       AA_FS_DIR("features", aa_fs_entry_features),
+       { }
+ };
+From: John Johansen <john.johansen@canonical.com>
+Date: Mon, 4 Oct 2010 22:03:36 +0000 (-0700)
+Subject: UBUNTU: SAUCE: AppArmor: basic networking rules
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjj%2Flinux-apparmor.git;a=commitdiff_plain;h=423e2cb454d75d6185eecd0c1b5cf6ccc2d8482d
+
+UBUNTU: SAUCE: AppArmor: basic networking rules
+
+Base support for network mediation.
 
 Signed-off-by: John Johansen <john.johansen@canonical.com>
 ---
- include/linux/lsm_audit.h          |    4 +
- security/apparmor/Makefile         |   19 ++++-
- security/apparmor/include/net.h    |   40 +++++++++
- security/apparmor/include/policy.h |    3 +
- security/apparmor/lsm.c            |  112 +++++++++++++++++++++++
- security/apparmor/net.c            |  170 ++++++++++++++++++++++++++++++++++++
- security/apparmor/policy.c         |    1 +
- security/apparmor/policy_unpack.c  |   48 ++++++++++-
- 8 files changed, 394 insertions(+), 3 deletions(-)
- create mode 100644 security/apparmor/include/net.h
- create mode 100644 security/apparmor/net.c
 
-diff --git a/include/linux/lsm_audit.h b/include/linux/lsm_audit.h
-index 112a550..d5f3dd7 100644
---- a/include/linux/lsm_audit.h
-+++ b/include/linux/lsm_audit.h
-@@ -123,6 +123,10 @@ struct common_audit_data {
-                                       u32 denied;
-                                       uid_t ouid;
-                               } fs;
-+                              struct {
-+                                      int type, protocol;
-+                                      struct sock *sk;
-+                              } net;
-                       };
-               } apparmor_audit_data;
- #endif
+diff --git a/security/apparmor/.gitignore b/security/apparmor/.gitignore
+index 4d995ae..d5b291e 100644
+--- a/security/apparmor/.gitignore
++++ b/security/apparmor/.gitignore
+@@ -1,6 +1,6 @@
+ #
+ # Generated include files
+ #
+-af_names.h
++net_names.h
+ capability_names.h
+ rlim_names.h
 diff --git a/security/apparmor/Makefile b/security/apparmor/Makefile
-index 2dafe50..7cefef9 100644
+index 806bd19..19daa85 100644
 --- a/security/apparmor/Makefile
 +++ b/security/apparmor/Makefile
 @@ -4,9 +4,9 @@ obj-$(CONFIG_SECURITY_APPARMOR) += apparmor.o
@@ -46,49 +294,106 @@ index 2dafe50..7cefef9 100644
 +              resource.o sid.o file.o net.o
  
 -clean-files := capability_names.h rlim_names.h
-+clean-files := capability_names.h rlim_names.h af_names.h
++clean-files := capability_names.h rlim_names.h net_names.h
  
  
  # Build a lower case string table of capability names
-@@ -44,9 +44,24 @@ cmd_make-rlim = echo "static const char *rlim_names[] = {" > $@ ;\
-       sed -r -n "s/^\# ?define[ \t]+(RLIMIT_[A-Z0-9_]+).*/\1,/p" $< >> $@ ;\
+@@ -20,6 +20,38 @@ cmd_make-caps = echo "static const char *const capability_names[] = {" > $@ ;\
+       -e 's/^\#define[ \t]+CAP_([A-Z0-9_]+)[ \t]+([0-9]+)/[\2] = "\L\1",/p';\
        echo "};" >> $@
  
-+# Build a lower case string table of address family names.
++# Build a lower case string table of address family names
 +# Transform lines from
-+# #define AF_INET             2       /* Internet IP Protocol         */
++#    define AF_LOCAL  1       /* POSIX name for AF_UNIX       */
++#    #define AF_INET          2       /* Internet IP Protocol         */
++# to
++#    [1] = "local",
++#    [2] = "inet",
++#
++# and build the securityfs entries for the mapping.
++# Transforms lines from
++#    #define AF_INET          2       /* Internet IP Protocol         */
 +# to
-+# [2] = "inet",
++#    #define AA_FS_AF_MASK "local inet"
 +quiet_cmd_make-af = GEN     $@
 +cmd_make-af = echo "static const char *address_family_names[] = {" > $@ ;\
-+      sed $< >> $@ -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e \
-+        's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+).*/[\2] = "\L\1",/p';\
++      sed $< >>$@ -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e \
++       's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\
++      echo "};" >> $@ ;\
++      echo -n '\#define AA_FS_AF_MASK "' >> $@ ;\
++      sed -r -n 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/\L\1/p'\
++       $< | tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@
++
++# Build a lower case string table of sock type names
++# Transform lines from
++#    SOCK_STREAM      = 1,
++# to
++#    [1] = "stream",
++quiet_cmd_make-sock = GEN     $@
++cmd_make-sock = echo "static const char *sock_type_names[] = {" >> $@ ;\
++      sed $^ >>$@ -r -n \
++      -e 's/^\tSOCK_([A-Z0-9_]+)[\t]+=[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\
 +      echo "};" >> $@
-+
-+
+ # Build a lower case string table of rlimit names.
+ # Transforms lines from
+@@ -56,6 +88,7 @@ cmd_make-rlim = echo "static const char *const rlim_names[RLIM_NLIMITS] = {" \
+           tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@
  $(obj)/capability.o : $(obj)/capability_names.h
++$(obj)/net.o : $(obj)/net_names.h
  $(obj)/resource.o : $(obj)/rlim_names.h
-+$(obj)/net.o : $(obj)/af_names.h
- $(obj)/capability_names.h : $(srctree)/include/linux/capability.h
-       $(call cmd,make-caps)
- $(obj)/rlim_names.h : $(srctree)/include/asm-generic/resource.h
+ $(obj)/capability_names.h : $(srctree)/include/linux/capability.h \
+                           $(src)/Makefile
+@@ -63,3 +96,8 @@ $(obj)/capability_names.h : $(srctree)/include/linux/capability.h \
+ $(obj)/rlim_names.h : $(srctree)/include/asm-generic/resource.h \
+                     $(src)/Makefile
        $(call cmd,make-rlim)
-+$(obj)/af_names.h : $(srctree)/include/linux/socket.h
++$(obj)/net_names.h : $(srctree)/include/linux/socket.h \
++                   $(srctree)/include/linux/net.h \
++                   $(src)/Makefile
 +      $(call cmd,make-af)
-\ No newline at end of file
++      $(call cmd,make-sock)
+diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c
+index 89bdc62..c66315d 100644
+--- a/security/apparmor/apparmorfs.c
++++ b/security/apparmor/apparmorfs.c
+@@ -427,6 +427,7 @@ static struct aa_fs_entry aa_fs_entry_domain[] = {
+ static struct aa_fs_entry aa_fs_entry_features[] = {
+       AA_FS_DIR("domain",                     aa_fs_entry_domain),
+       AA_FS_DIR("file",                       aa_fs_entry_file),
++      AA_FS_DIR("network",                    aa_fs_entry_network),
+       AA_FS_FILE_U64("capability",            VFS_CAP_FLAGS_MASK),
+       AA_FS_DIR("rlimit",                     aa_fs_entry_rlimit),
+       { }
+diff --git a/security/apparmor/include/audit.h b/security/apparmor/include/audit.h
+index 3868b1e..c1ff09c 100644
+--- a/security/apparmor/include/audit.h
++++ b/security/apparmor/include/audit.h
+@@ -126,6 +126,10 @@ struct apparmor_audit_data {
+                       u32 denied;
+                       uid_t ouid;
+               } fs;
++              struct {
++                      int type, protocol;
++                      struct sock *sk;
++              } net;
+       };
+ };
 diff --git a/security/apparmor/include/net.h b/security/apparmor/include/net.h
 new file mode 100644
-index 0000000..3c7d599
+index 0000000..cb8a121
 --- /dev/null
 +++ b/security/apparmor/include/net.h
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,44 @@
 +/*
 + * AppArmor security module
 + *
 + * This file contains AppArmor network mediation definitions.
 + *
 + * Copyright (C) 1998-2008 Novell/SUSE
-+ * Copyright 2009-2010 Canonical Ltd.
++ * Copyright 2009-2012 Canonical Ltd.
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License as
@@ -101,6 +406,8 @@ index 0000000..3c7d599
 +
 +#include <net/sock.h>
 +
++#include "apparmorfs.h"
++
 +/* struct aa_net - network confinement data
 + * @allowed: basic network families permissions
 + * @audit_network: which network permissions to force audit
@@ -112,6 +419,8 @@ index 0000000..3c7d599
 +      u16 quiet[AF_MAX];
 +};
 +
++extern struct aa_fs_entry aa_fs_entry_network[];
++
 +extern int aa_net_perm(int op, struct aa_profile *profile, u16 family,
 +                     int type, int protocol, struct sock *sk);
 +extern int aa_revalidate_sk(int op, struct sock *sk);
@@ -123,7 +432,7 @@ index 0000000..3c7d599
 +
 +#endif /* __AA_NET_H */
 diff --git a/security/apparmor/include/policy.h b/security/apparmor/include/policy.h
-index aeda5cf..6776929 100644
+index bda4569..eb13a73 100644
 --- a/security/apparmor/include/policy.h
 +++ b/security/apparmor/include/policy.h
 @@ -27,6 +27,7 @@
@@ -133,17 +442,17 @@ index aeda5cf..6776929 100644
 +#include "net.h"
  #include "resource.h"
  
- extern const char *profile_mode_names[];
-@@ -145,6 +146,7 @@ struct aa_namespace {
-  * @size: the memory consumed by this profiles rules
+ extern const char *const profile_mode_names[];
+@@ -157,6 +158,7 @@ struct aa_policydb {
+  * @policy: general match rules governing policy
   * @file: The set of rules governing basic file access and domain transitions
   * @caps: capabilities for the profile
 + * @net: network controls for the profile
   * @rlimits: rlimits for the profile
   *
   * The AppArmor profile contains the basic confinement data.  Each profile
-@@ -181,6 +183,7 @@ struct aa_profile {
+@@ -194,6 +196,7 @@ struct aa_profile {
+       struct aa_policydb policy;
        struct aa_file_rules file;
        struct aa_caps caps;
 +      struct aa_net net;
@@ -151,7 +460,7 @@ index aeda5cf..6776929 100644
  };
  
 diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
-index ae3a698..05c018b 100644
+index ad05d39..3cde194 100644
 --- a/security/apparmor/lsm.c
 +++ b/security/apparmor/lsm.c
 @@ -32,6 +32,7 @@
@@ -162,7 +471,7 @@ index ae3a698..05c018b 100644
  #include "include/path.h"
  #include "include/policy.h"
  #include "include/procattr.h"
-@@ -610,5 +611,103 @@ static int apparmor_task_setrlimit(struct task_struct *task,
+@@ -622,6 +623,104 @@ static int apparmor_task_setrlimit(struct task_struct *task,
        return error;
  }
  
@@ -264,9 +573,10 @@ index ae3a698..05c018b 100644
 +      return aa_revalidate_sk(OP_SOCK_SHUTDOWN, sk);
 +}
 +
- static int apparmor_task_setrlimit(struct task_struct *task,
-               unsigned int resource, struct rlimit *new_rlim)
-@@ -651,6 +750,19 @@ static struct security_operations apparmor_ops = {
+ static struct security_operations apparmor_ops = {
+       .name =                         "apparmor",
+@@ -653,6 +752,19 @@ static struct security_operations apparmor_ops = {
        .getprocattr =                  apparmor_getprocattr,
        .setprocattr =                  apparmor_setprocattr,
  
@@ -288,17 +598,17 @@ index ae3a698..05c018b 100644
        .cred_prepare =                 apparmor_cred_prepare,
 diff --git a/security/apparmor/net.c b/security/apparmor/net.c
 new file mode 100644
-index 0000000..1765901
+index 0000000..084232b
 --- /dev/null
 +++ b/security/apparmor/net.c
-@@ -0,0 +1,170 @@
+@@ -0,0 +1,162 @@
 +/*
 + * AppArmor security module
 + *
 + * This file contains AppArmor network mediation
 + *
 + * Copyright (C) 1998-2008 Novell/SUSE
-+ * Copyright 2009-2010 Canonical Ltd.
++ * Copyright 2009-2012 Canonical Ltd.
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License as
@@ -312,20 +622,11 @@ index 0000000..1765901
 +#include "include/net.h"
 +#include "include/policy.h"
 +
-+#include "af_names.h"
-+
-+static const char *sock_type_names[] = {
-+      "unknown(0)",
-+      "stream",
-+      "dgram",
-+      "raw",
-+      "rdm",
-+      "seqpacket",
-+      "dccp",
-+      "unknown(7)",
-+      "unknown(8)",
-+      "unknown(9)",
-+      "packet",
++#include "net_names.h"
++
++struct aa_fs_entry aa_fs_entry_network[] = {
++      AA_FS_FILE_STRING("af_mask", AA_FS_AF_MASK),
++      { }
 +};
 +
 +/* audit callback for net specific fields */
@@ -334,20 +635,18 @@ index 0000000..1765901
 +      struct common_audit_data *sa = va;
 +
 +      audit_log_format(ab, " family=");
-+      if (address_family_names[sa->u.net.family]) {
-+              audit_log_string(ab, address_family_names[sa->u.net.family]);
++      if (address_family_names[sa->u.net->family]) {
++              audit_log_string(ab, address_family_names[sa->u.net->family]);
 +      } else {
-+              audit_log_format(ab, " \"unknown(%d)\"", sa->u.net.family);
++              audit_log_format(ab, "\"unknown(%d)\"", sa->u.net->family);
 +      }
-+
 +      audit_log_format(ab, " sock_type=");
-+      if (sock_type_names[sa->aad.net.type]) {
-+              audit_log_string(ab, sock_type_names[sa->aad.net.type]);
++      if (sock_type_names[sa->aad->net.type]) {
++              audit_log_string(ab, sock_type_names[sa->aad->net.type]);
 +      } else {
-+              audit_log_format(ab, "\"unknown(%d)\"", sa->aad.net.type);
++              audit_log_format(ab, "\"unknown(%d)\"", sa->aad->net.type);
 +      }
-+
-+      audit_log_format(ab, " protocol=%d", sa->aad.net.protocol);
++      audit_log_format(ab, " protocol=%d", sa->aad->net.protocol);
 +}
 +
 +/**
@@ -367,30 +666,33 @@ index 0000000..1765901
 +{
 +      int audit_type = AUDIT_APPARMOR_AUTO;
 +      struct common_audit_data sa;
++      struct apparmor_audit_data aad = { };
++      struct lsm_network_audit net = { };
 +      if (sk) {
 +              COMMON_AUDIT_DATA_INIT(&sa, NET);
 +      } else {
 +              COMMON_AUDIT_DATA_INIT(&sa, NONE);
 +      }
 +      /* todo fill in socket addr info */
-+
-+      sa.aad.op = op,
-+      sa.u.net.family = family;
-+      sa.u.net.sk = sk;
-+      sa.aad.net.type = type;
-+      sa.aad.net.protocol = protocol;
-+      sa.aad.error = error;
-+
-+      if (likely(!sa.aad.error)) {
-+              u16 audit_mask = profile->net.audit[sa.u.net.family];
++      sa.aad = &aad;
++      sa.u.net = &net;
++      sa.aad->op = op,
++      sa.u.net->family = family;
++      sa.u.net->sk = sk;
++      sa.aad->net.type = type;
++      sa.aad->net.protocol = protocol;
++      sa.aad->error = error;
++
++      if (likely(!sa.aad->error)) {
++              u16 audit_mask = profile->net.audit[sa.u.net->family];
 +              if (likely((AUDIT_MODE(profile) != AUDIT_ALL) &&
-+                         !(1 << sa.aad.net.type & audit_mask)))
++                         !(1 << sa.aad->net.type & audit_mask)))
 +                      return 0;
 +              audit_type = AUDIT_APPARMOR_AUDIT;
 +      } else {
-+              u16 quiet_mask = profile->net.quiet[sa.u.net.family];
++              u16 quiet_mask = profile->net.quiet[sa.u.net->family];
 +              u16 kill_mask = 0;
-+              u16 denied = (1 << sa.aad.net.type) & ~quiet_mask;
++              u16 denied = (1 << sa.aad->net.type) & ~quiet_mask;
 +
 +              if (denied & kill_mask)
 +                      audit_type = AUDIT_APPARMOR_KILL;
@@ -398,7 +700,7 @@ index 0000000..1765901
 +              if ((denied & quiet_mask) &&
 +                  AUDIT_MODE(profile) != AUDIT_NOQUIET &&
 +                  AUDIT_MODE(profile) != AUDIT_ALL)
-+                      return COMPLAIN_MODE(profile) ? 0 : sa.aad.error;
++                      return COMPLAIN_MODE(profile) ? 0 : sa.aad->error;
 +      }
 +
 +      return aa_audit(audit_type, profile, GFP_KERNEL, &sa, audit_cb);
@@ -463,7 +765,7 @@ index 0000000..1765901
 +      return error;
 +}
 diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c
-index 4f0eade..4d5ce13 100644
+index f1f7506..b8100a7 100644
 --- a/security/apparmor/policy.c
 +++ b/security/apparmor/policy.c
 @@ -745,6 +745,7 @@ static void free_profile(struct aa_profile *profile)
@@ -475,10 +777,10 @@ index 4f0eade..4d5ce13 100644
  
        aa_free_sid(profile->sid);
 diff --git a/security/apparmor/policy_unpack.c b/security/apparmor/policy_unpack.c
-index e33aaf7..fa3f1b4 100644
+index deab7c7..8f8e9c1 100644
 --- a/security/apparmor/policy_unpack.c
 +++ b/security/apparmor/policy_unpack.c
-@@ -190,6 +190,19 @@ fail:
+@@ -193,6 +193,19 @@ fail:
        return 0;
  }
  
@@ -498,17 +800,15 @@ index e33aaf7..fa3f1b4 100644
  static bool unpack_u32(struct aa_ext *e, u32 *data, const char *name)
  {
        if (unpack_nameX(e, AA_U32, name)) {
-@@ -468,7 +481,8 @@ static struct aa_profile *unpack_profile(struct aa_ext *e)
+@@ -471,6 +484,7 @@ static struct aa_profile *unpack_profile(struct aa_ext *e)
  {
        struct aa_profile *profile = NULL;
        const char *name = NULL;
--      int error = -EPROTO;
 +      size_t size = 0;
-+      int i, error = -EPROTO;
+       int i, error = -EPROTO;
        kernel_cap_t tmpcap;
        u32 tmp;
-@@ -559,6 +573,38 @@ static struct aa_profile *unpack_profile(struct aa_ext *e)
+@@ -564,6 +578,38 @@ static struct aa_profile *unpack_profile(struct aa_ext *e)
        if (!unpack_rlimits(e, profile))
                goto fail;
  
@@ -536,476 +836,956 @@ index e33aaf7..fa3f1b4 100644
 +              }
 +              if (!unpack_nameX(e, AA_ARRAYEND, NULL))
 +                      goto fail;
-+              /*
-+               * allow unix domain and netlink sockets they are handled
-+               * by IPC
-+               */
 +      }
++      /*
++       * allow unix domain and netlink sockets they are handled
++       * by IPC
++       */
 +      profile->net.allow[AF_UNIX] = 0xffff;
 +      profile->net.allow[AF_NETLINK] = 0xffff;
 +
-       /* get file rules */
-       profile->file.dfa = unpack_dfa(e);
-       if (IS_ERR(profile->file.dfa)) {
--- 
-1.7.0.4
-
-From cdc6b35345e5bcfe92bb2b52ef003f94ceedd40d Mon Sep 17 00:00:00 2001
+       if (unpack_nameX(e, AA_STRUCT, "policydb")) {
+               /* generic policy dfa - optional and may be NULL */
+               profile->policy.dfa = unpack_dfa(e);
 From: John Johansen <john.johansen@canonical.com>
-Date: Thu, 22 Jul 2010 02:32:02 -0700
-Subject: [PATCH 2/3] AppArmor: compatibility patch for v5 interface
+Date: Wed, 16 May 2012 17:58:05 +0000 (-0700)
+Subject: UBUNTU: SAUCE: apparmor: Add the ability to mediate mount
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjj%2Flinux-apparmor.git;a=commitdiff_plain;h=a94d5e11c0484af59e5feebf144cc48c186892ad
+
+UBUNTU: SAUCE: apparmor: Add the ability to mediate mount
+
+Add the ability for apparmor to do mediation of mount operations. Mount
+rules require an updated apparmor_parser (2.8 series) for policy compilation.
+
+The basic form of the rules are.
+
+  [audit] [deny] mount [conds]* [device] [ -> [conds] path],
+  [audit] [deny] remount [conds]* [path],
+  [audit] [deny] umount [conds]* [path],
+  [audit] [deny] pivotroot [oldroot=<value>] <path>
+
+  remount is just a short cut for mount options=remount
+
+  where [conds] can be
+    fstype=<expr>
+    options=<expr>
+
+Example mount commands
+  mount,               # allow all mounts, but not umount or pivotroot
+
+  mount fstype=procfs,  # allow mounting procfs anywhere
+
+  mount options=(bind, ro) /foo -> /bar,  # readonly bind mount
+
+  mount /dev/sda -> /mnt,
+
+  mount /dev/sd** -> /mnt/**,
+
+  mount fstype=overlayfs options=(rw,upperdir=/tmp/upper/,lowerdir=/) -> /mnt/
+
+  umount,
+
+  umount /m*,
+
+See the apparmor userspace for full documentation
 
 Signed-off-by: John Johansen <john.johansen@canonical.com>
+Acked-by: Kees Cook <kees@ubuntu.com>
 ---
- security/apparmor/Kconfig              |    9 +
- security/apparmor/Makefile             |    1 +
- security/apparmor/apparmorfs-24.c      |  287 ++++++++++++++++++++++++++++++++
- security/apparmor/apparmorfs.c         |   18 ++-
- security/apparmor/include/apparmorfs.h |    6 +
- 5 files changed, 319 insertions(+), 2 deletions(-)
- create mode 100644 security/apparmor/apparmorfs-24.c
 
-diff --git a/security/apparmor/Kconfig b/security/apparmor/Kconfig
-index 9b9013b..51ebf96 100644
---- a/security/apparmor/Kconfig
-+++ b/security/apparmor/Kconfig
-@@ -29,3 +29,12 @@ config SECURITY_APPARMOR_BOOTPARAM_VALUE
-         boot.
-         If you are unsure how to answer this question, answer 1.
-+
-+config SECURITY_APPARMOR_COMPAT_24
-+      bool "Enable AppArmor 2.4 compatability"
-+      depends on SECURITY_APPARMOR
-+      default y
-+      help
-+        This option enables compatability with AppArmor 2.4.  It is
-+          recommended if compatability with older versions of AppArmor
-+          is desired.
 diff --git a/security/apparmor/Makefile b/security/apparmor/Makefile
-index 7cefef9..0bb604b 100644
+index 19daa85..63e0a4c 100644
 --- a/security/apparmor/Makefile
 +++ b/security/apparmor/Makefile
-@@ -5,6 +5,7 @@ obj-$(CONFIG_SECURITY_APPARMOR) += apparmor.o
+@@ -4,7 +4,7 @@ obj-$(CONFIG_SECURITY_APPARMOR) += apparmor.o
  apparmor-y := apparmorfs.o audit.o capability.o context.o ipc.o lib.o match.o \
                path.o domain.o policy.o policy_unpack.o procattr.o lsm.o \
-               resource.o sid.o file.o net.o
-+apparmor-$(CONFIG_SECURITY_APPARMOR_COMPAT_24) += apparmorfs-24.o
+-              resource.o sid.o file.o net.o
++              resource.o sid.o file.o net.o mount.o
  
- clean-files := capability_names.h rlim_names.h af_names.h
+ clean-files := capability_names.h rlim_names.h net_names.h
  
-diff --git a/security/apparmor/apparmorfs-24.c b/security/apparmor/apparmorfs-24.c
+diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c
+index c66315d..ff19009 100644
+--- a/security/apparmor/apparmorfs.c
++++ b/security/apparmor/apparmorfs.c
+@@ -424,10 +424,23 @@ static struct aa_fs_entry aa_fs_entry_domain[] = {
+       { }
+ };
++static struct aa_fs_entry aa_fs_entry_mount[] = {
++      AA_FS_FILE_STRING("mask", "mount umount"),
++      { }
++};
++
++static struct aa_fs_entry aa_fs_entry_namespaces[] = {
++      AA_FS_FILE_BOOLEAN("profile",           1),
++      AA_FS_FILE_BOOLEAN("pivot_root",        1),
++      { }
++};
++
+ static struct aa_fs_entry aa_fs_entry_features[] = {
+       AA_FS_DIR("domain",                     aa_fs_entry_domain),
+       AA_FS_DIR("file",                       aa_fs_entry_file),
+       AA_FS_DIR("network",                    aa_fs_entry_network),
++      AA_FS_DIR("mount",                      aa_fs_entry_mount),
++      AA_FS_DIR("namespaces",                 aa_fs_entry_namespaces),
+       AA_FS_FILE_U64("capability",            VFS_CAP_FLAGS_MASK),
+       AA_FS_DIR("rlimit",                     aa_fs_entry_rlimit),
+       { }
+diff --git a/security/apparmor/audit.c b/security/apparmor/audit.c
+index cc3520d..b9f5ee9 100644
+--- a/security/apparmor/audit.c
++++ b/security/apparmor/audit.c
+@@ -44,6 +44,10 @@ const char *const op_table[] = {
+       "file_mmap",
+       "file_mprotect",
++      "pivotroot",
++      "mount",
++      "umount",
++
+       "create",
+       "post_create",
+       "bind",
+diff --git a/security/apparmor/domain.c b/security/apparmor/domain.c
+index 6327685..dfdc47b 100644
+--- a/security/apparmor/domain.c
++++ b/security/apparmor/domain.c
+@@ -242,7 +242,7 @@ static const char *next_name(int xtype, const char *name)
+  *
+  * Returns: refcounted profile, or NULL on failure (MAYBE NULL)
+  */
+-static struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex)
++struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex)
+ {
+       struct aa_profile *new_profile = NULL;
+       struct aa_namespace *ns = profile->ns;
+diff --git a/security/apparmor/include/apparmor.h b/security/apparmor/include/apparmor.h
+index 40aedd9..e243d96 100644
+--- a/security/apparmor/include/apparmor.h
++++ b/security/apparmor/include/apparmor.h
+@@ -29,8 +29,9 @@
+ #define AA_CLASS_NET          4
+ #define AA_CLASS_RLIMITS      5
+ #define AA_CLASS_DOMAIN               6
++#define AA_CLASS_MOUNT                7
+-#define AA_CLASS_LAST         AA_CLASS_DOMAIN
++#define AA_CLASS_LAST         AA_CLASS_MOUNT
+ /* Control parameters settable through module/boot flags */
+ extern enum audit_mode aa_g_audit;
+diff --git a/security/apparmor/include/audit.h b/security/apparmor/include/audit.h
+index c1ff09c..7b90900c 100644
+--- a/security/apparmor/include/audit.h
++++ b/security/apparmor/include/audit.h
+@@ -73,6 +73,10 @@ enum aa_ops {
+       OP_FMMAP,
+       OP_FMPROT,
++      OP_PIVOTROOT,
++      OP_MOUNT,
++      OP_UMOUNT,
++
+       OP_CREATE,
+       OP_POST_CREATE,
+       OP_BIND,
+@@ -121,6 +125,13 @@ struct apparmor_audit_data {
+                       unsigned long max;
+               } rlim;
+               struct {
++                      const char *src_name;
++                      const char *type;
++                      const char *trans;
++                      const char *data;
++                      unsigned long flags;
++              } mnt;
++              struct {
+                       const char *target;
+                       u32 request;
+                       u32 denied;
+diff --git a/security/apparmor/include/domain.h b/security/apparmor/include/domain.h
+index de04464..a3f70c5 100644
+--- a/security/apparmor/include/domain.h
++++ b/security/apparmor/include/domain.h
+@@ -23,6 +23,8 @@ struct aa_domain {
+       char **table;
+ };
++struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex);
++
+ int apparmor_bprm_set_creds(struct linux_binprm *bprm);
+ int apparmor_bprm_secureexec(struct linux_binprm *bprm);
+ void apparmor_bprm_committing_creds(struct linux_binprm *bprm);
+diff --git a/security/apparmor/include/mount.h b/security/apparmor/include/mount.h
 new file mode 100644
-index 0000000..dc8c744
+index 0000000..bc17a53
 --- /dev/null
-+++ b/security/apparmor/apparmorfs-24.c
-@@ -0,0 +1,287 @@
++++ b/security/apparmor/include/mount.h
+@@ -0,0 +1,54 @@
 +/*
 + * AppArmor security module
 + *
-+ * This file contains AppArmor /sys/kernel/secrutiy/apparmor interface functions
++ * This file contains AppArmor file mediation function definitions.
 + *
-+ * Copyright (C) 1998-2008 Novell/SUSE
-+ * Copyright 2009-2010 Canonical Ltd.
++ * Copyright 2012 Canonical Ltd.
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License as
 + * published by the Free Software Foundation, version 2 of the
 + * License.
-+ *
-+ *
-+ * This file contain functions providing an interface for <= AppArmor 2.4
-+ * compatibility.  It is dependent on CONFIG_SECURITY_APPARMOR_COMPAT_24
-+ * being set (see Makefile).
 + */
 +
-+#include <linux/security.h>
-+#include <linux/vmalloc.h>
-+#include <linux/module.h>
-+#include <linux/seq_file.h>
-+#include <linux/uaccess.h>
-+#include <linux/namei.h>
++#ifndef __AA_MOUNT_H
++#define __AA_MOUNT_H
 +
-+#include "include/apparmor.h"
-+#include "include/audit.h"
-+#include "include/context.h"
-+#include "include/policy.h"
++#include <linux/fs.h>
++#include <linux/path.h>
 +
++#include "domain.h"
++#include "policy.h"
 +
-+/* apparmor/matching */
-+static ssize_t aa_matching_read(struct file *file, char __user *buf,
-+                              size_t size, loff_t *ppos)
-+{
-+      const char matching[] = "pattern=aadfa audit perms=crwxamlk/ "
-+          "user::other";
++/* mount perms */
++#define AA_MAY_PIVOTROOT      0x01
++#define AA_MAY_MOUNT          0x02
++#define AA_MAY_UMOUNT         0x04
++#define AA_AUDIT_DATA         0x40
++#define AA_CONT_MATCH         0x40
 +
-+      return simple_read_from_buffer(buf, size, ppos, matching,
-+                                     sizeof(matching) - 1);
-+}
++#define AA_MS_IGNORE_MASK (MS_KERNMOUNT | MS_NOSEC | MS_ACTIVE | MS_BORN)
 +
-+const struct file_operations aa_fs_matching_fops = {
-+      .read = aa_matching_read,
-+};
++int aa_remount(struct aa_profile *profile, struct path *path,
++             unsigned long flags, void *data);
 +
-+/* apparmor/features */
-+static ssize_t aa_features_read(struct file *file, char __user *buf,
-+                              size_t size, loff_t *ppos)
-+{
-+      const char features[] = "file=3.1 capability=2.0 network=1.0 "
-+          "change_hat=1.5 change_profile=1.1 " "aanamespaces=1.1 rlimit=1.1";
++int aa_bind_mount(struct aa_profile *profile, struct path *path,
++                const char *old_name, unsigned long flags);
 +
-+      return simple_read_from_buffer(buf, size, ppos, features,
-+                                     sizeof(features) - 1);
-+}
 +
-+const struct file_operations aa_fs_features_fops = {
-+      .read = aa_features_read,
-+};
++int aa_mount_change_type(struct aa_profile *profile, struct path *path,
++                       unsigned long flags);
 +
-+/**
-+ * __next_namespace - find the next namespace to list
-+ * @root: root namespace to stop search at (NOT NULL)
-+ * @ns: current ns position (NOT NULL)
-+ *
-+ * Find the next namespace from @ns under @root and handle all locking needed
-+ * while switching current namespace.
-+ *
-+ * Returns: next namespace or NULL if at last namespace under @root
-+ * NOTE: will not unlock root->lock
-+ */
-+static struct aa_namespace *__next_namespace(struct aa_namespace *root,
-+                                           struct aa_namespace *ns)
++int aa_move_mount(struct aa_profile *profile, struct path *path,
++                const char *old_name);
++
++int aa_new_mount(struct aa_profile *profile, const char *dev_name,
++               struct path *path, const char *type, unsigned long flags,
++               void *data);
++
++int aa_umount(struct aa_profile *profile, struct vfsmount *mnt, int flags);
++
++int aa_pivotroot(struct aa_profile *profile, struct path *old_path,
++                struct path *new_path);
++
++#endif /* __AA_MOUNT_H */
+diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
+index 3cde194..4512cc6 100644
+--- a/security/apparmor/lsm.c
++++ b/security/apparmor/lsm.c
+@@ -36,6 +36,7 @@
+ #include "include/path.h"
+ #include "include/policy.h"
+ #include "include/procattr.h"
++#include "include/mount.h"
+ /* Flag indicating whether initialization completed */
+ int apparmor_initialized __initdata;
+@@ -512,6 +513,60 @@ static int apparmor_file_mprotect(struct vm_area_struct *vma,
+                          !(vma->vm_flags & VM_SHARED) ? MAP_PRIVATE : 0);
+ }
++static int apparmor_sb_mount(char *dev_name, struct path *path, char *type,
++                           unsigned long flags, void *data)
 +{
-+      struct aa_namespace *parent;
++      struct aa_profile *profile;
++      int error = 0;
 +
-+      /* is next namespace a child */
-+      if (!list_empty(&ns->sub_ns)) {
-+              struct aa_namespace *next;
-+              next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list);
-+              read_lock(&next->lock);
-+              return next;
-+      }
++      /* Discard magic */
++      if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
++              flags &= ~MS_MGC_MSK;
 +
-+      /* check if the next ns is a sibling, parent, gp, .. */
-+      parent = ns->parent;
-+      while (parent) {
-+              read_unlock(&ns->lock);
-+              list_for_each_entry_continue(ns, &parent->sub_ns, base.list) {
-+                      read_lock(&ns->lock);
-+                      return ns;
-+              }
-+              if (parent == root)
-+                      return NULL;
-+              ns = parent;
-+              parent = parent->parent;
++      flags &= ~AA_MS_IGNORE_MASK;
++
++      profile = __aa_current_profile();
++      if (!unconfined(profile)) {
++              if (flags & MS_REMOUNT)
++                      error = aa_remount(profile, path, flags, data);
++              else if (flags & MS_BIND)
++                      error = aa_bind_mount(profile, path, dev_name, flags);
++              else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE |
++                                MS_UNBINDABLE))
++                      error = aa_mount_change_type(profile, path, flags);
++              else if (flags & MS_MOVE)
++                      error = aa_move_mount(profile, path, dev_name);
++              else
++                      error = aa_new_mount(profile, dev_name, path, type,
++                                           flags, data);
 +      }
++      return error;
++}
 +
-+      return NULL;
++static int apparmor_sb_umount(struct vfsmount *mnt, int flags)
++{
++      struct aa_profile *profile;
++      int error = 0;
++
++      profile = __aa_current_profile();
++      if (!unconfined(profile))
++              error = aa_umount(profile, mnt, flags);
++
++      return error;
 +}
 +
-+/**
-+ * __first_profile - find the first profile in a namespace
-+ * @root: namespace that is root of profiles being displayed (NOT NULL)
-+ * @ns: namespace to start in   (NOT NULL)
-+ *
-+ * Returns: unrefcounted profile or NULL if no profile
-+ */
-+static struct aa_profile *__first_profile(struct aa_namespace *root,
-+                                        struct aa_namespace *ns)
++static int apparmor_sb_pivotroot(struct path *old_path, struct path *new_path)
 +{
-+      for ( ; ns; ns = __next_namespace(root, ns)) {
-+              if (!list_empty(&ns->base.profiles))
-+                      return list_first_entry(&ns->base.profiles,
-+                                              struct aa_profile, base.list);
-+      }
-+      return NULL;
++      struct aa_profile *profile;
++      int error = 0;
++
++      profile = __aa_current_profile();
++      if (!unconfined(profile))
++              error = aa_pivotroot(profile, old_path, new_path);
++
++      return error;
 +}
 +
-+/**
-+ * __next_profile - step to the next profile in a profile tree
-+ * @profile: current profile in tree (NOT NULL)
+ static int apparmor_getprocattr(struct task_struct *task, char *name,
+                               char **value)
+ {
+@@ -729,6 +784,10 @@ static struct security_operations apparmor_ops = {
+       .capget =                       apparmor_capget,
+       .capable =                      apparmor_capable,
++      .sb_mount =                     apparmor_sb_mount,
++      .sb_umount =                    apparmor_sb_umount,
++      .sb_pivotroot =                 apparmor_sb_pivotroot,
++
+       .path_link =                    apparmor_path_link,
+       .path_unlink =                  apparmor_path_unlink,
+       .path_symlink =                 apparmor_path_symlink,
+diff --git a/security/apparmor/mount.c b/security/apparmor/mount.c
+new file mode 100644
+index 0000000..63d8493
+--- /dev/null
++++ b/security/apparmor/mount.c
+@@ -0,0 +1,620 @@
++/*
++ * AppArmor security module
 + *
-+ * Perform a depth first taversal on the profile tree in a namespace
++ * This file contains AppArmor mediation of files
 + *
-+ * Returns: next profile or NULL if done
-+ * Requires: profile->ns.lock to be held
++ * Copyright (C) 1998-2008 Novell/SUSE
++ * Copyright 2009-2012 Canonical Ltd.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License as
++ * published by the Free Software Foundation, version 2 of the
++ * License.
 + */
-+static struct aa_profile *__next_profile(struct aa_profile *p)
-+{
-+      struct aa_profile *parent;
-+      struct aa_namespace *ns = p->ns;
 +
-+      /* is next profile a child */
-+      if (!list_empty(&p->base.profiles))
-+              return list_first_entry(&p->base.profiles, typeof(*p),
-+                                      base.list);
++#include <linux/fs.h>
++#include <linux/mount.h>
++#include <linux/namei.h>
 +
-+      /* is next profile a sibling, parent sibling, gp, subling, .. */
-+      parent = p->parent;
-+      while (parent) {
-+              list_for_each_entry_continue(p, &parent->base.profiles,
-+                                           base.list)
-+                              return p;
-+              p = parent;
-+              parent = parent->parent;
-+      }
++#include "include/apparmor.h"
++#include "include/audit.h"
++#include "include/context.h"
++#include "include/domain.h"
++#include "include/file.h"
++#include "include/match.h"
++#include "include/mount.h"
++#include "include/path.h"
++#include "include/policy.h"
 +
-+      /* is next another profile in the namespace */
-+      list_for_each_entry_continue(p, &ns->base.profiles, base.list)
-+              return p;
 +
-+      return NULL;
++static void audit_mnt_flags(struct audit_buffer *ab, unsigned long flags)
++{
++      if (flags & MS_RDONLY)
++              audit_log_format(ab, "ro");
++      else
++              audit_log_format(ab, "rw");
++      if (flags & MS_NOSUID)
++              audit_log_format(ab, ", nosuid");
++      if (flags & MS_NODEV)
++              audit_log_format(ab, ", nodev");
++      if (flags & MS_NOEXEC)
++              audit_log_format(ab, ", noexec");
++      if (flags & MS_SYNCHRONOUS)
++              audit_log_format(ab, ", sync");
++      if (flags & MS_REMOUNT)
++              audit_log_format(ab, ", remount");
++      if (flags & MS_MANDLOCK)
++              audit_log_format(ab, ", mand");
++      if (flags & MS_DIRSYNC)
++              audit_log_format(ab, ", dirsync");
++      if (flags & MS_NOATIME)
++              audit_log_format(ab, ", noatime");
++      if (flags & MS_NODIRATIME)
++              audit_log_format(ab, ", nodiratime");
++      if (flags & MS_BIND)
++              audit_log_format(ab, flags & MS_REC ? ", rbind" : ", bind");
++      if (flags & MS_MOVE)
++              audit_log_format(ab, ", move");
++      if (flags & MS_SILENT)
++              audit_log_format(ab, ", silent");
++      if (flags & MS_POSIXACL)
++              audit_log_format(ab, ", acl");
++      if (flags & MS_UNBINDABLE)
++              audit_log_format(ab, flags & MS_REC ? ", runbindable" :
++                               ", unbindable");
++      if (flags & MS_PRIVATE)
++              audit_log_format(ab, flags & MS_REC ? ", rprivate" :
++                               ", private");
++      if (flags & MS_SLAVE)
++              audit_log_format(ab, flags & MS_REC ? ", rslave" :
++                               ", slave");
++      if (flags & MS_SHARED)
++              audit_log_format(ab, flags & MS_REC ? ", rshared" :
++                               ", shared");
++      if (flags & MS_RELATIME)
++              audit_log_format(ab, ", relatime");
++      if (flags & MS_I_VERSION)
++              audit_log_format(ab, ", iversion");
++      if (flags & MS_STRICTATIME)
++              audit_log_format(ab, ", strictatime");
++      if (flags & MS_NOUSER)
++              audit_log_format(ab, ", nouser");
 +}
 +
 +/**
-+ * next_profile - step to the next profile in where ever it may be
-+ * @root: root namespace  (NOT NULL)
-+ * @profile: current profile  (NOT NULL)
-+ *
-+ * Returns: next profile or NULL if there isn't one
++ * audit_cb - call back for mount specific audit fields
++ * @ab: audit_buffer  (NOT NULL)
++ * @va: audit struct to audit values of  (NOT NULL)
 + */
-+static struct aa_profile *next_profile(struct aa_namespace *root,
-+                                     struct aa_profile *profile)
++static void audit_cb(struct audit_buffer *ab, void *va)
 +{
-+      struct aa_profile *next = __next_profile(profile);
-+      if (next)
-+              return next;
++      struct common_audit_data *sa = va;
 +
-+      /* finished all profiles in namespace move to next namespace */
-+      return __first_profile(root, __next_namespace(root, profile->ns));
++      if (sa->aad->mnt.type) {
++              audit_log_format(ab, " fstype=");
++              audit_log_untrustedstring(ab, sa->aad->mnt.type);
++      }
++      if (sa->aad->mnt.src_name) {
++              audit_log_format(ab, " srcname=");
++              audit_log_untrustedstring(ab, sa->aad->mnt.src_name);
++      }
++      if (sa->aad->mnt.trans) {
++              audit_log_format(ab, " trans=");
++              audit_log_untrustedstring(ab, sa->aad->mnt.trans);
++      }
++      if (sa->aad->mnt.flags || sa->aad->op == OP_MOUNT) {
++              audit_log_format(ab, " flags=\"");
++              audit_mnt_flags(ab, sa->aad->mnt.flags);
++              audit_log_format(ab, "\"");
++      }
++      if (sa->aad->mnt.data) {
++              audit_log_format(ab, " options=");
++              audit_log_untrustedstring(ab, sa->aad->mnt.data);
++      }
 +}
 +
 +/**
-+ * p_start - start a depth first traversal of profile tree
-+ * @f: seq_file to fill
-+ * @pos: current position
++ * audit_mount - handle the auditing of mount operations
++ * @profile: the profile being enforced  (NOT NULL)
++ * @gfp: allocation flags
++ * @op: operation being mediated (NOT NULL)
++ * @name: name of object being mediated (MAYBE NULL)
++ * @src_name: src_name of object being mediated (MAYBE_NULL)
++ * @type: type of filesystem (MAYBE_NULL)
++ * @trans: name of trans (MAYBE NULL)
++ * @flags: filesystem idependent mount flags
++ * @data: filesystem mount flags
++ * @request: permissions requested
++ * @perms: the permissions computed for the request (NOT NULL)
++ * @info: extra information message (MAYBE NULL)
++ * @error: 0 if operation allowed else failure error code
 + *
-+ * Returns: first profile under current namespace or NULL if none found
-+ *
-+ * acquires first ns->lock
++ * Returns: %0 or error on failure
 + */
-+static void *p_start(struct seq_file *f, loff_t *pos)
-+      __acquires(root->lock)
++static int audit_mount(struct aa_profile *profile, gfp_t gfp, int op,
++                     const char *name, const char *src_name,
++                     const char *type, const char *trans,
++                     unsigned long flags, const void *data, u32 request,
++                     struct file_perms *perms, const char *info, int error)
 +{
-+      struct aa_profile *profile = NULL;
-+      struct aa_namespace *root = aa_current_profile()->ns;
-+      loff_t l = *pos;
-+      f->private = aa_get_namespace(root);
++      int audit_type = AUDIT_APPARMOR_AUTO;
++      struct common_audit_data sa;
++      struct apparmor_audit_data aad = { };
 +
++      if (likely(!error)) {
++              u32 mask = perms->audit;
 +
-+      /* find the first profile */
-+      read_lock(&root->lock);
-+      profile = __first_profile(root, root);
++              if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL))
++                      mask = 0xffff;
 +
-+      /* skip to position */
-+      for (; profile && l > 0; l--)
-+              profile = next_profile(root, profile);
++              /* mask off perms that are not being force audited */
++              request &= mask;
 +
-+      return profile;
++              if (likely(!request))
++                      return 0;
++              audit_type = AUDIT_APPARMOR_AUDIT;
++      } else {
++              /* only report permissions that were denied */
++              request = request & ~perms->allow;
++
++              if (request & perms->kill)
++                      audit_type = AUDIT_APPARMOR_KILL;
++
++              /* quiet known rejects, assumes quiet and kill do not overlap */
++              if ((request & perms->quiet) &&
++                  AUDIT_MODE(profile) != AUDIT_NOQUIET &&
++                  AUDIT_MODE(profile) != AUDIT_ALL)
++                      request &= ~perms->quiet;
++
++              if (!request)
++                      return COMPLAIN_MODE(profile) ?
++                              complain_error(error) : error;
++      }
++
++      COMMON_AUDIT_DATA_INIT(&sa, NONE);
++      sa.aad = &aad;
++      sa.aad->op = op;
++      sa.aad->name = name;
++      sa.aad->mnt.src_name = src_name;
++      sa.aad->mnt.type = type;
++      sa.aad->mnt.trans = trans;
++      sa.aad->mnt.flags = flags;
++      if (data && (perms->audit & AA_AUDIT_DATA))
++              sa.aad->mnt.data = data;
++      sa.aad->info = info;
++      sa.aad->error = error;
++
++      return aa_audit(audit_type, profile, gfp, &sa, audit_cb);
 +}
 +
 +/**
-+ * p_next - read the next profile entry
-+ * @f: seq_file to fill
-+ * @p: profile previously returned
-+ * @pos: current position
++ * match_mnt_flags - Do an ordered match on mount flags
++ * @dfa: dfa to match against
++ * @state: state to start in
++ * @flags: mount flags to match against
 + *
-+ * Returns: next profile after @p or NULL if none
++ * Mount flags are encoded as an ordered match. This is done instead of
++ * checking against a simple bitmask, to allow for logical operations
++ * on the flags.
 + *
-+ * may acquire/release locks in namespace tree as necessary
++ * Returns: next state after flags match
 + */
-+static void *p_next(struct seq_file *f, void *p, loff_t *pos)
++static unsigned int match_mnt_flags(struct aa_dfa *dfa, unsigned int state,
++                                  unsigned long flags)
 +{
-+      struct aa_profile *profile = p;
-+      struct aa_namespace *root = f->private;
-+      (*pos)++;
++      unsigned int i;
 +
-+      return next_profile(root, profile);
++      for (i = 0; i <= 31 ; ++i) {
++              if ((1 << i) & flags)
++                      state = aa_dfa_next(dfa, state, i + 1);
++      }
++
++      return state;
 +}
 +
 +/**
-+ * p_stop - stop depth first traversal
-+ * @f: seq_file we are filling
-+ * @p: the last profile writen
++ * compute_mnt_perms - compute mount permission associated with @state
++ * @dfa: dfa to match against (NOT NULL)
++ * @state: state match finished in
 + *
-+ * Release all locking done by p_start/p_next on namespace tree
++ * Returns: mount permissions
 + */
-+static void p_stop(struct seq_file *f, void *p)
-+      __releases(root->lock)
++static struct file_perms compute_mnt_perms(struct aa_dfa *dfa,
++                                         unsigned int state)
 +{
-+      struct aa_profile *profile = p;
-+      struct aa_namespace *root = f->private, *ns;
++      struct file_perms perms;
 +
-+      if (profile) {
-+              for (ns = profile->ns; ns && ns != root; ns = ns->parent)
-+                      read_unlock(&ns->lock);
++      perms.kill = 0;
++      perms.allow = dfa_user_allow(dfa, state);
++      perms.audit = dfa_user_audit(dfa, state);
++      perms.quiet = dfa_user_quiet(dfa, state);
++      perms.xindex = dfa_user_xindex(dfa, state);
++
++      return perms;
++}
++
++static const char const *mnt_info_table[] = {
++      "match succeeded",
++      "failed mntpnt match",
++      "failed srcname match",
++      "failed type match",
++      "failed flags match",
++      "failed data match"
++};
++
++/*
++ * Returns 0 on success else element that match failed in, this is the
++ * index into the mnt_info_table above
++ */
++static int do_match_mnt(struct aa_dfa *dfa, unsigned int start,
++                      const char *mntpnt, const char *devname,
++                      const char *type, unsigned long flags,
++                      void *data, bool binary, struct file_perms *perms)
++{
++      unsigned int state;
++
++      state = aa_dfa_match(dfa, start, mntpnt);
++      state = aa_dfa_null_transition(dfa, state);
++      if (!state)
++              return 1;
++
++      if (devname)
++              state = aa_dfa_match(dfa, state, devname);
++      state = aa_dfa_null_transition(dfa, state);
++      if (!state)
++              return 2;
++
++      if (type)
++              state = aa_dfa_match(dfa, state, type);
++      state = aa_dfa_null_transition(dfa, state);
++      if (!state)
++              return 3;
++
++      state = match_mnt_flags(dfa, state, flags);
++      if (!state)
++              return 4;
++      *perms = compute_mnt_perms(dfa, state);
++      if (perms->allow & AA_MAY_MOUNT)
++              return 0;
++
++      /* only match data if not binary and the DFA flags data is expected */
++      if (data && !binary && (perms->allow & AA_CONT_MATCH)) {
++              state = aa_dfa_null_transition(dfa, state);
++              if (!state)
++                      return 4;
++
++              state = aa_dfa_match(dfa, state, data);
++              if (!state)
++                      return 5;
++              *perms = compute_mnt_perms(dfa, state);
++              if (perms->allow & AA_MAY_MOUNT)
++                      return 0;
 +      }
-+      read_unlock(&root->lock);
-+      aa_put_namespace(root);
++
++      /* failed at end of flags match */
++      return 4;
 +}
 +
 +/**
-+ * seq_show_profile - show a profile entry
-+ * @f: seq_file to file
-+ * @p: current position (profile)    (NOT NULL)
++ * match_mnt - handle path matching for mount
++ * @profile: the confining profile
++ * @mntpnt: string for the mntpnt (NOT NULL)
++ * @devname: string for the devname/src_name (MAYBE NULL)
++ * @type: string for the dev type (MAYBE NULL)
++ * @flags: mount flags to match
++ * @data: fs mount data (MAYBE NULL)
++ * @binary: whether @data is binary
++ * @perms: Returns: permission found by the match
++ * @info: Returns: infomation string about the match for logging
 + *
-+ * Returns: error on failure
++ * Returns: 0 on success else error
 + */
-+static int seq_show_profile(struct seq_file *f, void *p)
++static int match_mnt(struct aa_profile *profile, const char *mntpnt,
++                   const char *devname, const char *type,
++                   unsigned long flags, void *data, bool binary,
++                   struct file_perms *perms, const char **info)
 +{
-+      struct aa_profile *profile = (struct aa_profile *)p;
-+      struct aa_namespace *root = f->private;
++      int pos;
 +
-+      if (profile->ns != root)
-+              seq_printf(f, ":%s://", aa_ns_name(root, profile->ns));
-+      seq_printf(f, "%s (%s)\n", profile->base.hname,
-+                 COMPLAIN_MODE(profile) ? "complain" : "enforce");
++      if (!profile->policy.dfa)
++              return -EACCES;
++
++      pos = do_match_mnt(profile->policy.dfa,
++                         profile->policy.start[AA_CLASS_MOUNT],
++                         mntpnt, devname, type, flags, data, binary, perms);
++      if (pos) {
++              *info = mnt_info_table[pos];
++              return -EACCES;
++      }
 +
 +      return 0;
 +}
 +
-+static const struct seq_operations aa_fs_profiles_op = {
-+      .start = p_start,
-+      .next = p_next,
-+      .stop = p_stop,
-+      .show = seq_show_profile,
-+};
++static int path_flags(struct aa_profile *profile, struct path *path)
++{
++      return profile->path_flags |
++              S_ISDIR(path->dentry->d_inode->i_mode) ? PATH_IS_DIR : 0;
++}
 +
-+static int profiles_open(struct inode *inode, struct file *file)
++int aa_remount(struct aa_profile *profile, struct path *path,
++             unsigned long flags, void *data)
 +{
-+      return seq_open(file, &aa_fs_profiles_op);
++      struct file_perms perms = { };
++      const char *name, *info = NULL;
++      char *buffer = NULL;
++      int binary, error;
++
++      binary = path->dentry->d_sb->s_type->fs_flags & FS_BINARY_MOUNTDATA;
++
++      error = aa_path_name(path, path_flags(profile, path), &buffer, &name,
++                           &info);
++      if (error)
++              goto audit;
++
++      error = match_mnt(profile, name, NULL, NULL, flags, data, binary,
++                        &perms, &info);
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, NULL, NULL,
++                          NULL, flags, data, AA_MAY_MOUNT, &perms, info,
++                          error);
++      kfree(buffer);
++
++      return error;
 +}
 +
-+static int profiles_release(struct inode *inode, struct file *file)
++int aa_bind_mount(struct aa_profile *profile, struct path *path,
++                const char *dev_name, unsigned long flags)
 +{
-+      return seq_release(inode, file);
++      struct file_perms perms = { };
++      char *buffer = NULL, *old_buffer = NULL;
++      const char *name, *old_name = NULL, *info = NULL;
++      struct path old_path;
++      int error;
++
++      if (!dev_name || !*dev_name)
++              return -EINVAL;
++
++      flags &= MS_REC | MS_BIND;
++
++      error = aa_path_name(path, path_flags(profile, path), &buffer, &name,
++                           &info);
++      if (error)
++              goto audit;
++
++      error = kern_path(dev_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path);
++      if (error)
++              goto audit;
++
++      error = aa_path_name(&old_path, path_flags(profile, &old_path),
++                           &old_buffer, &old_name, &info);
++      path_put(&old_path);
++      if (error)
++              goto audit;
++
++      error = match_mnt(profile, name, old_name, NULL, flags, NULL, 0,
++                        &perms, &info);
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, old_name,
++                          NULL, NULL, flags, NULL, AA_MAY_MOUNT, &perms,
++                          info, error);
++      kfree(buffer);
++      kfree(old_buffer);
++
++      return error;
 +}
 +
-+const struct file_operations aa_fs_profiles_fops = {
-+      .open = profiles_open,
-+      .read = seq_read,
-+      .llseek = seq_lseek,
-+      .release = profiles_release,
-+};
-diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c
-index 0848292..28c52ac 100644
---- a/security/apparmor/apparmorfs.c
-+++ b/security/apparmor/apparmorfs.c
-@@ -187,7 +187,11 @@ void __init aa_destroy_aafs(void)
-               aafs_remove(".remove");
-               aafs_remove(".replace");
-               aafs_remove(".load");
--
-+#ifdef CONFIG_SECURITY_APPARMOR_COMPAT_24
-+              aafs_remove("profiles");
-+              aafs_remove("matching");
-+              aafs_remove("features");
-+#endif
-               securityfs_remove(aa_fs_dentry);
-               aa_fs_dentry = NULL;
-       }
-@@ -218,7 +222,17 @@ int __init aa_create_aafs(void)
-               aa_fs_dentry = NULL;
-               goto error;
-       }
--
-+#ifdef CONFIG_SECURITY_APPARMOR_COMPAT_24
-+      error = aafs_create("matching", 0444, &aa_fs_matching_fops);
++int aa_mount_change_type(struct aa_profile *profile, struct path *path,
++                       unsigned long flags)
++{
++      struct file_perms perms = { };
++      char *buffer = NULL;
++      const char *name, *info = NULL;
++      int error;
++
++      /* These are the flags allowed by do_change_type() */
++      flags &= (MS_REC | MS_SILENT | MS_SHARED | MS_PRIVATE | MS_SLAVE |
++                MS_UNBINDABLE);
++
++      error = aa_path_name(path, path_flags(profile, path), &buffer, &name,
++                           &info);
 +      if (error)
-+              goto error;
-+      error = aafs_create("features", 0444, &aa_fs_features_fops);
++              goto audit;
++
++      error = match_mnt(profile, name, NULL, NULL, flags, NULL, 0, &perms,
++                        &info);
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, NULL, NULL,
++                          NULL, flags, NULL, AA_MAY_MOUNT, &perms, info,
++                          error);
++      kfree(buffer);
++
++      return error;
++}
++
++int aa_move_mount(struct aa_profile *profile, struct path *path,
++                const char *orig_name)
++{
++      struct file_perms perms = { };
++      char *buffer = NULL, *old_buffer = NULL;
++      const char *name, *old_name = NULL, *info = NULL;
++      struct path old_path;
++      int error;
++
++      if (!orig_name || !*orig_name)
++              return -EINVAL;
++
++      error = aa_path_name(path, path_flags(profile, path), &buffer, &name,
++                           &info);
 +      if (error)
-+              goto error;
-+#endif
-+      error = aafs_create("profiles", 0440, &aa_fs_profiles_fops);
++              goto audit;
++
++      error = kern_path(orig_name, LOOKUP_FOLLOW, &old_path);
 +      if (error)
-+              goto error;
-       error = aafs_create(".load", 0640, &aa_fs_profile_load);
-       if (error)
-               goto error;
-diff --git a/security/apparmor/include/apparmorfs.h b/security/apparmor/include/apparmorfs.h
-index cb1e93a..14f955c 100644
---- a/security/apparmor/include/apparmorfs.h
-+++ b/security/apparmor/include/apparmorfs.h
-@@ -17,4 +17,10 @@
- extern void __init aa_destroy_aafs(void);
-+#ifdef CONFIG_SECURITY_APPARMOR_COMPAT_24
-+extern const struct file_operations aa_fs_matching_fops;
-+extern const struct file_operations aa_fs_features_fops;
-+extern const struct file_operations aa_fs_profiles_fops;
-+#endif
-+
- #endif /* __AA_APPARMORFS_H */
--- 
-1.7.0.4
-
-From f17b28f64b963c47e76737f7bb7f58ce3a7c5249 Mon Sep 17 00:00:00 2001
-From: John Johansen <john.johansen@canonical.com>
-Date: Tue, 20 Jul 2010 06:57:08 -0700
-Subject: [PATCH 3/3] AppArmor: Allow dfa backward compatibility with broken userspace
-
-The apparmor_parser when compiling policy could generate invalid dfas
-that did not have sufficient padding to avoid invalid references, when
-used by the kernel.  The kernels check to verify the next/check table
-size was broken meaning invalid dfas were being created by userspace
-and not caught.
-
-To remain compatible with old tools that are not fixed, pad the loaded
-dfas next/check table.  The dfa's themselves are valid except for the
-high padding for potentially invalid transitions (high bounds error),
-which have a maximimum is 256 entries.  So just allocate an extra null filled
-256 entries for the next/check tables.  This will guarentee all bounds
-are good and invalid transitions go to the null (0) state.
-
-Signed-off-by: John Johansen <john.johansen@canonical.com>
----
- security/apparmor/match.c |   17 +++++++++++++++++
- 1 files changed, 17 insertions(+), 0 deletions(-)
-
-diff --git a/security/apparmor/match.c b/security/apparmor/match.c
-index 06d764c..cf92856 100644
---- a/security/apparmor/match.c
-+++ b/security/apparmor/match.c
-@@ -57,8 +57,17 @@ static struct table_header *unpack_table(char *blob, size_t bsize)
-       if (bsize < tsize)
-               goto out;
-+      /* Pad table allocation for next/check by 256 entries to remain
-+       * backwards compatible with old (buggy) tools and remain safe without
-+       * run time checks
-+       */
-+      if (th.td_id == YYTD_ID_NXT || th.td_id == YYTD_ID_CHK)
-+              tsize += 256 * th.td_flags;
-+
-       table = kvmalloc(tsize);
-       if (table) {
-+              /* ensure the pad is clear, else there will be errors */
-+              memset(table, 0, tsize);
-               *table = th;
-               if (th.td_flags == YYTD_DATA8)
-                       UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
-@@ -134,11 +143,19 @@ static int verify_dfa(struct aa_dfa *dfa, int flags)
-               goto out;
-       if (flags & DFA_FLAG_VERIFY_STATES) {
-+              int warning = 0;
-               for (i = 0; i < state_count; i++) {
-                       if (DEFAULT_TABLE(dfa)[i] >= state_count)
-                               goto out;
-                       /* TODO: do check that DEF state recursion terminates */
-                       if (BASE_TABLE(dfa)[i] + 255 >= trans_count) {
-+                              if (warning)
-+                                      continue;
-+                              printk(KERN_WARNING "AppArmor DFA next/check "
-+                                     "upper bounds error fixed, upgrade "
-+                                     "user space tools \n");
-+                              warning = 1;
-+                      } else if (BASE_TABLE(dfa)[i] >= trans_count) {
-                               printk(KERN_ERR "AppArmor DFA next/check upper "
-                                      "bounds error\n");
-                               goto out;
--- 
-1.7.0.4
-
++              goto audit;
++
++      error = aa_path_name(&old_path, path_flags(profile, &old_path),
++                           &old_buffer, &old_name, &info);
++      path_put(&old_path);
++      if (error)
++              goto audit;
++
++      error = match_mnt(profile, name, old_name, NULL, MS_MOVE, NULL, 0,
++                        &perms, &info);
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, old_name,
++                          NULL, NULL, MS_MOVE, NULL, AA_MAY_MOUNT, &perms,
++                          info, error);
++      kfree(buffer);
++      kfree(old_buffer);
++
++      return error;
++}
++
++int aa_new_mount(struct aa_profile *profile, const char *orig_dev_name,
++               struct path *path, const char *type, unsigned long flags,
++               void *data)
++{
++      struct file_perms perms = { };
++      char *buffer = NULL, *dev_buffer = NULL;
++      const char *name = NULL, *dev_name = NULL, *info = NULL;
++      int binary = 1;
++      int error;
++
++      dev_name = orig_dev_name;
++      if (type) {
++              int requires_dev;
++              struct file_system_type *fstype = get_fs_type(type);
++              if (!fstype)
++                      return -ENODEV;
++
++              binary = fstype->fs_flags & FS_BINARY_MOUNTDATA;
++              requires_dev = fstype->fs_flags & FS_REQUIRES_DEV;
++              put_filesystem(fstype);
++
++              if (requires_dev) {
++                      struct path dev_path;
++
++                      if (!dev_name || !*dev_name) {
++                              error = -ENOENT;
++                              goto out;
++                      }
++
++                      error = kern_path(dev_name, LOOKUP_FOLLOW, &dev_path);
++                      if (error)
++                              goto audit;
++
++                      error = aa_path_name(&dev_path,
++                                           path_flags(profile, &dev_path),
++                                           &dev_buffer, &dev_name, &info);
++                      path_put(&dev_path);
++                      if (error)
++                              goto audit;
++              }
++      }
++
++      error = aa_path_name(path, path_flags(profile, path), &buffer, &name,
++                           &info);
++      if (error)
++              goto audit;
++
++      error = match_mnt(profile, name, dev_name, type, flags, data, binary,
++                        &perms, &info);
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name,  dev_name,
++                          type, NULL, flags, data, AA_MAY_MOUNT, &perms, info,
++                          error);
++      kfree(buffer);
++      kfree(dev_buffer);
++
++out:
++      return error;
++
++}
++
++int aa_umount(struct aa_profile *profile, struct vfsmount *mnt, int flags)
++{
++      struct file_perms perms = { };
++      char *buffer = NULL;
++      const char *name, *info = NULL;
++      int error;
++
++      struct path path = { mnt, mnt->mnt_root };
++      error = aa_path_name(&path, path_flags(profile, &path), &buffer, &name,
++                           &info);
++      if (error)
++              goto audit;
++
++      if (!error && profile->policy.dfa) {
++              unsigned int state;
++              state = aa_dfa_match(profile->policy.dfa,
++                                   profile->policy.start[AA_CLASS_MOUNT],
++                                   name);
++              perms = compute_mnt_perms(profile->policy.dfa, state);
++      }
++
++      if (AA_MAY_UMOUNT & ~perms.allow)
++              error = -EACCES;
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_UMOUNT, name, NULL, NULL,
++                          NULL, 0, NULL, AA_MAY_UMOUNT, &perms, info, error);
++      kfree(buffer);
++
++      return error;
++}
++
++int aa_pivotroot(struct aa_profile *profile, struct path *old_path,
++                struct path *new_path)
++{
++      struct file_perms perms = { };
++      struct aa_profile *target = NULL;
++      char *old_buffer = NULL, *new_buffer = NULL;
++      const char *old_name, *new_name = NULL, *info = NULL;
++      int error;
++
++      error = aa_path_name(old_path, path_flags(profile, old_path),
++                           &old_buffer, &old_name, &info);
++      if (error)
++              goto audit;
++
++      error = aa_path_name(new_path, path_flags(profile, new_path),
++                           &new_buffer, &new_name, &info);
++      if (error)
++              goto audit;
++
++      if (profile->policy.dfa) {
++              unsigned int state;
++              state = aa_dfa_match(profile->policy.dfa,
++                                   profile->policy.start[AA_CLASS_MOUNT],
++                                   new_name);
++              state = aa_dfa_null_transition(profile->policy.dfa, state);
++              state = aa_dfa_match(profile->policy.dfa, state, old_name);
++              perms = compute_mnt_perms(profile->policy.dfa, state);
++      }
++
++      if (AA_MAY_PIVOTROOT & perms.allow) {
++              if ((perms.xindex & AA_X_TYPE_MASK) == AA_X_TABLE) {
++                      target = x_table_lookup(profile, perms.xindex);
++                      if (!target)
++                              error = -ENOENT;
++                      else
++                              error = aa_replace_current_profile(target);
++              }
++      } else
++              error = -EACCES;
++
++audit:
++      error = audit_mount(profile, GFP_KERNEL, OP_PIVOTROOT, new_name,
++                          old_name, NULL, target ? target->base.name : NULL,
++                          0, NULL,  AA_MAY_PIVOTROOT, &perms, info, error);
++      aa_put_profile(target);
++      kfree(old_buffer);
++      kfree(new_buffer);
++
++      return error;
++}
index 70ae18f3704a6d316277f1c446b2dfd100f940bb..546e37a9154c4ac43134caf73fce4dd2d737a655 100644 (file)
@@ -1,6 +1,6 @@
-diff -NurpP --minimal linux-3.3.1/Documentation/vserver/debug.txt linux-3.3.1-vs2.3.3.2/Documentation/vserver/debug.txt
---- linux-3.3.1/Documentation/vserver/debug.txt        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/Documentation/vserver/debug.txt      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/Documentation/vserver/debug.txt linux-3.4-vs2.3.3.4/Documentation/vserver/debug.txt
+--- linux-3.4/Documentation/vserver/debug.txt  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/Documentation/vserver/debug.txt        2012-05-21 18:15:04.000000000 +0200
 @@ -0,0 +1,154 @@
 +
 +debug_cvirt:
@@ -156,9 +156,9 @@ diff -NurpP --minimal linux-3.3.1/Documentation/vserver/debug.txt linux-3.3.1-vs
 + m 2^m        "vx_acc_page[%5d,%s,%2d]: %5d%s"
 +      "vx_acc_pages[%5d,%s,%2d]: %5d += %5d"
 +      "vx_pages_avail[%5d,%s,%2d]: %5ld > %5d + %5d"
-diff -NurpP --minimal linux-3.3.1/arch/alpha/Kconfig linux-3.3.1-vs2.3.3.2/arch/alpha/Kconfig
---- linux-3.3.1/arch/alpha/Kconfig     2012-03-19 19:46:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/alpha/Kconfig   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/alpha/Kconfig linux-3.4-vs2.3.3.4/arch/alpha/Kconfig
+--- linux-3.4/arch/alpha/Kconfig       2012-05-21 18:06:12.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/alpha/Kconfig     2012-05-21 18:15:04.000000000 +0200
 @@ -662,6 +662,8 @@ config DUMMY_CONSOLE
        depends on VGA_HOSE
        default y
@@ -168,9 +168,9 @@ diff -NurpP --minimal linux-3.3.1/arch/alpha/Kconfig linux-3.3.1-vs2.3.3.2/arch/
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/entry.S linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/entry.S
---- linux-3.3.1/arch/alpha/kernel/entry.S      2010-10-21 13:06:45.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/entry.S    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/alpha/kernel/entry.S linux-3.4-vs2.3.3.4/arch/alpha/kernel/entry.S
+--- linux-3.4/arch/alpha/kernel/entry.S        2010-10-21 13:06:45.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/alpha/kernel/entry.S      2012-05-21 18:15:04.000000000 +0200
 @@ -860,24 +860,15 @@ sys_getxgid:
        .globl  sys_getxpid
        .ent    sys_getxpid
@@ -203,9 +203,9 @@ diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/entry.S linux-3.3.1-vs2.3.3.
        ret
  .end sys_getxpid
  
-diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/ptrace.c linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/ptrace.c
---- linux-3.3.1/arch/alpha/kernel/ptrace.c     2011-01-05 21:48:40.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/ptrace.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/alpha/kernel/ptrace.c linux-3.4-vs2.3.3.4/arch/alpha/kernel/ptrace.c
+--- linux-3.4/arch/alpha/kernel/ptrace.c       2012-05-21 18:06:12.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/alpha/kernel/ptrace.c     2012-05-21 18:15:04.000000000 +0200
 @@ -13,6 +13,7 @@
  #include <linux/user.h>
  #include <linux/security.h>
@@ -214,9 +214,9 @@ diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/ptrace.c linux-3.3.1-vs2.3.3
  
  #include <asm/uaccess.h>
  #include <asm/pgtable.h>
-diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/systbls.S linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/systbls.S
---- linux-3.3.1/arch/alpha/kernel/systbls.S    2012-01-09 16:13:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/systbls.S  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/alpha/kernel/systbls.S linux-3.4-vs2.3.3.4/arch/alpha/kernel/systbls.S
+--- linux-3.4/arch/alpha/kernel/systbls.S      2012-01-09 16:13:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/alpha/kernel/systbls.S    2012-05-21 18:15:04.000000000 +0200
 @@ -446,7 +446,7 @@ sys_call_table:
        .quad sys_stat64                        /* 425 */
        .quad sys_lstat64
@@ -226,10 +226,10 @@ diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/systbls.S linux-3.3.1-vs2.3.
        .quad sys_ni_syscall                    /* sys_mbind */
        .quad sys_ni_syscall                    /* sys_get_mempolicy */
        .quad sys_ni_syscall                    /* sys_set_mempolicy */
-diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/traps.c
---- linux-3.3.1/arch/alpha/kernel/traps.c      2010-10-21 13:06:46.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/alpha/kernel/traps.c    2012-02-24 03:55:06.000000000 +0100
-@@ -183,7 +183,8 @@ die_if_kernel(char * str, struct pt_regs
+diff -NurpP --minimal linux-3.4/arch/alpha/kernel/traps.c linux-3.4-vs2.3.3.4/arch/alpha/kernel/traps.c
+--- linux-3.4/arch/alpha/kernel/traps.c        2012-05-21 18:06:12.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/alpha/kernel/traps.c      2012-05-21 18:15:04.000000000 +0200
+@@ -184,7 +184,8 @@ die_if_kernel(char * str, struct pt_regs
  #ifdef CONFIG_SMP
        printk("CPU %d ", hard_smp_processor_id());
  #endif
@@ -239,10 +239,10 @@ diff -NurpP --minimal linux-3.3.1/arch/alpha/kernel/traps.c linux-3.3.1-vs2.3.3.
        dik_show_regs(regs, r9_15);
        add_taint(TAINT_DIE);
        dik_show_trace((unsigned long *)(regs+1));
-diff -NurpP --minimal linux-3.3.1/arch/arm/Kconfig linux-3.3.1-vs2.3.3.2/arch/arm/Kconfig
---- linux-3.3.1/arch/arm/Kconfig       2012-03-19 19:46:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/arm/Kconfig     2012-03-19 20:52:09.000000000 +0100
-@@ -2266,6 +2266,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/arm/Kconfig linux-3.4-vs2.3.3.4/arch/arm/Kconfig
+--- linux-3.4/arch/arm/Kconfig 2012-05-21 18:06:12.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/arm/Kconfig       2012-05-21 18:15:04.000000000 +0200
+@@ -2299,6 +2299,8 @@ source "fs/Kconfig"
  
  source "arch/arm/Kconfig.debug"
  
@@ -251,9 +251,9 @@ diff -NurpP --minimal linux-3.3.1/arch/arm/Kconfig linux-3.3.1-vs2.3.3.2/arch/ar
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/arm/kernel/calls.S linux-3.3.1-vs2.3.3.2/arch/arm/kernel/calls.S
---- linux-3.3.1/arch/arm/kernel/calls.S        2012-01-09 16:13:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/arm/kernel/calls.S      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/arm/kernel/calls.S linux-3.4-vs2.3.3.4/arch/arm/kernel/calls.S
+--- linux-3.4/arch/arm/kernel/calls.S  2012-01-09 16:13:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/arm/kernel/calls.S        2012-05-21 18:15:04.000000000 +0200
 @@ -322,7 +322,7 @@
  /* 310 */     CALL(sys_request_key)
                CALL(sys_keyctl)
@@ -263,10 +263,10 @@ diff -NurpP --minimal linux-3.3.1/arch/arm/kernel/calls.S linux-3.3.1-vs2.3.3.2/
                CALL(sys_ioprio_set)
  /* 315 */     CALL(sys_ioprio_get)
                CALL(sys_inotify_init)
-diff -NurpP --minimal linux-3.3.1/arch/arm/kernel/process.c linux-3.3.1-vs2.3.3.2/arch/arm/kernel/process.c
---- linux-3.3.1/arch/arm/kernel/process.c      2012-03-19 19:46:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/arm/kernel/process.c    2012-02-24 03:55:06.000000000 +0100
-@@ -353,7 +353,8 @@ void __show_regs(struct pt_regs *regs)
+diff -NurpP --minimal linux-3.4/arch/arm/kernel/process.c linux-3.4-vs2.3.3.4/arch/arm/kernel/process.c
+--- linux-3.4/arch/arm/kernel/process.c        2012-05-21 18:06:13.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/arm/kernel/process.c      2012-05-21 18:15:04.000000000 +0200
+@@ -355,7 +355,8 @@ void __show_regs(struct pt_regs *regs)
  void show_regs(struct pt_regs * regs)
  {
        printk("\n");
@@ -276,10 +276,10 @@ diff -NurpP --minimal linux-3.3.1/arch/arm/kernel/process.c linux-3.3.1-vs2.3.3.
        __show_regs(regs);
        dump_stack();
  }
-diff -NurpP --minimal linux-3.3.1/arch/arm/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/arm/kernel/traps.c
---- linux-3.3.1/arch/arm/kernel/traps.c        2012-03-19 19:46:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/arm/kernel/traps.c      2012-02-24 03:55:06.000000000 +0100
-@@ -244,8 +244,8 @@ static int __die(const char *str, int er
+diff -NurpP --minimal linux-3.4/arch/arm/kernel/traps.c linux-3.4-vs2.3.3.4/arch/arm/kernel/traps.c
+--- linux-3.4/arch/arm/kernel/traps.c  2012-05-21 18:06:13.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/arm/kernel/traps.c        2012-05-21 18:15:04.000000000 +0200
+@@ -249,8 +249,8 @@ static int __die(const char *str, int er
  
        print_modules();
        __show_regs(regs);
@@ -290,9 +290,9 @@ diff -NurpP --minimal linux-3.3.1/arch/arm/kernel/traps.c linux-3.3.1-vs2.3.3.2/
  
        if (!user_mode(regs) || in_interrupt()) {
                dump_mem(KERN_EMERG, "Stack: ", regs->ARM_sp,
-diff -NurpP --minimal linux-3.3.1/arch/cris/Kconfig linux-3.3.1-vs2.3.3.2/arch/cris/Kconfig
---- linux-3.3.1/arch/cris/Kconfig      2012-03-19 19:46:39.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/cris/Kconfig    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/cris/Kconfig linux-3.4-vs2.3.3.4/arch/cris/Kconfig
+--- linux-3.4/arch/cris/Kconfig        2012-03-19 19:46:39.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/cris/Kconfig      2012-05-21 18:15:04.000000000 +0200
 @@ -675,6 +675,8 @@ source "drivers/staging/Kconfig"
  
  source "arch/cris/Kconfig.debug"
@@ -302,9 +302,9 @@ diff -NurpP --minimal linux-3.3.1/arch/cris/Kconfig linux-3.3.1-vs2.3.3.2/arch/c
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/frv/kernel/kernel_thread.S linux-3.3.1-vs2.3.3.2/arch/frv/kernel/kernel_thread.S
---- linux-3.3.1/arch/frv/kernel/kernel_thread.S        2008-12-25 00:26:37.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/frv/kernel/kernel_thread.S      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/frv/kernel/kernel_thread.S linux-3.4-vs2.3.3.4/arch/frv/kernel/kernel_thread.S
+--- linux-3.4/arch/frv/kernel/kernel_thread.S  2008-12-25 00:26:37.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/frv/kernel/kernel_thread.S        2012-05-21 18:15:04.000000000 +0200
 @@ -37,7 +37,7 @@ kernel_thread:
  
        # start by forking the current process, but with shared VM
@@ -314,9 +314,9 @@ diff -NurpP --minimal linux-3.3.1/arch/frv/kernel/kernel_thread.S linux-3.3.1-vs
        sethi.p         #0xe4e4,gr9             ; second syscall arg    [newsp]
        setlo           #0xe4e4,gr9
        setlos.p        #0,gr10                 ; third syscall arg     [parent_tidptr]
-diff -NurpP --minimal linux-3.3.1/arch/h8300/Kconfig linux-3.3.1-vs2.3.3.2/arch/h8300/Kconfig
---- linux-3.3.1/arch/h8300/Kconfig     2012-03-19 19:46:39.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/h8300/Kconfig   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/h8300/Kconfig linux-3.4-vs2.3.3.4/arch/h8300/Kconfig
+--- linux-3.4/arch/h8300/Kconfig       2012-03-19 19:46:39.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/h8300/Kconfig     2012-05-21 18:15:04.000000000 +0200
 @@ -214,6 +214,8 @@ source "fs/Kconfig"
  
  source "arch/h8300/Kconfig.debug"
@@ -326,9 +326,9 @@ diff -NurpP --minimal linux-3.3.1/arch/h8300/Kconfig linux-3.3.1-vs2.3.3.2/arch/
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/ia64/Kconfig linux-3.3.1-vs2.3.3.2/arch/ia64/Kconfig
---- linux-3.3.1/arch/ia64/Kconfig      2012-03-19 19:46:39.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/ia64/Kconfig    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/ia64/Kconfig linux-3.4-vs2.3.3.4/arch/ia64/Kconfig
+--- linux-3.4/arch/ia64/Kconfig        2012-03-19 19:46:39.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/ia64/Kconfig      2012-05-21 18:15:04.000000000 +0200
 @@ -654,6 +654,8 @@ source "fs/Kconfig"
  
  source "arch/ia64/Kconfig.debug"
@@ -338,9 +338,9 @@ diff -NurpP --minimal linux-3.3.1/arch/ia64/Kconfig linux-3.3.1-vs2.3.3.2/arch/i
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/entry.S linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/entry.S
---- linux-3.3.1/arch/ia64/kernel/entry.S       2012-03-19 19:46:40.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/entry.S     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/ia64/kernel/entry.S linux-3.4-vs2.3.3.4/arch/ia64/kernel/entry.S
+--- linux-3.4/arch/ia64/kernel/entry.S 2012-03-19 19:46:40.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/ia64/kernel/entry.S       2012-05-21 18:15:04.000000000 +0200
 @@ -1714,7 +1714,7 @@ sys_call_table:
        data8 sys_mq_notify
        data8 sys_mq_getsetattr
@@ -350,10 +350,10 @@ diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/entry.S linux-3.3.1-vs2.3.3.2
        data8 sys_waitid                        // 1270
        data8 sys_add_key
        data8 sys_request_key
-diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/process.c linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/process.c
---- linux-3.3.1/arch/ia64/kernel/process.c     2011-03-15 18:06:39.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/process.c   2012-02-24 03:55:06.000000000 +0100
-@@ -109,8 +109,8 @@ show_regs (struct pt_regs *regs)
+diff -NurpP --minimal linux-3.4/arch/ia64/kernel/process.c linux-3.4-vs2.3.3.4/arch/ia64/kernel/process.c
+--- linux-3.4/arch/ia64/kernel/process.c       2012-05-21 18:06:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/ia64/kernel/process.c     2012-05-21 18:15:04.000000000 +0200
+@@ -110,8 +110,8 @@ show_regs (struct pt_regs *regs)
        unsigned long ip = regs->cr_iip + ia64_psr(regs)->ri;
  
        print_modules();
@@ -364,9 +364,9 @@ diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/process.c linux-3.3.1-vs2.3.3
        printk("psr : %016lx ifs : %016lx ip  : [<%016lx>]    %s (%s)\n",
               regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(),
               init_utsname()->release);
-diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/ptrace.c linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/ptrace.c
---- linux-3.3.1/arch/ia64/kernel/ptrace.c      2012-03-19 19:46:40.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/ptrace.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/ia64/kernel/ptrace.c linux-3.4-vs2.3.3.4/arch/ia64/kernel/ptrace.c
+--- linux-3.4/arch/ia64/kernel/ptrace.c        2012-05-21 18:06:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/ia64/kernel/ptrace.c      2012-05-21 18:15:04.000000000 +0200
 @@ -21,6 +21,7 @@
  #include <linux/regset.h>
  #include <linux/elf.h>
@@ -375,10 +375,10 @@ diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/ptrace.c linux-3.3.1-vs2.3.3.
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
-diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/traps.c
---- linux-3.3.1/arch/ia64/kernel/traps.c       2010-07-07 18:31:01.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/ia64/kernel/traps.c     2012-02-24 03:55:06.000000000 +0100
-@@ -59,8 +59,9 @@ die (const char *str, struct pt_regs *re
+diff -NurpP --minimal linux-3.4/arch/ia64/kernel/traps.c linux-3.4-vs2.3.3.4/arch/ia64/kernel/traps.c
+--- linux-3.4/arch/ia64/kernel/traps.c 2012-05-21 18:06:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/ia64/kernel/traps.c       2012-05-21 18:15:04.000000000 +0200
+@@ -60,8 +60,9 @@ die (const char *str, struct pt_regs *re
        put_cpu();
  
        if (++die.lock_owner_depth < 3) {
@@ -390,7 +390,7 @@ diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/traps.c linux-3.3.1-vs2.3.3.2
                if (notify_die(DIE_OOPS, str, regs, err, 255, SIGSEGV)
                    != NOTIFY_STOP)
                        show_regs(regs);
-@@ -323,8 +324,9 @@ handle_fpu_swa (int fp_fault, struct pt_
+@@ -324,8 +325,9 @@ handle_fpu_swa (int fp_fault, struct pt_
                        if ((last.count & 15) < 5 && (ia64_fetchadd(1, &last.count, acq) & 15) < 5) {
                                last.time = current_jiffies + 5 * HZ;
                                printk(KERN_WARNING
@@ -402,10 +402,10 @@ diff -NurpP --minimal linux-3.3.1/arch/ia64/kernel/traps.c linux-3.3.1-vs2.3.3.2
                        }
                }
        }
-diff -NurpP --minimal linux-3.3.1/arch/m32r/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/m32r/kernel/traps.c
---- linux-3.3.1/arch/m32r/kernel/traps.c       2011-10-24 18:44:58.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/m32r/kernel/traps.c     2012-02-24 03:55:06.000000000 +0100
-@@ -196,8 +196,9 @@ static void show_registers(struct pt_reg
+diff -NurpP --minimal linux-3.4/arch/m32r/kernel/traps.c linux-3.4-vs2.3.3.4/arch/m32r/kernel/traps.c
+--- linux-3.4/arch/m32r/kernel/traps.c 2012-05-21 18:06:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/m32r/kernel/traps.c       2012-05-21 18:15:04.000000000 +0200
+@@ -195,8 +195,9 @@ static void show_registers(struct pt_reg
        } else {
                printk("SPI: %08lx\n", sp);
        }
@@ -417,10 +417,10 @@ diff -NurpP --minimal linux-3.3.1/arch/m32r/kernel/traps.c linux-3.3.1-vs2.3.3.2
  
        /*
         * When in-kernel, we also print out the stack and code at the
-diff -NurpP --minimal linux-3.3.1/arch/m68k/Kconfig linux-3.3.1-vs2.3.3.2/arch/m68k/Kconfig
---- linux-3.3.1/arch/m68k/Kconfig      2012-03-19 19:46:40.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/m68k/Kconfig    2012-02-24 03:55:06.000000000 +0100
-@@ -145,6 +145,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/m68k/Kconfig linux-3.4-vs2.3.3.4/arch/m68k/Kconfig
+--- linux-3.4/arch/m68k/Kconfig        2012-05-21 18:06:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/m68k/Kconfig      2012-05-21 18:15:04.000000000 +0200
+@@ -146,6 +146,8 @@ source "fs/Kconfig"
  
  source "arch/m68k/Kconfig.debug"
  
@@ -429,10 +429,10 @@ diff -NurpP --minimal linux-3.3.1/arch/m68k/Kconfig linux-3.3.1-vs2.3.3.2/arch/m
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/mips/Kconfig linux-3.3.1-vs2.3.3.2/arch/mips/Kconfig
---- linux-3.3.1/arch/mips/Kconfig      2012-03-19 19:46:41.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/Kconfig    2012-02-24 03:55:06.000000000 +0100
-@@ -2514,6 +2514,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/mips/Kconfig linux-3.4-vs2.3.3.4/arch/mips/Kconfig
+--- linux-3.4/arch/mips/Kconfig        2012-05-21 18:06:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/mips/Kconfig      2012-05-21 18:15:04.000000000 +0200
+@@ -2516,6 +2516,8 @@ source "fs/Kconfig"
  
  source "arch/mips/Kconfig.debug"
  
@@ -441,9 +441,9 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/Kconfig linux-3.3.1-vs2.3.3.2/arch/m
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/ptrace.c linux-3.3.1-vs2.3.3.2/arch/mips/kernel/ptrace.c
---- linux-3.3.1/arch/mips/kernel/ptrace.c      2012-03-19 19:46:43.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/kernel/ptrace.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/mips/kernel/ptrace.c linux-3.4-vs2.3.3.4/arch/mips/kernel/ptrace.c
+--- linux-3.4/arch/mips/kernel/ptrace.c        2012-05-21 18:06:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/mips/kernel/ptrace.c      2012-05-21 18:15:04.000000000 +0200
 @@ -25,6 +25,7 @@
  #include <linux/security.h>
  #include <linux/audit.h>
@@ -452,7 +452,7 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/ptrace.c linux-3.3.1-vs2.3.3.
  
  #include <asm/byteorder.h>
  #include <asm/cpu.h>
-@@ -263,6 +264,9 @@ long arch_ptrace(struct task_struct *chi
+@@ -262,6 +263,9 @@ long arch_ptrace(struct task_struct *chi
        void __user *datavp = (void __user *) data;
        unsigned long __user *datalp = (void __user *) data;
  
@@ -462,9 +462,9 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/ptrace.c linux-3.3.1-vs2.3.3.
        switch (request) {
        /* when I and D space are separate, these will need to be fixed. */
        case PTRACE_PEEKTEXT: /* read word at location addr. */
-diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall32-o32.S linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall32-o32.S
---- linux-3.3.1/arch/mips/kernel/scall32-o32.S 2012-01-09 16:14:05.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall32-o32.S       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/mips/kernel/scall32-o32.S linux-3.4-vs2.3.3.4/arch/mips/kernel/scall32-o32.S
+--- linux-3.4/arch/mips/kernel/scall32-o32.S   2012-01-09 16:14:05.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/mips/kernel/scall32-o32.S 2012-05-21 18:15:04.000000000 +0200
 @@ -523,7 +523,7 @@ einval:    li      v0, -ENOSYS
        sys     sys_mq_timedreceive     5
        sys     sys_mq_notify           2       /* 4275 */
@@ -474,9 +474,9 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall32-o32.S linux-3.3.1-vs2
        sys     sys_waitid              5
        sys     sys_ni_syscall          0       /* available, was setaltroot */
        sys     sys_add_key             5       /* 4280 */
-diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall64-64.S linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall64-64.S
---- linux-3.3.1/arch/mips/kernel/scall64-64.S  2012-01-09 16:14:05.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall64-64.S        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/mips/kernel/scall64-64.S linux-3.4-vs2.3.3.4/arch/mips/kernel/scall64-64.S
+--- linux-3.4/arch/mips/kernel/scall64-64.S    2012-01-09 16:14:05.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/mips/kernel/scall64-64.S  2012-05-21 18:15:04.000000000 +0200
 @@ -362,7 +362,7 @@ sys_call_table:
        PTR     sys_mq_timedreceive
        PTR     sys_mq_notify
@@ -486,9 +486,9 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall64-64.S linux-3.3.1-vs2.
        PTR     sys_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key
-diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall64-n32.S linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall64-n32.S
---- linux-3.3.1/arch/mips/kernel/scall64-n32.S 2012-01-09 16:14:05.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall64-n32.S       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/mips/kernel/scall64-n32.S linux-3.4-vs2.3.3.4/arch/mips/kernel/scall64-n32.S
+--- linux-3.4/arch/mips/kernel/scall64-n32.S   2012-01-09 16:14:05.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/mips/kernel/scall64-n32.S 2012-05-21 18:15:04.000000000 +0200
 @@ -361,7 +361,7 @@ EXPORT(sysn32_call_table)
        PTR     compat_sys_mq_timedreceive
        PTR     compat_sys_mq_notify
@@ -498,9 +498,9 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall64-n32.S linux-3.3.1-vs2
        PTR     compat_sys_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key
-diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall64-o32.S linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall64-o32.S
---- linux-3.3.1/arch/mips/kernel/scall64-o32.S 2012-01-09 16:14:05.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/kernel/scall64-o32.S       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/mips/kernel/scall64-o32.S linux-3.4-vs2.3.3.4/arch/mips/kernel/scall64-o32.S
+--- linux-3.4/arch/mips/kernel/scall64-o32.S   2012-01-09 16:14:05.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/mips/kernel/scall64-o32.S 2012-05-21 18:15:04.000000000 +0200
 @@ -480,7 +480,7 @@ sys_call_table:
        PTR     compat_sys_mq_timedreceive
        PTR     compat_sys_mq_notify            /* 4275 */
@@ -510,10 +510,10 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/scall64-o32.S linux-3.3.1-vs2
        PTR     sys_32_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key                     /* 4280 */
-diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/mips/kernel/traps.c
---- linux-3.3.1/arch/mips/kernel/traps.c       2012-03-19 19:46:43.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/mips/kernel/traps.c     2012-03-19 20:52:09.000000000 +0100
-@@ -344,9 +344,10 @@ void show_registers(struct pt_regs *regs
+diff -NurpP --minimal linux-3.4/arch/mips/kernel/traps.c linux-3.4-vs2.3.3.4/arch/mips/kernel/traps.c
+--- linux-3.4/arch/mips/kernel/traps.c 2012-05-21 18:06:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/mips/kernel/traps.c       2012-05-21 18:15:04.000000000 +0200
+@@ -343,9 +343,10 @@ void show_registers(struct pt_regs *regs
  
        __show_regs(regs);
        print_modules();
@@ -527,9 +527,9 @@ diff -NurpP --minimal linux-3.3.1/arch/mips/kernel/traps.c linux-3.3.1-vs2.3.3.2
        if (cpu_has_userlocal) {
                unsigned long tls;
  
-diff -NurpP --minimal linux-3.3.1/arch/parisc/Kconfig linux-3.3.1-vs2.3.3.2/arch/parisc/Kconfig
---- linux-3.3.1/arch/parisc/Kconfig    2012-03-19 19:46:44.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/parisc/Kconfig  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/parisc/Kconfig linux-3.4-vs2.3.3.4/arch/parisc/Kconfig
+--- linux-3.4/arch/parisc/Kconfig      2012-03-19 19:46:44.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/parisc/Kconfig    2012-05-21 18:15:04.000000000 +0200
 @@ -279,6 +279,8 @@ source "fs/Kconfig"
  
  source "arch/parisc/Kconfig.debug"
@@ -539,9 +539,9 @@ diff -NurpP --minimal linux-3.3.1/arch/parisc/Kconfig linux-3.3.1-vs2.3.3.2/arch
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/parisc/kernel/syscall_table.S linux-3.3.1-vs2.3.3.2/arch/parisc/kernel/syscall_table.S
---- linux-3.3.1/arch/parisc/kernel/syscall_table.S     2011-10-24 18:45:00.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/parisc/kernel/syscall_table.S   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/parisc/kernel/syscall_table.S linux-3.4-vs2.3.3.4/arch/parisc/kernel/syscall_table.S
+--- linux-3.4/arch/parisc/kernel/syscall_table.S       2011-10-24 18:45:00.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/parisc/kernel/syscall_table.S     2012-05-21 18:15:04.000000000 +0200
 @@ -361,7 +361,7 @@
        ENTRY_COMP(mbind)               /* 260 */
        ENTRY_COMP(get_mempolicy)
@@ -551,10 +551,10 @@ diff -NurpP --minimal linux-3.3.1/arch/parisc/kernel/syscall_table.S linux-3.3.1
        ENTRY_SAME(add_key)
        ENTRY_SAME(request_key)         /* 265 */
        ENTRY_SAME(keyctl)
-diff -NurpP --minimal linux-3.3.1/arch/parisc/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/parisc/kernel/traps.c
---- linux-3.3.1/arch/parisc/kernel/traps.c     2011-10-24 18:45:00.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/parisc/kernel/traps.c   2012-02-24 03:55:06.000000000 +0100
-@@ -236,8 +236,9 @@ void die_if_kernel(char *str, struct pt_
+diff -NurpP --minimal linux-3.4/arch/parisc/kernel/traps.c linux-3.4-vs2.3.3.4/arch/parisc/kernel/traps.c
+--- linux-3.4/arch/parisc/kernel/traps.c       2012-05-21 18:06:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/parisc/kernel/traps.c     2012-05-21 18:15:04.000000000 +0200
+@@ -235,8 +235,9 @@ void die_if_kernel(char *str, struct pt_
                if (err == 0)
                        return; /* STFU */
  
@@ -566,7 +566,7 @@ diff -NurpP --minimal linux-3.3.1/arch/parisc/kernel/traps.c linux-3.3.1-vs2.3.3
  #ifdef PRINT_USER_FAULTS
                /* XXX for debugging only */
                show_regs(regs);
-@@ -270,8 +271,8 @@ void die_if_kernel(char *str, struct pt_
+@@ -269,8 +270,8 @@ void die_if_kernel(char *str, struct pt_
                pdc_console_restart();
        
        if (err)
@@ -577,9 +577,9 @@ diff -NurpP --minimal linux-3.3.1/arch/parisc/kernel/traps.c linux-3.3.1-vs2.3.3
  
        /* Wot's wrong wif bein' racy? */
        if (current->thread.flags & PARISC_KERNEL_DEATH) {
-diff -NurpP --minimal linux-3.3.1/arch/parisc/mm/fault.c linux-3.3.1-vs2.3.3.2/arch/parisc/mm/fault.c
---- linux-3.3.1/arch/parisc/mm/fault.c 2010-08-02 16:52:06.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/parisc/mm/fault.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/parisc/mm/fault.c linux-3.4-vs2.3.3.4/arch/parisc/mm/fault.c
+--- linux-3.4/arch/parisc/mm/fault.c   2010-08-02 16:52:06.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/parisc/mm/fault.c 2012-05-21 18:15:04.000000000 +0200
 @@ -237,8 +237,9 @@ bad_area:
  
  #ifdef PRINT_USER_FAULTS
@@ -592,10 +592,10 @@ diff -NurpP --minimal linux-3.3.1/arch/parisc/mm/fault.c linux-3.3.1-vs2.3.3.2/a
                if (vma) {
                        printk(KERN_DEBUG "vm_start = 0x%08lx, vm_end = 0x%08lx\n",
                                        vma->vm_start, vma->vm_end);
-diff -NurpP --minimal linux-3.3.1/arch/powerpc/Kconfig linux-3.3.1-vs2.3.3.2/arch/powerpc/Kconfig
---- linux-3.3.1/arch/powerpc/Kconfig   2012-03-19 19:46:44.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/powerpc/Kconfig 2012-02-24 03:55:06.000000000 +0100
-@@ -997,6 +997,8 @@ source "lib/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/powerpc/Kconfig linux-3.4-vs2.3.3.4/arch/powerpc/Kconfig
+--- linux-3.4/arch/powerpc/Kconfig     2012-05-21 18:06:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/powerpc/Kconfig   2012-05-21 18:15:04.000000000 +0200
+@@ -1002,6 +1002,8 @@ source "lib/Kconfig"
  
  source "arch/powerpc/Kconfig.debug"
  
@@ -604,9 +604,9 @@ diff -NurpP --minimal linux-3.3.1/arch/powerpc/Kconfig linux-3.3.1-vs2.3.3.2/arc
  source "security/Kconfig"
  
  config KEYS_COMPAT
-diff -NurpP --minimal linux-3.3.1/arch/powerpc/include/asm/unistd.h linux-3.3.1-vs2.3.3.2/arch/powerpc/include/asm/unistd.h
---- linux-3.3.1/arch/powerpc/include/asm/unistd.h      2012-01-09 16:14:05.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/powerpc/include/asm/unistd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/powerpc/include/asm/unistd.h linux-3.4-vs2.3.3.4/arch/powerpc/include/asm/unistd.h
+--- linux-3.4/arch/powerpc/include/asm/unistd.h        2012-01-09 16:14:05.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/powerpc/include/asm/unistd.h      2012-05-21 18:15:04.000000000 +0200
 @@ -275,7 +275,7 @@
  #endif
  #define __NR_rtas             255
@@ -616,10 +616,10 @@ diff -NurpP --minimal linux-3.3.1/arch/powerpc/include/asm/unistd.h linux-3.3.1-
  #define __NR_migrate_pages    258
  #define __NR_mbind            259
  #define __NR_get_mempolicy    260
-diff -NurpP --minimal linux-3.3.1/arch/powerpc/kernel/process.c linux-3.3.1-vs2.3.3.2/arch/powerpc/kernel/process.c
---- linux-3.3.1/arch/powerpc/kernel/process.c  2012-03-19 19:46:45.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/powerpc/kernel/process.c        2012-02-24 03:55:06.000000000 +0100
-@@ -656,8 +656,9 @@ void show_regs(struct pt_regs * regs)
+diff -NurpP --minimal linux-3.4/arch/powerpc/kernel/process.c linux-3.4-vs2.3.3.4/arch/powerpc/kernel/process.c
+--- linux-3.4/arch/powerpc/kernel/process.c    2012-05-21 18:06:30.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/powerpc/kernel/process.c  2012-05-21 18:15:04.000000000 +0200
+@@ -661,8 +661,9 @@ void show_regs(struct pt_regs * regs)
  #else
                printk("DAR: "REG", DSISR: %08lx\n", regs->dar, regs->dsisr);
  #endif
@@ -631,10 +631,10 @@ diff -NurpP --minimal linux-3.3.1/arch/powerpc/kernel/process.c linux-3.3.1-vs2.
  
  #ifdef CONFIG_SMP
        printk(" CPU: %d", raw_smp_processor_id());
-diff -NurpP --minimal linux-3.3.1/arch/powerpc/kernel/traps.c linux-3.3.1-vs2.3.3.2/arch/powerpc/kernel/traps.c
---- linux-3.3.1/arch/powerpc/kernel/traps.c    2012-03-19 19:46:45.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/powerpc/kernel/traps.c  2012-02-24 03:55:06.000000000 +0100
-@@ -1105,8 +1105,9 @@ void nonrecoverable_exception(struct pt_
+diff -NurpP --minimal linux-3.4/arch/powerpc/kernel/traps.c linux-3.4-vs2.3.3.4/arch/powerpc/kernel/traps.c
+--- linux-3.4/arch/powerpc/kernel/traps.c      2012-05-21 18:06:30.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/powerpc/kernel/traps.c    2012-05-21 18:15:04.000000000 +0200
+@@ -1118,8 +1118,9 @@ void nonrecoverable_exception(struct pt_
  
  void trace_syscall(struct pt_regs *regs)
  {
@@ -646,10 +646,10 @@ diff -NurpP --minimal linux-3.3.1/arch/powerpc/kernel/traps.c linux-3.3.1-vs2.3.
               regs->ccr&0x10000000?"Error=":"", regs->gpr[3], print_tainted());
  }
  
-diff -NurpP --minimal linux-3.3.1/arch/s390/Kconfig linux-3.3.1-vs2.3.3.2/arch/s390/Kconfig
---- linux-3.3.1/arch/s390/Kconfig      2012-03-19 19:46:48.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/s390/Kconfig    2012-03-19 20:52:09.000000000 +0100
-@@ -638,6 +638,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/s390/Kconfig linux-3.4-vs2.3.3.4/arch/s390/Kconfig
+--- linux-3.4/arch/s390/Kconfig        2012-05-21 18:06:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/s390/Kconfig      2012-05-21 18:15:04.000000000 +0200
+@@ -639,6 +639,8 @@ source "fs/Kconfig"
  
  source "arch/s390/Kconfig.debug"
  
@@ -658,9 +658,9 @@ diff -NurpP --minimal linux-3.3.1/arch/s390/Kconfig linux-3.3.1-vs2.3.3.2/arch/s
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/s390/include/asm/tlb.h linux-3.3.1-vs2.3.3.2/arch/s390/include/asm/tlb.h
---- linux-3.3.1/arch/s390/include/asm/tlb.h    2011-07-22 11:17:41.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/s390/include/asm/tlb.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/s390/include/asm/tlb.h linux-3.4-vs2.3.3.4/arch/s390/include/asm/tlb.h
+--- linux-3.4/arch/s390/include/asm/tlb.h      2012-05-21 18:06:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/s390/include/asm/tlb.h    2012-05-21 18:15:04.000000000 +0200
 @@ -24,6 +24,7 @@
  #include <linux/mm.h>
  #include <linux/pagemap.h>
@@ -669,9 +669,9 @@ diff -NurpP --minimal linux-3.3.1/arch/s390/include/asm/tlb.h linux-3.3.1-vs2.3.
  #include <asm/processor.h>
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
-diff -NurpP --minimal linux-3.3.1/arch/s390/include/asm/unistd.h linux-3.3.1-vs2.3.3.2/arch/s390/include/asm/unistd.h
---- linux-3.3.1/arch/s390/include/asm/unistd.h 2012-03-19 19:46:48.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/s390/include/asm/unistd.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/s390/include/asm/unistd.h linux-3.4-vs2.3.3.4/arch/s390/include/asm/unistd.h
+--- linux-3.4/arch/s390/include/asm/unistd.h   2012-03-19 19:46:48.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/s390/include/asm/unistd.h 2012-05-21 18:15:04.000000000 +0200
 @@ -202,7 +202,7 @@
  #define __NR_clock_gettime    (__NR_timer_create+6)
  #define __NR_clock_getres     (__NR_timer_create+7)
@@ -681,9 +681,9 @@ diff -NurpP --minimal linux-3.3.1/arch/s390/include/asm/unistd.h linux-3.3.1-vs2
  #define __NR_statfs64         265
  #define __NR_fstatfs64                266
  #define __NR_remap_file_pages 267
-diff -NurpP --minimal linux-3.3.1/arch/s390/kernel/ptrace.c linux-3.3.1-vs2.3.3.2/arch/s390/kernel/ptrace.c
---- linux-3.3.1/arch/s390/kernel/ptrace.c      2012-03-19 19:46:48.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/s390/kernel/ptrace.c    2012-03-19 20:53:54.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/s390/kernel/ptrace.c linux-3.4-vs2.3.3.4/arch/s390/kernel/ptrace.c
+--- linux-3.4/arch/s390/kernel/ptrace.c        2012-05-21 18:06:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/s390/kernel/ptrace.c      2012-05-21 18:15:04.000000000 +0200
 @@ -21,6 +21,7 @@
  #include <linux/tracehook.h>
  #include <linux/seccomp.h>
@@ -692,9 +692,9 @@ diff -NurpP --minimal linux-3.3.1/arch/s390/kernel/ptrace.c linux-3.3.1-vs2.3.3.
  #include <trace/syscall.h>
  #include <asm/segment.h>
  #include <asm/page.h>
-diff -NurpP --minimal linux-3.3.1/arch/s390/kernel/syscalls.S linux-3.3.1-vs2.3.3.2/arch/s390/kernel/syscalls.S
---- linux-3.3.1/arch/s390/kernel/syscalls.S    2012-01-09 16:14:06.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/s390/kernel/syscalls.S  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/s390/kernel/syscalls.S linux-3.4-vs2.3.3.4/arch/s390/kernel/syscalls.S
+--- linux-3.4/arch/s390/kernel/syscalls.S      2012-01-09 16:14:06.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/s390/kernel/syscalls.S    2012-05-21 18:15:04.000000000 +0200
 @@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
  SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper)      /* 260 */
  SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
@@ -704,10 +704,10 @@ diff -NurpP --minimal linux-3.3.1/arch/s390/kernel/syscalls.S linux-3.3.1-vs2.3.
  SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
  SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
  SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
-diff -NurpP --minimal linux-3.3.1/arch/sh/Kconfig linux-3.3.1-vs2.3.3.2/arch/sh/Kconfig
---- linux-3.3.1/arch/sh/Kconfig        2012-03-19 19:46:49.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/sh/Kconfig      2012-02-24 03:55:06.000000000 +0100
-@@ -901,6 +901,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/sh/Kconfig linux-3.4-vs2.3.3.4/arch/sh/Kconfig
+--- linux-3.4/arch/sh/Kconfig  2012-05-21 18:06:33.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/sh/Kconfig        2012-05-21 18:15:04.000000000 +0200
+@@ -905,6 +905,8 @@ source "fs/Kconfig"
  
  source "arch/sh/Kconfig.debug"
  
@@ -716,9 +716,9 @@ diff -NurpP --minimal linux-3.3.1/arch/sh/Kconfig linux-3.3.1-vs2.3.3.2/arch/sh/
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/sh/kernel/irq.c linux-3.3.1-vs2.3.3.2/arch/sh/kernel/irq.c
---- linux-3.3.1/arch/sh/kernel/irq.c   2011-07-22 11:17:41.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/sh/kernel/irq.c 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/sh/kernel/irq.c linux-3.4-vs2.3.3.4/arch/sh/kernel/irq.c
+--- linux-3.4/arch/sh/kernel/irq.c     2011-07-22 11:17:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/sh/kernel/irq.c   2012-05-21 18:15:04.000000000 +0200
 @@ -14,6 +14,7 @@
  #include <linux/ftrace.h>
  #include <linux/delay.h>
@@ -727,10 +727,10 @@ diff -NurpP --minimal linux-3.3.1/arch/sh/kernel/irq.c linux-3.3.1-vs2.3.3.2/arc
  #include <asm/processor.h>
  #include <asm/machvec.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-3.3.1/arch/sparc/Kconfig linux-3.3.1-vs2.3.3.2/arch/sparc/Kconfig
---- linux-3.3.1/arch/sparc/Kconfig     2012-03-19 19:46:49.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/sparc/Kconfig   2012-02-24 03:55:06.000000000 +0100
-@@ -594,6 +594,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/sparc/Kconfig linux-3.4-vs2.3.3.4/arch/sparc/Kconfig
+--- linux-3.4/arch/sparc/Kconfig       2012-05-21 18:06:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/sparc/Kconfig     2012-05-21 18:15:04.000000000 +0200
+@@ -596,6 +596,8 @@ source "fs/Kconfig"
  
  source "arch/sparc/Kconfig.debug"
  
@@ -739,9 +739,9 @@ diff -NurpP --minimal linux-3.3.1/arch/sparc/Kconfig linux-3.3.1-vs2.3.3.2/arch/
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/sparc/include/asm/unistd.h linux-3.3.1-vs2.3.3.2/arch/sparc/include/asm/unistd.h
---- linux-3.3.1/arch/sparc/include/asm/unistd.h        2012-01-09 16:14:07.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/sparc/include/asm/unistd.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/sparc/include/asm/unistd.h linux-3.4-vs2.3.3.4/arch/sparc/include/asm/unistd.h
+--- linux-3.4/arch/sparc/include/asm/unistd.h  2012-01-09 16:14:07.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/sparc/include/asm/unistd.h        2012-05-21 18:15:04.000000000 +0200
 @@ -335,7 +335,7 @@
  #define __NR_timer_getoverrun 264
  #define __NR_timer_delete     265
@@ -751,9 +751,9 @@ diff -NurpP --minimal linux-3.3.1/arch/sparc/include/asm/unistd.h linux-3.3.1-vs
  #define __NR_io_setup         268
  #define __NR_io_destroy               269
  #define __NR_io_submit                270
-diff -NurpP --minimal linux-3.3.1/arch/sparc/kernel/systbls_32.S linux-3.3.1-vs2.3.3.2/arch/sparc/kernel/systbls_32.S
---- linux-3.3.1/arch/sparc/kernel/systbls_32.S 2012-01-09 16:14:09.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/sparc/kernel/systbls_32.S       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/sparc/kernel/systbls_32.S linux-3.4-vs2.3.3.4/arch/sparc/kernel/systbls_32.S
+--- linux-3.4/arch/sparc/kernel/systbls_32.S   2012-01-09 16:14:09.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/sparc/kernel/systbls_32.S 2012-05-21 18:15:04.000000000 +0200
 @@ -70,7 +70,7 @@ sys_call_table:
  /*250*/       .long sys_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_ni_syscall
  /*255*/       .long sys_sync_file_range, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
@@ -763,9 +763,9 @@ diff -NurpP --minimal linux-3.3.1/arch/sparc/kernel/systbls_32.S linux-3.3.1-vs2
  /*270*/       .long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
  /*275*/       .long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
  /*280*/       .long sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff -NurpP --minimal linux-3.3.1/arch/sparc/kernel/systbls_64.S linux-3.3.1-vs2.3.3.2/arch/sparc/kernel/systbls_64.S
---- linux-3.3.1/arch/sparc/kernel/systbls_64.S 2012-01-09 16:14:09.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/sparc/kernel/systbls_64.S       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/sparc/kernel/systbls_64.S linux-3.4-vs2.3.3.4/arch/sparc/kernel/systbls_64.S
+--- linux-3.4/arch/sparc/kernel/systbls_64.S   2012-01-09 16:14:09.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/sparc/kernel/systbls_64.S 2012-05-21 18:15:04.000000000 +0200
 @@ -71,7 +71,7 @@ sys_call_table32:
  /*250*/       .word sys_mremap, compat_sys_sysctl, sys32_getsid, sys_fdatasync, sys_nis_syscall
        .word sys32_sync_file_range, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
@@ -784,9 +784,9 @@ diff -NurpP --minimal linux-3.3.1/arch/sparc/kernel/systbls_64.S linux-3.3.1-vs2
  /*270*/       .word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
        .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
  /*280*/       .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff -NurpP --minimal linux-3.3.1/arch/um/Kconfig.rest linux-3.3.1-vs2.3.3.2/arch/um/Kconfig.rest
---- linux-3.3.1/arch/um/Kconfig.rest   2012-01-09 16:14:09.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/um/Kconfig.rest 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/um/Kconfig.rest linux-3.4-vs2.3.3.4/arch/um/Kconfig.rest
+--- linux-3.4/arch/um/Kconfig.rest     2012-01-09 16:14:09.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/um/Kconfig.rest   2012-05-21 18:15:04.000000000 +0200
 @@ -12,6 +12,8 @@ source "arch/um/Kconfig.net"
  
  source "fs/Kconfig"
@@ -796,14 +796,14 @@ diff -NurpP --minimal linux-3.3.1/arch/um/Kconfig.rest linux-3.3.1-vs2.3.3.2/arc
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/um/include/shared/kern_constants.h linux-3.3.1-vs2.3.3.2/arch/um/include/shared/kern_constants.h
---- linux-3.3.1/arch/um/include/shared/kern_constants.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/um/include/shared/kern_constants.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/um/include/shared/kern_constants.h linux-3.4-vs2.3.3.4/arch/um/include/shared/kern_constants.h
+--- linux-3.4/arch/um/include/shared/kern_constants.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/um/include/shared/kern_constants.h        2012-05-21 18:15:04.000000000 +0200
 @@ -0,0 +1 @@
 +#include "../../../../include/generated/asm-offsets.h"
-diff -NurpP --minimal linux-3.3.1/arch/um/include/shared/user_constants.h linux-3.3.1-vs2.3.3.2/arch/um/include/shared/user_constants.h
---- linux-3.3.1/arch/um/include/shared/user_constants.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/um/include/shared/user_constants.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/um/include/shared/user_constants.h linux-3.4-vs2.3.3.4/arch/um/include/shared/user_constants.h
+--- linux-3.4/arch/um/include/shared/user_constants.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/arch/um/include/shared/user_constants.h        2012-05-21 18:15:04.000000000 +0200
 @@ -0,0 +1,40 @@
 +/*
 + * DO NOT MODIFY.
@@ -845,10 +845,10 @@ diff -NurpP --minimal linux-3.3.1/arch/um/include/shared/user_constants.h linux-
 +#define UM_PROT_WRITE 2 /* PROT_WRITE # */
 +#define UM_PROT_EXEC 4 /* PROT_EXEC   # */
 +
-diff -NurpP --minimal linux-3.3.1/arch/x86/Kconfig linux-3.3.1-vs2.3.3.2/arch/x86/Kconfig
---- linux-3.3.1/arch/x86/Kconfig       2012-03-19 19:46:49.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/x86/Kconfig     2012-02-24 03:55:06.000000000 +0100
-@@ -2213,6 +2213,8 @@ source "fs/Kconfig"
+diff -NurpP --minimal linux-3.4/arch/x86/Kconfig linux-3.4-vs2.3.3.4/arch/x86/Kconfig
+--- linux-3.4/arch/x86/Kconfig 2012-05-21 18:06:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/x86/Kconfig       2012-05-21 18:15:04.000000000 +0200
+@@ -2225,6 +2225,8 @@ source "fs/Kconfig"
  
  source "arch/x86/Kconfig.debug"
  
@@ -857,9 +857,9 @@ diff -NurpP --minimal linux-3.3.1/arch/x86/Kconfig linux-3.3.1-vs2.3.3.2/arch/x8
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-3.3.1/arch/x86/syscalls/syscall_32.tbl linux-3.3.1-vs2.3.3.2/arch/x86/syscalls/syscall_32.tbl
---- linux-3.3.1/arch/x86/syscalls/syscall_32.tbl       2012-04-03 03:01:24.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/arch/x86/syscalls/syscall_32.tbl     2012-04-03 03:02:12.000000000 +0200
+diff -NurpP --minimal linux-3.4/arch/x86/syscalls/syscall_32.tbl linux-3.4-vs2.3.3.4/arch/x86/syscalls/syscall_32.tbl
+--- linux-3.4/arch/x86/syscalls/syscall_32.tbl 2012-05-21 18:06:42.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/x86/syscalls/syscall_32.tbl       2012-05-21 18:15:04.000000000 +0200
 @@ -279,7 +279,7 @@
  270   i386    tgkill                  sys_tgkill
  271   i386    utimes                  sys_utimes                      compat_sys_utimes
@@ -869,21 +869,22 @@ diff -NurpP --minimal linux-3.3.1/arch/x86/syscalls/syscall_32.tbl linux-3.3.1-v
  274   i386    mbind                   sys_mbind
  275   i386    get_mempolicy           sys_get_mempolicy               compat_sys_get_mempolicy
  276   i386    set_mempolicy           sys_set_mempolicy
-diff -NurpP --minimal linux-3.3.1/arch/x86/syscalls/syscall_64.tbl linux-3.3.1-vs2.3.3.2/arch/x86/syscalls/syscall_64.tbl
---- linux-3.3.1/arch/x86/syscalls/syscall_64.tbl       2012-03-19 19:46:51.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/arch/x86/syscalls/syscall_64.tbl     2012-02-24 16:29:25.000000000 +0100
+diff -NurpP --minimal linux-3.4/arch/x86/syscalls/syscall_64.tbl linux-3.4-vs2.3.3.4/arch/x86/syscalls/syscall_64.tbl
+--- linux-3.4/arch/x86/syscalls/syscall_64.tbl 2012-05-21 18:06:42.000000000 +0200
++++ linux-3.4-vs2.3.3.4/arch/x86/syscalls/syscall_64.tbl       2012-05-21 18:15:04.000000000 +0200
 @@ -242,7 +242,7 @@
- 233   64      epoll_ctl               sys_epoll_ctl
- 234   64      tgkill                  sys_tgkill
- 235   64      utimes                  sys_utimes
+ 233   common  epoll_ctl               sys_epoll_ctl
+ 234   common  tgkill                  sys_tgkill
+ 235   common  utimes                  sys_utimes
 -236   64      vserver
 +236   64      vserver                 sys_vserver
- 237   64      mbind                   sys_mbind
- 238   64      set_mempolicy           sys_set_mempolicy
- 239   64      get_mempolicy           sys_get_mempolicy
-diff -NurpP --minimal linux-3.3.1/drivers/block/Kconfig linux-3.3.1-vs2.3.3.2/drivers/block/Kconfig
---- linux-3.3.1/drivers/block/Kconfig  2012-03-19 19:46:52.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/block/Kconfig        2012-02-24 03:55:06.000000000 +0100
+ 237   common  mbind                   sys_mbind
+ 238   common  set_mempolicy           sys_set_mempolicy
+ 239   common  get_mempolicy           sys_get_mempolicy
+Files linux-3.4/arch/x86/tools/relocs and linux-3.4-vs2.3.3.4/arch/x86/tools/relocs differ
+diff -NurpP --minimal linux-3.4/drivers/block/Kconfig linux-3.4-vs2.3.3.4/drivers/block/Kconfig
+--- linux-3.4/drivers/block/Kconfig    2012-05-21 18:06:43.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/block/Kconfig  2012-05-21 18:15:04.000000000 +0200
 @@ -290,6 +290,13 @@ config BLK_DEV_CRYPTOLOOP
  
  source "drivers/block/drbd/Kconfig"
@@ -898,9 +899,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/block/Kconfig linux-3.3.1-vs2.3.3.2/dr
  config BLK_DEV_NBD
        tristate "Network block device support"
        depends on NET
-diff -NurpP --minimal linux-3.3.1/drivers/block/Makefile linux-3.3.1-vs2.3.3.2/drivers/block/Makefile
---- linux-3.3.1/drivers/block/Makefile 2012-03-19 19:46:52.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/block/Makefile       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/block/Makefile linux-3.4-vs2.3.3.4/drivers/block/Makefile
+--- linux-3.4/drivers/block/Makefile   2012-03-19 19:46:52.000000000 +0100
++++ linux-3.4-vs2.3.3.4/drivers/block/Makefile 2012-05-21 18:15:04.000000000 +0200
 @@ -35,6 +35,7 @@ obj-$(CONFIG_VIODASD)                += viodasd.o
  obj-$(CONFIG_BLK_DEV_SX8)     += sx8.o
  obj-$(CONFIG_BLK_DEV_UB)      += ub.o
@@ -909,9 +910,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/block/Makefile linux-3.3.1-vs2.3.3.2/d
  
  obj-$(CONFIG_XEN_BLKDEV_FRONTEND)     += xen-blkfront.o
  obj-$(CONFIG_XEN_BLKDEV_BACKEND)      += xen-blkback/
-diff -NurpP --minimal linux-3.3.1/drivers/block/loop.c linux-3.3.1-vs2.3.3.2/drivers/block/loop.c
---- linux-3.3.1/drivers/block/loop.c   2012-03-19 19:46:52.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/block/loop.c 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/block/loop.c linux-3.4-vs2.3.3.4/drivers/block/loop.c
+--- linux-3.4/drivers/block/loop.c     2012-05-21 18:06:43.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/block/loop.c   2012-05-21 18:15:04.000000000 +0200
 @@ -76,6 +76,7 @@
  #include <linux/sysfs.h>
  #include <linux/miscdevice.h>
@@ -967,9 +968,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/block/loop.c linux-3.3.1-vs2.3.3.2/dri
        mutex_lock(&lo->lo_ctl_mutex);
        lo->lo_refcnt++;
        mutex_unlock(&lo->lo_ctl_mutex);
-diff -NurpP --minimal linux-3.3.1/drivers/block/vroot.c linux-3.3.1-vs2.3.3.2/drivers/block/vroot.c
---- linux-3.3.1/drivers/block/vroot.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/block/vroot.c        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/block/vroot.c linux-3.4-vs2.3.3.4/drivers/block/vroot.c
+--- linux-3.4/drivers/block/vroot.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/drivers/block/vroot.c  2012-05-21 18:15:04.000000000 +0200
 @@ -0,0 +1,291 @@
 +/*
 + *  linux/drivers/block/vroot.c
@@ -1262,9 +1263,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/block/vroot.c linux-3.3.1-vs2.3.3.2/dr
 +
 +#endif
 +
-diff -NurpP --minimal linux-3.3.1/drivers/infiniband/Kconfig linux-3.3.1-vs2.3.3.2/drivers/infiniband/Kconfig
---- linux-3.3.1/drivers/infiniband/Kconfig     2012-03-19 19:46:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/infiniband/Kconfig   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/infiniband/Kconfig linux-3.4-vs2.3.3.4/drivers/infiniband/Kconfig
+--- linux-3.4/drivers/infiniband/Kconfig       2012-03-19 19:46:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/drivers/infiniband/Kconfig     2012-05-21 18:15:04.000000000 +0200
 @@ -39,7 +39,7 @@ config INFINIBAND_USER_MEM
  config INFINIBAND_ADDR_TRANS
        bool
@@ -1274,10 +1275,10 @@ diff -NurpP --minimal linux-3.3.1/drivers/infiniband/Kconfig linux-3.3.1-vs2.3.3
        default y
  
  source "drivers/infiniband/hw/mthca/Kconfig"
-diff -NurpP --minimal linux-3.3.1/drivers/infiniband/core/addr.c linux-3.3.1-vs2.3.3.2/drivers/infiniband/core/addr.c
---- linux-3.3.1/drivers/infiniband/core/addr.c 2012-03-19 19:46:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/infiniband/core/addr.c       2012-02-24 03:55:06.000000000 +0100
-@@ -259,7 +259,7 @@ static int addr6_resolve(struct sockaddr
+diff -NurpP --minimal linux-3.4/drivers/infiniband/core/addr.c linux-3.4-vs2.3.3.4/drivers/infiniband/core/addr.c
+--- linux-3.4/drivers/infiniband/core/addr.c   2012-05-21 18:06:46.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/infiniband/core/addr.c 2012-05-21 18:15:04.000000000 +0200
+@@ -263,7 +263,7 @@ static int addr6_resolve(struct sockaddr
  
        if (ipv6_addr_any(&fl6.saddr)) {
                ret = ipv6_dev_get_saddr(&init_net, ip6_dst_idev(dst)->dev,
@@ -1286,9 +1287,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/infiniband/core/addr.c linux-3.3.1-vs2
                if (ret)
                        goto put;
  
-diff -NurpP --minimal linux-3.3.1/drivers/md/dm-ioctl.c linux-3.3.1-vs2.3.3.2/drivers/md/dm-ioctl.c
---- linux-3.3.1/drivers/md/dm-ioctl.c  2012-03-19 19:46:59.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/md/dm-ioctl.c        2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/md/dm-ioctl.c linux-3.4-vs2.3.3.4/drivers/md/dm-ioctl.c
+--- linux-3.4/drivers/md/dm-ioctl.c    2012-05-21 18:06:49.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/md/dm-ioctl.c  2012-05-21 18:15:04.000000000 +0200
 @@ -16,6 +16,7 @@
  #include <linux/dm-ioctl.h>
  #include <linux/hdreg.h>
@@ -1363,7 +1364,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/md/dm-ioctl.c linux-3.3.1-vs2.3.3.2/dr
                        if (old_nl)
                                old_nl->next = (uint32_t) ((void *) nl -
                                                           (void *) old_nl);
-@@ -1615,8 +1627,8 @@ static int ctl_ioctl(uint command, struc
+@@ -1616,8 +1628,8 @@ static int ctl_ioctl(uint command, struc
        ioctl_fn fn = NULL;
        size_t input_param_size;
  
@@ -1374,9 +1375,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/md/dm-ioctl.c linux-3.3.1-vs2.3.3.2/dr
                return -EACCES;
  
        if (_IOC_TYPE(command) != DM_IOCTL)
-diff -NurpP --minimal linux-3.3.1/drivers/md/dm.c linux-3.3.1-vs2.3.3.2/drivers/md/dm.c
---- linux-3.3.1/drivers/md/dm.c        2012-03-19 19:46:59.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/md/dm.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/md/dm.c linux-3.4-vs2.3.3.4/drivers/md/dm.c
+--- linux-3.4/drivers/md/dm.c  2012-05-21 18:06:49.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/md/dm.c        2012-05-21 18:15:04.000000000 +0200
 @@ -19,6 +19,7 @@
  #include <linux/idr.h>
  #include <linux/hdreg.h>
@@ -1442,7 +1443,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/md/dm.c linux-3.3.1-vs2.3.3.2/drivers/
  /*-----------------------------------------------------------------
   * CRUD START:
   *   A more elegant soln is in the works that uses the queue
-@@ -1849,6 +1861,7 @@ static struct mapped_device *alloc_dev(i
+@@ -1850,6 +1862,7 @@ static struct mapped_device *alloc_dev(i
        INIT_LIST_HEAD(&md->uevent_list);
        spin_lock_init(&md->uevent_lock);
  
@@ -1450,9 +1451,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/md/dm.c linux-3.3.1-vs2.3.3.2/drivers/
        md->queue = blk_alloc_queue(GFP_KERNEL);
        if (!md->queue)
                goto bad_queue;
-diff -NurpP --minimal linux-3.3.1/drivers/md/dm.h linux-3.3.1-vs2.3.3.2/drivers/md/dm.h
---- linux-3.3.1/drivers/md/dm.h        2012-01-09 16:14:21.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/md/dm.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/md/dm.h linux-3.4-vs2.3.3.4/drivers/md/dm.h
+--- linux-3.4/drivers/md/dm.h  2012-01-09 16:14:21.000000000 +0100
++++ linux-3.4-vs2.3.3.4/drivers/md/dm.h        2012-05-21 18:15:04.000000000 +0200
 @@ -41,6 +41,8 @@ struct dm_dev_internal {
  struct dm_table;
  struct dm_md_mempools;
@@ -1462,9 +1463,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/md/dm.h linux-3.3.1-vs2.3.3.2/drivers/
  /*-----------------------------------------------------------------
   * Internal table functions.
   *---------------------------------------------------------------*/
-diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/drivers/net/tun.c
---- linux-3.3.1/drivers/net/tun.c      2012-03-19 19:47:08.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/net/tun.c    2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/net/tun.c linux-3.4-vs2.3.3.4/drivers/net/tun.c
+--- linux-3.4/drivers/net/tun.c        2012-05-21 18:07:00.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/net/tun.c      2012-05-21 18:15:04.000000000 +0200
 @@ -64,6 +64,7 @@
  #include <linux/nsproxy.h>
  #include <linux/virtio_net.h>
@@ -1473,7 +1474,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
  #include <net/net_namespace.h>
  #include <net/netns/generic.h>
  #include <net/rtnetlink.h>
-@@ -121,6 +122,7 @@ struct tun_struct {
+@@ -120,6 +121,7 @@ struct tun_struct {
        unsigned int            flags;
        uid_t                   owner;
        gid_t                   group;
@@ -1481,7 +1482,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
  
        struct net_device       *dev;
        netdev_features_t       set_features;
-@@ -910,6 +912,7 @@ static void tun_setup(struct net_device 
+@@ -909,6 +911,7 @@ static void tun_setup(struct net_device 
  
        tun->owner = -1;
        tun->group = -1;
@@ -1489,7 +1490,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
  
        dev->ethtool_ops = &tun_ethtool_ops;
        dev->destructor = tun_free_netdev;
-@@ -1068,7 +1071,7 @@ static int tun_set_iff(struct net *net, 
+@@ -1067,7 +1070,7 @@ static int tun_set_iff(struct net *net, 
  
                if (((tun->owner != -1 && cred->euid != tun->owner) ||
                     (tun->group != -1 && !in_egroup_p(tun->group))) &&
@@ -1498,7 +1499,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
                        return -EPERM;
                err = security_tun_dev_attach(tun->socket.sk);
                if (err < 0)
-@@ -1082,7 +1085,7 @@ static int tun_set_iff(struct net *net, 
+@@ -1081,7 +1084,7 @@ static int tun_set_iff(struct net *net, 
                char *name;
                unsigned long flags = 0;
  
@@ -1507,7 +1508,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
                        return -EPERM;
                err = security_tun_dev_create();
                if (err < 0)
-@@ -1151,6 +1154,9 @@ static int tun_set_iff(struct net *net, 
+@@ -1150,6 +1153,9 @@ static int tun_set_iff(struct net *net, 
  
                sk->sk_destruct = tun_sock_destruct;
  
@@ -1517,7 +1518,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
                err = tun_attach(tun, file);
                if (err < 0)
                        goto failed;
-@@ -1332,6 +1338,16 @@ static long __tun_chr_ioctl(struct file 
+@@ -1331,6 +1337,16 @@ static long __tun_chr_ioctl(struct file 
                tun_debug(KERN_INFO, tun, "group set to %d\n", tun->group);
                break;
  
@@ -1534,9 +1535,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/net/tun.c linux-3.3.1-vs2.3.3.2/driver
        case TUNSETLINK:
                /* Only allow setting the type when the interface is down */
                if (tun->dev->flags & IFF_UP) {
-diff -NurpP --minimal linux-3.3.1/drivers/tty/sysrq.c linux-3.3.1-vs2.3.3.2/drivers/tty/sysrq.c
---- linux-3.3.1/drivers/tty/sysrq.c    2012-03-19 19:47:19.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/tty/sysrq.c  2012-02-24 04:03:15.000000000 +0100
+diff -NurpP --minimal linux-3.4/drivers/tty/sysrq.c linux-3.4-vs2.3.3.4/drivers/tty/sysrq.c
+--- linux-3.4/drivers/tty/sysrq.c      2012-05-21 18:07:16.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/tty/sysrq.c    2012-05-21 18:15:04.000000000 +0200
 @@ -41,6 +41,7 @@
  #include <linux/slab.h>
  #include <linux/input.h>
@@ -1545,7 +1546,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/sysrq.c linux-3.3.1-vs2.3.3.2/driv
  
  #include <asm/ptrace.h>
  #include <asm/irq_regs.h>
-@@ -395,6 +396,21 @@ static struct sysrq_key_op sysrq_unrt_op
+@@ -398,6 +399,21 @@ static struct sysrq_key_op sysrq_unrt_op
        .enable_mask    = SYSRQ_ENABLE_RTNICE,
  };
  
@@ -1567,7 +1568,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/sysrq.c linux-3.3.1-vs2.3.3.2/driv
  /* Key Operations table and lock */
  static DEFINE_SPINLOCK(sysrq_key_table_lock);
  
-@@ -449,7 +465,11 @@ static struct sysrq_key_op *sysrq_key_ta
+@@ -452,7 +468,11 @@ static struct sysrq_key_op *sysrq_key_ta
        NULL,                           /* v */
        &sysrq_showstate_blocked_op,    /* w */
        /* x: May be registered on ppc/powerpc for xmon */
@@ -1579,7 +1580,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/sysrq.c linux-3.3.1-vs2.3.3.2/driv
        /* y: May be registered on sparc64 for global register dump */
        NULL,                           /* y */
        &sysrq_ftrace_dump_op,          /* z */
-@@ -464,6 +484,8 @@ static int sysrq_key_table_key2index(int
+@@ -467,6 +487,8 @@ static int sysrq_key_table_key2index(int
                retval = key - '0';
        else if ((key >= 'a') && (key <= 'z'))
                retval = key + 10 - 'a';
@@ -1588,10 +1589,10 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/sysrq.c linux-3.3.1-vs2.3.3.2/driv
        else
                retval = -1;
        return retval;
-diff -NurpP --minimal linux-3.3.1/drivers/tty/tty_io.c linux-3.3.1-vs2.3.3.2/drivers/tty/tty_io.c
---- linux-3.3.1/drivers/tty/tty_io.c   2012-03-19 19:47:19.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/drivers/tty/tty_io.c 2012-02-24 03:55:06.000000000 +0100
-@@ -105,6 +105,7 @@
+diff -NurpP --minimal linux-3.4/drivers/tty/tty_io.c linux-3.4-vs2.3.3.4/drivers/tty/tty_io.c
+--- linux-3.4/drivers/tty/tty_io.c     2012-05-21 18:07:16.000000000 +0200
++++ linux-3.4-vs2.3.3.4/drivers/tty/tty_io.c   2012-05-21 18:15:04.000000000 +0200
+@@ -104,6 +104,7 @@
  
  #include <linux/kmod.h>
  #include <linux/nsproxy.h>
@@ -1599,7 +1600,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/tty_io.c linux-3.3.1-vs2.3.3.2/dri
  
  #undef TTY_DEBUG_HANGUP
  
-@@ -2131,7 +2132,8 @@ static int tiocsti(struct tty_struct *tt
+@@ -2118,7 +2119,8 @@ static int tiocsti(struct tty_struct *tt
        char ch, mbz = 0;
        struct tty_ldisc *ld;
  
@@ -1609,7 +1610,7 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/tty_io.c linux-3.3.1-vs2.3.3.2/dri
                return -EPERM;
        if (get_user(ch, p))
                return -EFAULT;
-@@ -2419,6 +2421,7 @@ static int tiocspgrp(struct tty_struct *
+@@ -2406,6 +2408,7 @@ static int tiocspgrp(struct tty_struct *
                return -ENOTTY;
        if (get_user(pgrp_nr, p))
                return -EFAULT;
@@ -1617,9 +1618,9 @@ diff -NurpP --minimal linux-3.3.1/drivers/tty/tty_io.c linux-3.3.1-vs2.3.3.2/dri
        if (pgrp_nr < 0)
                return -EINVAL;
        rcu_read_lock();
-diff -NurpP --minimal linux-3.3.1/fs/attr.c linux-3.3.1-vs2.3.3.2/fs/attr.c
---- linux-3.3.1/fs/attr.c      2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/attr.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/attr.c linux-3.4-vs2.3.3.4/fs/attr.c
+--- linux-3.4/fs/attr.c        2012-05-21 18:07:18.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/attr.c      2012-05-21 18:15:04.000000000 +0200
 @@ -14,6 +14,9 @@
  #include <linux/fcntl.h>
  #include <linux/security.h>
@@ -1660,10 +1661,10 @@ diff -NurpP --minimal linux-3.3.1/fs/attr.c linux-3.3.1-vs2.3.3.2/fs/attr.c
                if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
                        return -EPERM;
        }
-diff -NurpP --minimal linux-3.3.1/fs/block_dev.c linux-3.3.1-vs2.3.3.2/fs/block_dev.c
---- linux-3.3.1/fs/block_dev.c 2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/block_dev.c       2012-03-19 20:52:10.000000000 +0100
-@@ -26,6 +26,7 @@
+diff -NurpP --minimal linux-3.4/fs/block_dev.c linux-3.4-vs2.3.3.4/fs/block_dev.c
+--- linux-3.4/fs/block_dev.c   2012-05-21 18:07:18.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/block_dev.c 2012-05-21 18:15:04.000000000 +0200
+@@ -27,6 +27,7 @@
  #include <linux/namei.h>
  #include <linux/log2.h>
  #include <linux/cleancache.h>
@@ -1671,7 +1672,7 @@ diff -NurpP --minimal linux-3.3.1/fs/block_dev.c linux-3.3.1-vs2.3.3.2/fs/block_
  #include <asm/uaccess.h>
  #include "internal.h"
  
-@@ -580,6 +581,7 @@ struct block_device *bdget(dev_t dev)
+@@ -581,6 +582,7 @@ struct block_device *bdget(dev_t dev)
                bdev->bd_invalidated = 0;
                inode->i_mode = S_IFBLK;
                inode->i_rdev = dev;
@@ -1679,7 +1680,7 @@ diff -NurpP --minimal linux-3.3.1/fs/block_dev.c linux-3.3.1-vs2.3.3.2/fs/block_
                inode->i_bdev = bdev;
                inode->i_data.a_ops = &def_blk_aops;
                mapping_set_gfp_mask(&inode->i_data, GFP_USER);
-@@ -626,6 +628,11 @@ EXPORT_SYMBOL(bdput);
+@@ -627,6 +629,11 @@ EXPORT_SYMBOL(bdput);
  static struct block_device *bd_acquire(struct inode *inode)
  {
        struct block_device *bdev;
@@ -1691,7 +1692,7 @@ diff -NurpP --minimal linux-3.3.1/fs/block_dev.c linux-3.3.1-vs2.3.3.2/fs/block_
  
        spin_lock(&bdev_lock);
        bdev = inode->i_bdev;
-@@ -636,7 +643,7 @@ static struct block_device *bd_acquire(s
+@@ -637,7 +644,7 @@ static struct block_device *bd_acquire(s
        }
        spin_unlock(&bdev_lock);
  
@@ -1700,10 +1701,10 @@ diff -NurpP --minimal linux-3.3.1/fs/block_dev.c linux-3.3.1-vs2.3.3.2/fs/block_
        if (bdev) {
                spin_lock(&bdev_lock);
                if (!inode->i_bdev) {
-diff -NurpP --minimal linux-3.3.1/fs/btrfs/ctree.h linux-3.3.1-vs2.3.3.2/fs/btrfs/ctree.h
---- linux-3.3.1/fs/btrfs/ctree.h       2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/btrfs/ctree.h     2012-03-19 20:52:10.000000000 +0100
-@@ -646,11 +646,14 @@ struct btrfs_inode_item {
+diff -NurpP --minimal linux-3.4/fs/btrfs/ctree.h linux-3.4-vs2.3.3.4/fs/btrfs/ctree.h
+--- linux-3.4/fs/btrfs/ctree.h 2012-05-21 18:07:18.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/btrfs/ctree.h       2012-05-21 18:15:04.000000000 +0200
+@@ -668,11 +668,14 @@ struct btrfs_inode_item {
        /* modification sequence number for NFS */
        __le64 sequence;
  
@@ -1719,16 +1720,16 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/ctree.h linux-3.3.1-vs2.3.3.2/fs/btrf
        struct btrfs_timespec atime;
        struct btrfs_timespec ctime;
        struct btrfs_timespec mtime;
-@@ -1504,6 +1507,8 @@ struct btrfs_ioctl_defrag_range_args {
- #define BTRFS_MOUNT_CHECK_INTEGRITY   (1 << 20)
+@@ -1542,6 +1545,8 @@ struct btrfs_ioctl_defrag_range_args {
  #define BTRFS_MOUNT_CHECK_INTEGRITY_INCLUDING_EXTENT_DATA (1 << 21)
+ #define BTRFS_MOUNT_PANIC_ON_FATAL_ERROR      (1 << 22)
  
 +#define BTRFS_MOUNT_TAGGED            (1 << 24)
 +
  #define btrfs_clear_opt(o, opt)               ((o) &= ~BTRFS_MOUNT_##opt)
  #define btrfs_set_opt(o, opt)         ((o) |= BTRFS_MOUNT_##opt)
  #define btrfs_test_opt(root, opt)     ((root)->fs_info->mount_opt & \
-@@ -1711,6 +1716,7 @@ BTRFS_SETGET_FUNCS(inode_block_group, st
+@@ -1762,6 +1767,7 @@ BTRFS_SETGET_FUNCS(inode_block_group, st
  BTRFS_SETGET_FUNCS(inode_nlink, struct btrfs_inode_item, nlink, 32);
  BTRFS_SETGET_FUNCS(inode_uid, struct btrfs_inode_item, uid, 32);
  BTRFS_SETGET_FUNCS(inode_gid, struct btrfs_inode_item, gid, 32);
@@ -1736,7 +1737,7 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/ctree.h linux-3.3.1-vs2.3.3.2/fs/btrf
  BTRFS_SETGET_FUNCS(inode_mode, struct btrfs_inode_item, mode, 32);
  BTRFS_SETGET_FUNCS(inode_rdev, struct btrfs_inode_item, rdev, 64);
  BTRFS_SETGET_FUNCS(inode_flags, struct btrfs_inode_item, flags, 64);
-@@ -1764,6 +1770,10 @@ BTRFS_SETGET_FUNCS(extent_flags, struct 
+@@ -1815,6 +1821,10 @@ BTRFS_SETGET_FUNCS(extent_flags, struct 
  
  BTRFS_SETGET_FUNCS(extent_refs_v0, struct btrfs_extent_item_v0, refs, 32);
  
@@ -1747,7 +1748,7 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/ctree.h linux-3.3.1-vs2.3.3.2/fs/btrf
  
  BTRFS_SETGET_FUNCS(tree_block_level, struct btrfs_tree_block_info, level, 8);
  
-@@ -2925,6 +2935,7 @@ extern const struct dentry_operations bt
+@@ -2959,6 +2969,7 @@ extern const struct dentry_operations bt
  long btrfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
  void btrfs_update_iflags(struct inode *inode);
  void btrfs_inherit_iflags(struct inode *inode, struct inode *dir);
@@ -1755,10 +1756,10 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/ctree.h linux-3.3.1-vs2.3.3.2/fs/btrf
  int btrfs_defrag_file(struct inode *inode, struct file *file,
                      struct btrfs_ioctl_defrag_range_args *range,
                      u64 newer_than, unsigned long max_pages);
-diff -NurpP --minimal linux-3.3.1/fs/btrfs/disk-io.c linux-3.3.1-vs2.3.3.2/fs/btrfs/disk-io.c
---- linux-3.3.1/fs/btrfs/disk-io.c     2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/btrfs/disk-io.c   2012-03-19 20:52:10.000000000 +0100
-@@ -2125,6 +2125,9 @@ int open_ctree(struct super_block *sb,
+diff -NurpP --minimal linux-3.4/fs/btrfs/disk-io.c linux-3.4-vs2.3.3.4/fs/btrfs/disk-io.c
+--- linux-3.4/fs/btrfs/disk-io.c       2012-05-21 18:07:18.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/btrfs/disk-io.c     2012-05-21 18:15:04.000000000 +0200
+@@ -2083,6 +2083,9 @@ int open_ctree(struct super_block *sb,
                goto fail_alloc;
        }
  
@@ -1768,9 +1769,9 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/disk-io.c linux-3.3.1-vs2.3.3.2/fs/bt
        features = btrfs_super_incompat_flags(disk_super) &
                ~BTRFS_FEATURE_INCOMPAT_SUPP;
        if (features) {
-diff -NurpP --minimal linux-3.3.1/fs/btrfs/inode.c linux-3.3.1-vs2.3.3.2/fs/btrfs/inode.c
---- linux-3.3.1/fs/btrfs/inode.c       2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/btrfs/inode.c     2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/btrfs/inode.c linux-3.4-vs2.3.3.4/fs/btrfs/inode.c
+--- linux-3.4/fs/btrfs/inode.c 2012-05-21 18:07:19.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/btrfs/inode.c       2012-05-21 18:15:04.000000000 +0200
 @@ -39,6 +39,7 @@
  #include <linux/slab.h>
  #include <linux/ratelimit.h>
@@ -1779,7 +1780,7 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/inode.c linux-3.3.1-vs2.3.3.2/fs/btrf
  #include "compat.h"
  #include "ctree.h"
  #include "disk-io.h"
-@@ -2350,6 +2351,8 @@ static void btrfs_read_locked_inode(stru
+@@ -2465,6 +2466,8 @@ static void btrfs_read_locked_inode(stru
        struct btrfs_key location;
        int maybe_acls;
        u32 rdev;
@@ -1788,7 +1789,7 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/inode.c linux-3.3.1-vs2.3.3.2/fs/btrf
        int ret;
        bool filled = false;
  
-@@ -2377,8 +2380,13 @@ static void btrfs_read_locked_inode(stru
+@@ -2492,8 +2495,13 @@ static void btrfs_read_locked_inode(stru
                                    struct btrfs_inode_item);
        inode->i_mode = btrfs_inode_mode(leaf, inode_item);
        set_nlink(inode, btrfs_inode_nlink(leaf, inode_item));
@@ -1804,7 +1805,7 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/inode.c linux-3.3.1-vs2.3.3.2/fs/btrf
        btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item));
  
        tspec = btrfs_inode_atime(inode_item);
-@@ -2456,8 +2464,14 @@ static void fill_inode_item(struct btrfs
+@@ -2571,8 +2579,14 @@ static void fill_inode_item(struct btrfs
                            struct btrfs_inode_item *item,
                            struct inode *inode)
  {
@@ -1821,7 +1822,7 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/inode.c linux-3.3.1-vs2.3.3.2/fs/btrf
        btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size);
        btrfs_set_inode_mode(leaf, item, inode->i_mode);
        btrfs_set_inode_nlink(leaf, item, inode->i_nlink);
-@@ -7412,11 +7426,13 @@ static const struct inode_operations btr
+@@ -7573,11 +7587,13 @@ static const struct inode_operations btr
        .listxattr      = btrfs_listxattr,
        .removexattr    = btrfs_removexattr,
        .permission     = btrfs_permission,
@@ -1835,9 +1836,9 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/inode.c linux-3.3.1-vs2.3.3.2/fs/btrf
        .get_acl        = btrfs_get_acl,
  };
  
-diff -NurpP --minimal linux-3.3.1/fs/btrfs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/btrfs/ioctl.c
---- linux-3.3.1/fs/btrfs/ioctl.c       2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/btrfs/ioctl.c     2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/btrfs/ioctl.c linux-3.4-vs2.3.3.4/fs/btrfs/ioctl.c
+--- linux-3.4/fs/btrfs/ioctl.c 2012-05-21 18:07:19.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/btrfs/ioctl.c       2012-05-21 18:15:04.000000000 +0200
 @@ -71,10 +71,13 @@ static unsigned int btrfs_flags_to_ioctl
  {
        unsigned int iflags = 0;
@@ -2010,32 +2011,32 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/btrf
        if (flags & FS_APPEND_FL)
                ip->flags |= BTRFS_INODE_APPEND;
        else
-diff -NurpP --minimal linux-3.3.1/fs/btrfs/super.c linux-3.3.1-vs2.3.3.2/fs/btrfs/super.c
---- linux-3.3.1/fs/btrfs/super.c       2012-03-19 19:47:24.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/btrfs/super.c     2012-02-24 04:42:16.000000000 +0100
-@@ -167,7 +167,7 @@ enum {
+diff -NurpP --minimal linux-3.4/fs/btrfs/super.c linux-3.4-vs2.3.3.4/fs/btrfs/super.c
+--- linux-3.4/fs/btrfs/super.c 2012-05-21 18:07:19.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/btrfs/super.c       2012-05-21 18:15:04.000000000 +0200
+@@ -279,7 +279,7 @@ enum {
        Opt_no_space_cache, Opt_recovery, Opt_skip_balance,
        Opt_check_integrity, Opt_check_integrity_including_extent_data,
-       Opt_check_integrity_print_mask,
+       Opt_check_integrity_print_mask, Opt_fatal_errors,
 -      Opt_err,
 +      Opt_tag, Opt_notag, Opt_tagid, Opt_err,
  };
  
  static match_table_t tokens = {
-@@ -206,6 +206,9 @@ static match_table_t tokens = {
-       {Opt_check_integrity, "check_int"},
+@@ -319,6 +319,9 @@ static match_table_t tokens = {
        {Opt_check_integrity_including_extent_data, "check_int_data"},
        {Opt_check_integrity_print_mask, "check_int_print_mask=%d"},
+       {Opt_fatal_errors, "fatal_errors=%s"},
 +      {Opt_tag, "tag"},
 +      {Opt_notag, "notag"},
 +      {Opt_tagid, "tagid=%u"},
        {Opt_err, NULL},
  };
  
-@@ -438,6 +441,22 @@ int btrfs_parse_options(struct btrfs_roo
-                       ret = -EINVAL;
-                       goto out;
- #endif
+@@ -564,6 +567,22 @@ int btrfs_parse_options(struct btrfs_roo
+                               goto out;
+                       }
+                       break;
 +#ifndef CONFIG_TAGGING_NONE
 +              case Opt_tag:
 +                      printk(KERN_INFO "btrfs: use tagging\n");
@@ -2055,9 +2056,9 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/super.c linux-3.3.1-vs2.3.3.2/fs/btrf
                case Opt_err:
                        printk(KERN_INFO "btrfs: unrecognized mount option "
                               "'%s'\n", p);
-@@ -1005,6 +1024,12 @@ static int btrfs_remount(struct super_bl
-       if (ret)
-               return -EINVAL;
+@@ -1137,6 +1156,12 @@ static int btrfs_remount(struct super_bl
+               goto restore;
+       }
  
 +      if (btrfs_test_opt(root, TAGGED) && !(sb->s_flags & MS_TAGGED)) {
 +              printk("btrfs: %s: tagging not permitted on remount.\n",
@@ -2068,9 +2069,9 @@ diff -NurpP --minimal linux-3.3.1/fs/btrfs/super.c linux-3.3.1-vs2.3.3.2/fs/btrf
        if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
                return 0;
  
-diff -NurpP --minimal linux-3.3.1/fs/char_dev.c linux-3.3.1-vs2.3.3.2/fs/char_dev.c
---- linux-3.3.1/fs/char_dev.c  2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/char_dev.c        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/char_dev.c linux-3.4-vs2.3.3.4/fs/char_dev.c
+--- linux-3.4/fs/char_dev.c    2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/char_dev.c  2012-05-21 18:15:04.000000000 +0200
 @@ -21,6 +21,8 @@
  #include <linux/mutex.h>
  #include <linux/backing-dev.h>
@@ -2103,9 +2104,9 @@ diff -NurpP --minimal linux-3.3.1/fs/char_dev.c linux-3.3.1-vs2.3.3.2/fs/char_de
                if (!kobj)
                        return -ENXIO;
                new = container_of(kobj, struct cdev, kobj);
-diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
---- linux-3.3.1/fs/dcache.c    2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/dcache.c  2012-04-03 03:02:12.000000000 +0200
+diff -NurpP --minimal linux-3.4/fs/dcache.c linux-3.4-vs2.3.3.4/fs/dcache.c
+--- linux-3.4/fs/dcache.c      2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/dcache.c    2012-05-21 18:15:04.000000000 +0200
 @@ -37,6 +37,7 @@
  #include <linux/rculist_bl.h>
  #include <linux/prefetch.h>
@@ -2114,7 +2115,7 @@ diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
  #include "internal.h"
  #include "mount.h"
  
-@@ -560,6 +561,8 @@ int d_invalidate(struct dentry * dentry)
+@@ -601,6 +602,8 @@ int d_invalidate(struct dentry * dentry)
                spin_lock(&dentry->d_lock);
        }
  
@@ -2123,7 +2124,7 @@ diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
        /*
         * Somebody else still using it?
         *
-@@ -589,6 +592,7 @@ EXPORT_SYMBOL(d_invalidate);
+@@ -630,6 +633,7 @@ EXPORT_SYMBOL(d_invalidate);
  static inline void __dget_dlock(struct dentry *dentry)
  {
        dentry->d_count++;
@@ -2131,7 +2132,7 @@ diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
  }
  
  static inline void __dget(struct dentry *dentry)
-@@ -1213,6 +1217,9 @@ struct dentry *__d_alloc(struct super_bl
+@@ -1254,6 +1258,9 @@ struct dentry *__d_alloc(struct super_bl
        struct dentry *dentry;
        char *dname;
  
@@ -2141,7 +2142,7 @@ diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
        dentry = kmem_cache_alloc(dentry_cache, GFP_KERNEL);
        if (!dentry)
                return NULL;
-@@ -1235,6 +1242,7 @@ struct dentry *__d_alloc(struct super_bl
+@@ -1276,6 +1283,7 @@ struct dentry *__d_alloc(struct super_bl
  
        dentry->d_count = 1;
        dentry->d_flags = 0;
@@ -2149,7 +2150,7 @@ diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
        spin_lock_init(&dentry->d_lock);
        seqcount_init(&dentry->d_seq);
        dentry->d_inode = NULL;
-@@ -1920,6 +1928,7 @@ struct dentry *__d_lookup(struct dentry 
+@@ -1937,6 +1945,7 @@ struct dentry *__d_lookup(struct dentry 
                }
  
                dentry->d_count++;
@@ -2157,9 +2158,9 @@ diff -NurpP --minimal linux-3.3.1/fs/dcache.c linux-3.3.1-vs2.3.3.2/fs/dcache.c
                found = dentry;
                spin_unlock(&dentry->d_lock);
                break;
-diff -NurpP --minimal linux-3.3.1/fs/devpts/inode.c linux-3.3.1-vs2.3.3.2/fs/devpts/inode.c
---- linux-3.3.1/fs/devpts/inode.c      2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/devpts/inode.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/devpts/inode.c linux-3.4-vs2.3.3.4/fs/devpts/inode.c
+--- linux-3.4/fs/devpts/inode.c        2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/devpts/inode.c      2012-05-21 18:15:04.000000000 +0200
 @@ -25,6 +25,7 @@
  #include <linux/parser.h>
  #include <linux/fsnotify.h>
@@ -2168,7 +2169,7 @@ diff -NurpP --minimal linux-3.3.1/fs/devpts/inode.c linux-3.3.1-vs2.3.3.2/fs/dev
  
  #define DEVPTS_DEFAULT_MODE 0600
  /*
-@@ -36,6 +37,20 @@
+@@ -36,6 +37,21 @@
  #define DEVPTS_DEFAULT_PTMX_MODE 0000
  #define PTMX_MINOR    2
  
@@ -2186,10 +2187,11 @@ diff -NurpP --minimal linux-3.3.1/fs/devpts/inode.c linux-3.3.1-vs2.3.3.2/fs/dev
 +      .permission     = devpts_permission,
 +};
 +
- extern int pty_limit;                 /* Config limit on Unix98 ptys */
- static DEFINE_MUTEX(allocated_ptys_lock);
-@@ -263,6 +278,34 @@ static int devpts_show_options(struct se
++
+ /*
+  * sysctl support for setting limits on the number of Unix98 ptys allocated.
+  * Otherwise one can eat up all kernel memory by opening /dev/ptmx repeatedly.
+@@ -328,6 +344,34 @@ static int devpts_show_options(struct se
        return 0;
  }
  
@@ -2224,7 +2226,7 @@ diff -NurpP --minimal linux-3.3.1/fs/devpts/inode.c linux-3.3.1-vs2.3.3.2/fs/dev
  static const struct super_operations devpts_sops = {
        .statfs         = simple_statfs,
        .remount_fs     = devpts_remount,
-@@ -306,8 +349,10 @@ devpts_fill_super(struct super_block *s,
+@@ -371,8 +415,10 @@ devpts_fill_super(struct super_block *s,
        inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
        inode->i_mode = S_IFDIR | S_IRUGO | S_IXUGO | S_IWUSR;
        inode->i_op = &simple_dir_inode_operations;
@@ -2234,9 +2236,9 @@ diff -NurpP --minimal linux-3.3.1/fs/devpts/inode.c linux-3.3.1-vs2.3.3.2/fs/dev
 +      /* devpts is xid tagged */
 +      inode->i_tag = (tag_t)vx_current_xid();
  
-       s->s_root = d_alloc_root(inode);
+       s->s_root = d_make_root(inode);
        if (s->s_root)
-@@ -492,6 +537,9 @@ int devpts_pty_new(struct inode *ptmx_in
+@@ -564,6 +610,9 @@ int devpts_pty_new(struct inode *ptmx_in
        inode->i_gid = opts->setgid ? opts->gid : current_fsgid();
        inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
        init_special_inode(inode, S_IFCHR|opts->mode, device);
@@ -2246,9 +2248,9 @@ diff -NurpP --minimal linux-3.3.1/fs/devpts/inode.c linux-3.3.1-vs2.3.3.2/fs/dev
        inode->i_private = tty;
        tty->driver_data = inode;
  
-diff -NurpP --minimal linux-3.3.1/fs/ext2/balloc.c linux-3.3.1-vs2.3.3.2/fs/ext2/balloc.c
---- linux-3.3.1/fs/ext2/balloc.c       2012-01-09 16:14:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/balloc.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/balloc.c linux-3.4-vs2.3.3.4/fs/ext2/balloc.c
+--- linux-3.4/fs/ext2/balloc.c 2012-01-09 16:14:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ext2/balloc.c       2012-05-21 18:15:04.000000000 +0200
 @@ -701,7 +701,6 @@ ext2_try_to_allocate(struct super_block 
                        start = 0;
                end = EXT2_BLOCKS_PER_GROUP(sb);
@@ -2257,10 +2259,49 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/balloc.c linux-3.3.1-vs2.3.3.2/fs/ext2
        BUG_ON(start > EXT2_BLOCKS_PER_GROUP(sb));
  
  repeat:
-diff -NurpP --minimal linux-3.3.1/fs/ext2/ext2.h linux-3.3.1-vs2.3.3.2/fs/ext2/ext2.h
---- linux-3.3.1/fs/ext2/ext2.h 2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/ext2.h       2012-02-24 03:55:06.000000000 +0100
-@@ -126,6 +126,7 @@ extern void ext2_set_inode_flags(struct 
+diff -NurpP --minimal linux-3.4/fs/ext2/ext2.h linux-3.4-vs2.3.3.4/fs/ext2/ext2.h
+--- linux-3.4/fs/ext2/ext2.h   2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext2/ext2.h 2012-05-21 18:15:05.000000000 +0200
+@@ -244,8 +244,12 @@ struct ext2_group_desc
+ #define EXT2_NOTAIL_FL                        FS_NOTAIL_FL    /* file tail should not be merged */
+ #define EXT2_DIRSYNC_FL                       FS_DIRSYNC_FL   /* dirsync behaviour (directories only) */
+ #define EXT2_TOPDIR_FL                        FS_TOPDIR_FL    /* Top of directory hierarchies*/
++#define EXT2_IXUNLINK_FL              FS_IXUNLINK_FL  /* Immutable invert on unlink */
+ #define EXT2_RESERVED_FL              FS_RESERVED_FL  /* reserved for ext2 lib */
++#define EXT2_BARRIER_FL                       FS_BARRIER_FL   /* Barrier for chroot() */
++#define EXT2_COW_FL                   FS_COW_FL       /* Copy on Write marker */
++
+ #define EXT2_FL_USER_VISIBLE          FS_FL_USER_VISIBLE      /* User visible flags */
+ #define EXT2_FL_USER_MODIFIABLE               FS_FL_USER_MODIFIABLE   /* User modifiable flags */
+@@ -329,7 +333,8 @@ struct ext2_inode {
+                       __u16   i_pad1;
+                       __le16  l_i_uid_high;   /* these 2 fields    */
+                       __le16  l_i_gid_high;   /* were reserved2[0] */
+-                      __u32   l_i_reserved2;
++                      __le16  l_i_tag;        /* Context Tag */
++                      __u16   l_i_reserved2;
+               } linux2;
+               struct {
+                       __u8    h_i_frag;       /* Fragment number */
+@@ -357,6 +362,7 @@ struct ext2_inode {
+ #define i_gid_low     i_gid
+ #define i_uid_high    osd2.linux2.l_i_uid_high
+ #define i_gid_high    osd2.linux2.l_i_gid_high
++#define i_raw_tag     osd2.linux2.l_i_tag
+ #define i_reserved2   osd2.linux2.l_i_reserved2
+ /*
+@@ -384,6 +390,7 @@ struct ext2_inode {
+ #define EXT2_MOUNT_USRQUOTA           0x020000  /* user quota */
+ #define EXT2_MOUNT_GRPQUOTA           0x040000  /* group quota */
+ #define EXT2_MOUNT_RESERVATION                0x080000  /* Preallocation */
++#define EXT2_MOUNT_TAGGED             (1<<24)   /* Enable Context Tags */
+ #define clear_opt(o, opt)             o &= ~EXT2_MOUNT_##opt
+@@ -757,6 +764,7 @@ extern void ext2_set_inode_flags(struct 
  extern void ext2_get_inode_flags(struct ext2_inode_info *);
  extern int ext2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
                       u64 start, u64 len);
@@ -2268,18 +2309,18 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/ext2.h linux-3.3.1-vs2.3.3.2/fs/ext2/e
  
  /* ioctl.c */
  extern long ext2_ioctl(struct file *, unsigned int, unsigned long);
-diff -NurpP --minimal linux-3.3.1/fs/ext2/file.c linux-3.3.1-vs2.3.3.2/fs/ext2/file.c
---- linux-3.3.1/fs/ext2/file.c 2011-10-24 18:45:27.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/file.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/file.c linux-3.4-vs2.3.3.4/fs/ext2/file.c
+--- linux-3.4/fs/ext2/file.c   2011-10-24 18:45:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext2/file.c 2012-05-21 18:15:05.000000000 +0200
 @@ -104,4 +104,5 @@ const struct inode_operations ext2_file_
        .setattr        = ext2_setattr,
        .get_acl        = ext2_get_acl,
        .fiemap         = ext2_fiemap,
 +      .sync_flags     = ext2_sync_flags,
  };
-diff -NurpP --minimal linux-3.3.1/fs/ext2/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext2/ialloc.c
---- linux-3.3.1/fs/ext2/ialloc.c       2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/ialloc.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/ialloc.c linux-3.4-vs2.3.3.4/fs/ext2/ialloc.c
+--- linux-3.4/fs/ext2/ialloc.c 2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ext2/ialloc.c       2012-05-21 18:15:05.000000000 +0200
 @@ -17,6 +17,7 @@
  #include <linux/backing-dev.h>
  #include <linux/buffer_head.h>
@@ -2296,9 +2337,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext2
        } else
                inode_init_owner(inode, dir, mode);
  
-diff -NurpP --minimal linux-3.3.1/fs/ext2/inode.c linux-3.3.1-vs2.3.3.2/fs/ext2/inode.c
---- linux-3.3.1/fs/ext2/inode.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/inode.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/inode.c linux-3.4-vs2.3.3.4/fs/ext2/inode.c
+--- linux-3.4/fs/ext2/inode.c  2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ext2/inode.c        2012-05-21 18:15:05.000000000 +0200
 @@ -31,6 +31,7 @@
  #include <linux/mpage.h>
  #include <linux/fiemap.h>
@@ -2446,9 +2487,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/inode.c linux-3.3.1-vs2.3.3.2/fs/ext2/
                error = dquot_transfer(inode, iattr);
                if (error)
                        return error;
-diff -NurpP --minimal linux-3.3.1/fs/ext2/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext2/ioctl.c
---- linux-3.3.1/fs/ext2/ioctl.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/ioctl.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/ioctl.c linux-3.4-vs2.3.3.4/fs/ext2/ioctl.c
+--- linux-3.4/fs/ext2/ioctl.c  2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ext2/ioctl.c        2012-05-21 18:15:05.000000000 +0200
 @@ -17,6 +17,16 @@
  #include <asm/uaccess.h>
  
@@ -2498,9 +2539,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext2/
                flags |= oldflags & ~EXT2_FL_USER_MODIFIABLE;
                ei->i_flags = flags;
  
-diff -NurpP --minimal linux-3.3.1/fs/ext2/namei.c linux-3.3.1-vs2.3.3.2/fs/ext2/namei.c
---- linux-3.3.1/fs/ext2/namei.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/namei.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/namei.c linux-3.4-vs2.3.3.4/fs/ext2/namei.c
+--- linux-3.4/fs/ext2/namei.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext2/namei.c        2012-05-21 18:15:05.000000000 +0200
 @@ -32,6 +32,7 @@
  
  #include <linux/pagemap.h>
@@ -2517,7 +2558,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/namei.c linux-3.3.1-vs2.3.3.2/fs/ext2/
        }
        return d_splice_alias(inode, dentry);
  }
-@@ -408,6 +410,7 @@ const struct inode_operations ext2_dir_i
+@@ -397,6 +399,7 @@ const struct inode_operations ext2_dir_i
        .removexattr    = generic_removexattr,
  #endif
        .setattr        = ext2_setattr,
@@ -2525,9 +2566,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/namei.c linux-3.3.1-vs2.3.3.2/fs/ext2/
        .get_acl        = ext2_get_acl,
  };
  
-diff -NurpP --minimal linux-3.3.1/fs/ext2/super.c linux-3.3.1-vs2.3.3.2/fs/ext2/super.c
---- linux-3.3.1/fs/ext2/super.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext2/super.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext2/super.c linux-3.4-vs2.3.3.4/fs/ext2/super.c
+--- linux-3.4/fs/ext2/super.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext2/super.c        2012-05-21 18:15:05.000000000 +0200
 @@ -393,7 +393,8 @@ enum {
        Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
        Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
@@ -2593,28 +2634,82 @@ diff -NurpP --minimal linux-3.3.1/fs/ext2/super.c linux-3.3.1-vs2.3.3.2/fs/ext2/
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
  
-diff -NurpP --minimal linux-3.3.1/fs/ext3/file.c linux-3.3.1-vs2.3.3.2/fs/ext3/file.c
---- linux-3.3.1/fs/ext3/file.c 2011-10-24 18:45:27.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/ext3/file.c       2012-02-24 03:55:06.000000000 +0100
-@@ -80,5 +80,6 @@ const struct inode_operations ext3_file_
+diff -NurpP --minimal linux-3.4/fs/ext3/ext3.h linux-3.4-vs2.3.3.4/fs/ext3/ext3.h
+--- linux-3.4/fs/ext3/ext3.h   2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/ext3.h 2012-05-21 19:13:31.000000000 +0200
+@@ -151,10 +151,14 @@ struct ext3_group_desc
+ #define EXT3_NOTAIL_FL                        0x00008000 /* file tail should not be merged */
+ #define EXT3_DIRSYNC_FL                       0x00010000 /* dirsync behaviour (directories only) */
+ #define EXT3_TOPDIR_FL                        0x00020000 /* Top of directory hierarchies*/
++#define EXT3_IXUNLINK_FL              0x08000000 /* Immutable invert on unlink */
+ #define EXT3_RESERVED_FL              0x80000000 /* reserved for ext3 lib */
+-#define EXT3_FL_USER_VISIBLE          0x0003DFFF /* User visible flags */
+-#define EXT3_FL_USER_MODIFIABLE               0x000380FF /* User modifiable flags */
++#define EXT3_BARRIER_FL                       0x04000000 /* Barrier for chroot() */
++#define EXT3_COW_FL                   0x20000000 /* Copy on Write marker */
++
++#define EXT3_FL_USER_VISIBLE          0x0103DFFF /* User visible flags */
++#define EXT3_FL_USER_MODIFIABLE               0x010380FF /* User modifiable flags */
+ /* Flags that should be inherited by new inodes from their parent. */
+ #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\
+@@ -290,7 +294,8 @@ struct ext3_inode {
+                       __u16   i_pad1;
+                       __le16  l_i_uid_high;   /* these 2 fields    */
+                       __le16  l_i_gid_high;   /* were reserved2[0] */
+-                      __u32   l_i_reserved2;
++                      __le16  l_i_tag;        /* Context Tag */
++                      __u16   l_i_reserved2;
+               } linux2;
+               struct {
+                       __u8    h_i_frag;       /* Fragment number */
+@@ -320,6 +325,7 @@ struct ext3_inode {
+ #define i_gid_low     i_gid
+ #define i_uid_high    osd2.linux2.l_i_uid_high
+ #define i_gid_high    osd2.linux2.l_i_gid_high
++#define i_raw_tag     osd2.linux2.l_i_tag
+ #define i_reserved2   osd2.linux2.l_i_reserved2
+ /*
+@@ -364,6 +370,7 @@ struct ext3_inode {
+ #define EXT3_MOUNT_GRPQUOTA           0x200000 /* "old" group quota */
+ #define EXT3_MOUNT_DATA_ERR_ABORT     0x400000 /* Abort on file data write
+                                                 * error in ordered mode */
++#define EXT3_MOUNT_TAGGED             (1<<24) /* Enable Context Tags */
+ /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */
+ #ifndef _LINUX_EXT2_FS_H
+@@ -1057,6 +1064,7 @@ extern void ext3_get_inode_flags(struct 
+ extern void ext3_set_aops(struct inode *inode);
+ extern int ext3_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+                      u64 start, u64 len);
++extern int ext3_sync_flags(struct inode *, int, int);
+ /* ioctl.c */
+ extern long ext3_ioctl(struct file *, unsigned int, unsigned long);
+diff -NurpP --minimal linux-3.4/fs/ext3/file.c linux-3.4-vs2.3.3.4/fs/ext3/file.c
+--- linux-3.4/fs/ext3/file.c   2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/file.c 2012-05-21 18:15:05.000000000 +0200
+@@ -76,5 +76,6 @@ const struct inode_operations ext3_file_
  #endif
        .get_acl        = ext3_get_acl,
        .fiemap         = ext3_fiemap,
 +      .sync_flags     = ext3_sync_flags,
  };
  
-diff -NurpP --minimal linux-3.3.1/fs/ext3/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext3/ialloc.c
---- linux-3.3.1/fs/ext3/ialloc.c       2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext3/ialloc.c     2012-02-24 03:55:06.000000000 +0100
-@@ -23,6 +23,7 @@
- #include <linux/buffer_head.h>
+diff -NurpP --minimal linux-3.4/fs/ext3/ialloc.c linux-3.4-vs2.3.3.4/fs/ext3/ialloc.c
+--- linux-3.4/fs/ext3/ialloc.c 2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/ialloc.c       2012-05-21 18:15:05.000000000 +0200
+@@ -14,6 +14,7 @@
+ #include <linux/quotaops.h>
  #include <linux/random.h>
- #include <linux/bitops.h>
 +#include <linux/vs_tag.h>
- #include <trace/events/ext3.h>
  
- #include <asm/byteorder.h>
-@@ -496,6 +497,7 @@ got:
+ #include "ext3.h"
+ #include "xattr.h"
+@@ -485,6 +486,7 @@ got:
                inode->i_mode = mode;
                inode->i_uid = current_fsuid();
                inode->i_gid = dir->i_gid;
@@ -2622,18 +2717,19 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext3
        } else
                inode_init_owner(inode, dir, mode);
  
-diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/inode.c
---- linux-3.3.1/fs/ext3/inode.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext3/inode.c      2012-02-24 03:55:06.000000000 +0100
-@@ -37,6 +37,7 @@
- #include <linux/bio.h>
- #include <linux/fiemap.h>
+diff -NurpP --minimal linux-3.4/fs/ext3/inode.c linux-3.4-vs2.3.3.4/fs/ext3/inode.c
+--- linux-3.4/fs/ext3/inode.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/inode.c        2012-05-21 18:15:05.000000000 +0200
+@@ -27,6 +27,8 @@
+ #include <linux/writeback.h>
+ #include <linux/mpage.h>
  #include <linux/namei.h>
 +#include <linux/vs_tag.h>
- #include <trace/events/ext3.h>
++
+ #include "ext3.h"
  #include "xattr.h"
  #include "acl.h"
-@@ -2855,36 +2856,60 @@ void ext3_set_inode_flags(struct inode *
+@@ -2848,36 +2850,60 @@ void ext3_set_inode_flags(struct inode *
  {
        unsigned int flags = EXT3_I(inode)->i_flags;
  
@@ -2701,7 +2797,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
  }
  
  struct inode *ext3_iget(struct super_block *sb, unsigned long ino)
-@@ -2898,6 +2923,8 @@ struct inode *ext3_iget(struct super_blo
+@@ -2891,6 +2917,8 @@ struct inode *ext3_iget(struct super_blo
        transaction_t *transaction;
        long ret;
        int block;
@@ -2710,7 +2806,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
  
        inode = iget_locked(sb, ino);
        if (!inode)
-@@ -2914,12 +2941,16 @@ struct inode *ext3_iget(struct super_blo
+@@ -2907,12 +2935,16 @@ struct inode *ext3_iget(struct super_blo
        bh = iloc.bh;
        raw_inode = ext3_raw_inode(&iloc);
        inode->i_mode = le16_to_cpu(raw_inode->i_mode);
@@ -2731,7 +2827,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
        inode->i_size = le32_to_cpu(raw_inode->i_size);
        inode->i_atime.tv_sec = (signed)le32_to_cpu(raw_inode->i_atime);
-@@ -3074,6 +3105,8 @@ static int ext3_do_update_inode(handle_t
+@@ -3067,6 +3099,8 @@ static int ext3_do_update_inode(handle_t
        struct ext3_inode *raw_inode = ext3_raw_inode(iloc);
        struct ext3_inode_info *ei = EXT3_I(inode);
        struct buffer_head *bh = iloc->bh;
@@ -2740,7 +2836,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        int err = 0, rc, block;
  
  again:
-@@ -3088,29 +3121,32 @@ again:
+@@ -3081,29 +3115,32 @@ again:
        ext3_get_inode_flags(ei);
        raw_inode->i_mode = cpu_to_le16(inode->i_mode);
        if(!(test_opt(inode->i_sb, NO_UID32))) {
@@ -2779,7 +2875,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
        raw_inode->i_size = cpu_to_le32(ei->i_disksize);
        raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
-@@ -3270,7 +3306,8 @@ int ext3_setattr(struct dentry *dentry, 
+@@ -3263,7 +3300,8 @@ int ext3_setattr(struct dentry *dentry, 
        if (is_quota_modification(inode, attr))
                dquot_initialize(inode);
        if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
@@ -2789,7 +2885,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                handle_t *handle;
  
                /* (user+group)*(old+new) structure, inode write (sb,
-@@ -3292,6 +3329,8 @@ int ext3_setattr(struct dentry *dentry, 
+@@ -3285,6 +3323,8 @@ int ext3_setattr(struct dentry *dentry, 
                        inode->i_uid = attr->ia_uid;
                if (attr->ia_valid & ATTR_GID)
                        inode->i_gid = attr->ia_gid;
@@ -2798,20 +2894,12 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/inode.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                error = ext3_mark_inode_dirty(handle, inode);
                ext3_journal_stop(handle);
        }
-diff -NurpP --minimal linux-3.3.1/fs/ext3/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext3/ioctl.c
---- linux-3.3.1/fs/ext3/ioctl.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext3/ioctl.c      2012-02-24 03:55:06.000000000 +0100
-@@ -8,6 +8,7 @@
-  */
- #include <linux/fs.h>
-+#include <linux/mount.h>
- #include <linux/jbd.h>
- #include <linux/capability.h>
- #include <linux/ext3_fs.h>
-@@ -17,6 +18,34 @@
- #include <linux/compat.h>
+diff -NurpP --minimal linux-3.4/fs/ext3/ioctl.c linux-3.4-vs2.3.3.4/fs/ext3/ioctl.c
+--- linux-3.4/fs/ext3/ioctl.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/ioctl.c        2012-05-21 18:15:05.000000000 +0200
+@@ -12,6 +12,34 @@
  #include <asm/uaccess.h>
+ #include "ext3.h"
  
 +
 +int ext3_sync_flags(struct inode *inode, int flags, int vflags)
@@ -2844,7 +2932,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext3/
  long ext3_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        struct inode *inode = filp->f_dentry->d_inode;
-@@ -50,6 +79,11 @@ long ext3_ioctl(struct file *filp, unsig
+@@ -45,6 +73,11 @@ long ext3_ioctl(struct file *filp, unsig
  
                flags = ext3_mask_flags(inode->i_mode, flags);
  
@@ -2856,7 +2944,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                mutex_lock(&inode->i_mutex);
  
                /* Is it quota file? Do not allow user to mess with it */
-@@ -68,7 +102,9 @@ long ext3_ioctl(struct file *filp, unsig
+@@ -63,7 +96,9 @@ long ext3_ioctl(struct file *filp, unsig
                 *
                 * This test looks nicer. Thanks to Pauline Middelink
                 */
@@ -2867,7 +2955,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                        if (!capable(CAP_LINUX_IMMUTABLE))
                                goto flags_out;
                }
-@@ -93,7 +129,7 @@ long ext3_ioctl(struct file *filp, unsig
+@@ -88,7 +123,7 @@ long ext3_ioctl(struct file *filp, unsig
                if (err)
                        goto flags_err;
  
@@ -2876,18 +2964,19 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                flags |= oldflags & ~EXT3_FL_USER_MODIFIABLE;
                ei->i_flags = flags;
  
-diff -NurpP --minimal linux-3.3.1/fs/ext3/namei.c linux-3.3.1-vs2.3.3.2/fs/ext3/namei.c
---- linux-3.3.1/fs/ext3/namei.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext3/namei.c      2012-02-24 03:55:06.000000000 +0100
-@@ -36,6 +36,7 @@
+diff -NurpP --minimal linux-3.4/fs/ext3/namei.c linux-3.4-vs2.3.3.4/fs/ext3/namei.c
+--- linux-3.4/fs/ext3/namei.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/namei.c        2012-05-21 18:15:05.000000000 +0200
+@@ -25,6 +25,8 @@
+  */
  #include <linux/quotaops.h>
- #include <linux/buffer_head.h>
- #include <linux/bio.h>
 +#include <linux/vs_tag.h>
- #include <trace/events/ext3.h>
++
+ #include "ext3.h"
  #include "namei.h"
-@@ -927,6 +928,7 @@ restart:
+ #include "xattr.h"
+@@ -915,6 +917,7 @@ restart:
                                        submit_bh(READ | REQ_META | REQ_PRIO,
                                                  bh);
                                }
@@ -2895,7 +2984,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/namei.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                        }
                }
                if ((bh = bh_use[ra_ptr++]) == NULL)
-@@ -2538,6 +2540,7 @@ const struct inode_operations ext3_dir_i
+@@ -2526,6 +2529,7 @@ const struct inode_operations ext3_dir_i
        .listxattr      = ext3_listxattr,
        .removexattr    = generic_removexattr,
  #endif
@@ -2903,10 +2992,10 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/namei.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        .get_acl        = ext3_get_acl,
  };
  
-diff -NurpP --minimal linux-3.3.1/fs/ext3/super.c linux-3.3.1-vs2.3.3.2/fs/ext3/super.c
---- linux-3.3.1/fs/ext3/super.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext3/super.c      2012-02-24 03:55:06.000000000 +0100
-@@ -830,7 +830,8 @@ enum {
+diff -NurpP --minimal linux-3.4/fs/ext3/super.c linux-3.4-vs2.3.3.4/fs/ext3/super.c
+--- linux-3.4/fs/ext3/super.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext3/super.c        2012-05-21 18:15:05.000000000 +0200
+@@ -820,7 +820,8 @@ enum {
        Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
        Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_jqfmt_vfsv1, Opt_quota,
        Opt_noquota, Opt_ignore, Opt_barrier, Opt_nobarrier, Opt_err,
@@ -2916,7 +3005,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/super.c linux-3.3.1-vs2.3.3.2/fs/ext3/
  };
  
  static const match_table_t tokens = {
-@@ -887,6 +888,9 @@ static const match_table_t tokens = {
+@@ -877,6 +878,9 @@ static const match_table_t tokens = {
        {Opt_barrier, "barrier"},
        {Opt_nobarrier, "nobarrier"},
        {Opt_resize, "resize"},
@@ -2926,7 +3015,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/super.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        {Opt_err, NULL},
  };
  
-@@ -1039,6 +1043,20 @@ static int parse_options (char *options,
+@@ -1029,6 +1033,20 @@ static int parse_options (char *options,
                case Opt_nouid32:
                        set_opt (sbi->s_mount_opt, NO_UID32);
                        break;
@@ -2947,7 +3036,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/super.c linux-3.3.1-vs2.3.3.2/fs/ext3/
                case Opt_nocheck:
                        clear_opt (sbi->s_mount_opt, CHECK);
                        break;
-@@ -1737,6 +1755,9 @@ static int ext3_fill_super (struct super
+@@ -1727,6 +1745,9 @@ static int ext3_fill_super (struct super
                            NULL, 0))
                goto failed_mount;
  
@@ -2957,7 +3046,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/super.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
  
-@@ -2619,6 +2640,14 @@ static int ext3_remount (struct super_bl
+@@ -2608,6 +2629,14 @@ static int ext3_remount (struct super_bl
        if (test_opt(sb, ABORT))
                ext3_abort(sb, __func__, "Abort forced by user");
  
@@ -2972,10 +3061,10 @@ diff -NurpP --minimal linux-3.3.1/fs/ext3/super.c linux-3.3.1-vs2.3.3.2/fs/ext3/
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
  
-diff -NurpP --minimal linux-3.3.1/fs/ext4/ext4.h linux-3.3.1-vs2.3.3.2/fs/ext4/ext4.h
---- linux-3.3.1/fs/ext4/ext4.h 2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/ext4.h       2012-04-03 03:02:12.000000000 +0200
-@@ -373,8 +373,12 @@ struct flex_groups {
+diff -NurpP --minimal linux-3.4/fs/ext4/ext4.h linux-3.4-vs2.3.3.4/fs/ext4/ext4.h
+--- linux-3.4/fs/ext4/ext4.h   2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext4/ext4.h 2012-05-21 18:15:05.000000000 +0200
+@@ -380,8 +380,12 @@ struct flex_groups {
  #define EXT4_EXTENTS_FL                       0x00080000 /* Inode uses extents */
  #define EXT4_EA_INODE_FL              0x00200000 /* Inode used for large EA */
  #define EXT4_EOFBLOCKS_FL             0x00400000 /* Blocks allocated beyond EOF */
@@ -2988,7 +3077,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ext4.h linux-3.3.1-vs2.3.3.2/fs/ext4/e
  #define EXT4_FL_USER_VISIBLE          0x004BDFFF /* User visible flags */
  #define EXT4_FL_USER_MODIFIABLE               0x004B80FF /* User modifiable flags */
  
-@@ -643,7 +647,8 @@ struct ext4_inode {
+@@ -650,7 +654,8 @@ struct ext4_inode {
                        __le16  l_i_file_acl_high;
                        __le16  l_i_uid_high;   /* these 2 fields */
                        __le16  l_i_gid_high;   /* were reserved2[0] */
@@ -2998,7 +3087,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ext4.h linux-3.3.1-vs2.3.3.2/fs/ext4/e
                } linux2;
                struct {
                        __le16  h_i_reserved1;  /* Obsoleted fragment number/size which are removed in ext4 */
-@@ -761,6 +766,7 @@ do {                                                                              \
+@@ -768,6 +773,7 @@ do {                                                                              \
  #define i_gid_low     i_gid
  #define i_uid_high    osd2.linux2.l_i_uid_high
  #define i_gid_high    osd2.linux2.l_i_gid_high
@@ -3006,7 +3095,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ext4.h linux-3.3.1-vs2.3.3.2/fs/ext4/e
  #define i_reserved2   osd2.linux2.l_i_reserved2
  
  #elif defined(__GNU__)
-@@ -937,6 +943,7 @@ struct ext4_inode_info {
+@@ -945,6 +951,7 @@ struct ext4_inode_info {
  #define EXT4_MOUNT_POSIX_ACL          0x08000 /* POSIX Access Control Lists */
  #define EXT4_MOUNT_NO_AUTO_DA_ALLOC   0x10000 /* No auto delalloc mapping */
  #define EXT4_MOUNT_BARRIER            0x20000 /* Use block barriers */
@@ -3014,7 +3103,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ext4.h linux-3.3.1-vs2.3.3.2/fs/ext4/e
  #define EXT4_MOUNT_QUOTA              0x80000 /* Some quota option set */
  #define EXT4_MOUNT_USRQUOTA           0x100000 /* "old" user quota */
  #define EXT4_MOUNT_GRPQUOTA           0x200000 /* "old" group quota */
-@@ -2277,6 +2284,7 @@ extern int ext4_map_blocks(handle_t *han
+@@ -2294,6 +2301,7 @@ extern int ext4_map_blocks(handle_t *han
                           struct ext4_map_blocks *map, int flags);
  extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
                        __u64 start, __u64 len);
@@ -3022,9 +3111,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ext4.h linux-3.3.1-vs2.3.3.2/fs/ext4/e
  /* move_extent.c */
  extern int ext4_move_extents(struct file *o_filp, struct file *d_filp,
                             __u64 start_orig, __u64 start_donor,
-diff -NurpP --minimal linux-3.3.1/fs/ext4/file.c linux-3.3.1-vs2.3.3.2/fs/ext4/file.c
---- linux-3.3.1/fs/ext4/file.c 2012-01-09 16:14:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/file.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext4/file.c linux-3.4-vs2.3.3.4/fs/ext4/file.c
+--- linux-3.4/fs/ext4/file.c   2012-01-09 16:14:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ext4/file.c 2012-05-21 18:15:05.000000000 +0200
 @@ -258,5 +258,6 @@ const struct inode_operations ext4_file_
  #endif
        .get_acl        = ext4_get_acl,
@@ -3032,9 +3121,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/file.c linux-3.3.1-vs2.3.3.2/fs/ext4/f
 +      .sync_flags     = ext4_sync_flags,
  };
  
-diff -NurpP --minimal linux-3.3.1/fs/ext4/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext4/ialloc.c
---- linux-3.3.1/fs/ext4/ialloc.c       2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/ialloc.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext4/ialloc.c linux-3.4-vs2.3.3.4/fs/ext4/ialloc.c
+--- linux-3.4/fs/ext4/ialloc.c 2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext4/ialloc.c       2012-05-21 18:15:05.000000000 +0200
 @@ -22,6 +22,7 @@
  #include <linux/random.h>
  #include <linux/bitops.h>
@@ -3043,7 +3132,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext4
  #include <asm/byteorder.h>
  
  #include "ext4.h"
-@@ -860,6 +861,7 @@ got:
+@@ -814,6 +815,7 @@ got:
                inode->i_mode = mode;
                inode->i_uid = current_fsuid();
                inode->i_gid = dir->i_gid;
@@ -3051,9 +3140,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ialloc.c linux-3.3.1-vs2.3.3.2/fs/ext4
        } else
                inode_init_owner(inode, dir, mode);
  
-diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/inode.c
---- linux-3.3.1/fs/ext4/inode.c        2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/inode.c      2012-04-03 03:02:12.000000000 +0200
+diff -NurpP --minimal linux-3.4/fs/ext4/inode.c linux-3.4-vs2.3.3.4/fs/ext4/inode.c
+--- linux-3.4/fs/ext4/inode.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext4/inode.c        2012-05-21 18:15:05.000000000 +0200
 @@ -37,6 +37,7 @@
  #include <linux/printk.h>
  #include <linux/slab.h>
@@ -3062,7 +3151,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
  
  #include "ext4_jbd2.h"
  #include "xattr.h"
-@@ -3557,41 +3558,64 @@ void ext4_set_inode_flags(struct inode *
+@@ -3560,41 +3561,64 @@ void ext4_set_inode_flags(struct inode *
  {
        unsigned int flags = EXT4_I(inode)->i_flags;
  
@@ -3134,7 +3223,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
        } while (cmpxchg(&ei->i_flags, old_fl, new_fl) != old_fl);
  }
  
-@@ -3627,6 +3651,8 @@ struct inode *ext4_iget(struct super_blo
+@@ -3630,6 +3654,8 @@ struct inode *ext4_iget(struct super_blo
        journal_t *journal = EXT4_SB(sb)->s_journal;
        long ret;
        int block;
@@ -3143,7 +3232,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
  
        inode = iget_locked(sb, ino);
        if (!inode)
-@@ -3642,12 +3668,16 @@ struct inode *ext4_iget(struct super_blo
+@@ -3645,12 +3671,16 @@ struct inode *ext4_iget(struct super_blo
                goto bad_inode;
        raw_inode = ext4_raw_inode(&iloc);
        inode->i_mode = le16_to_cpu(raw_inode->i_mode);
@@ -3164,7 +3253,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
        set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
  
        ext4_clear_state_flags(ei);     /* Only relevant on 32-bit archs */
-@@ -3866,6 +3896,8 @@ static int ext4_do_update_inode(handle_t
+@@ -3869,6 +3899,8 @@ static int ext4_do_update_inode(handle_t
        struct ext4_inode *raw_inode = ext4_raw_inode(iloc);
        struct ext4_inode_info *ei = EXT4_I(inode);
        struct buffer_head *bh = iloc->bh;
@@ -3173,7 +3262,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
        int err = 0, rc, block;
  
        /* For fields not not tracking in the in-memory inode,
-@@ -3876,29 +3908,32 @@ static int ext4_do_update_inode(handle_t
+@@ -3879,29 +3911,32 @@ static int ext4_do_update_inode(handle_t
        ext4_get_inode_flags(ei);
        raw_inode->i_mode = cpu_to_le16(inode->i_mode);
        if (!(test_opt(inode->i_sb, NO_UID32))) {
@@ -3212,7 +3301,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
        raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
  
        EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode);
-@@ -4084,7 +4119,8 @@ int ext4_setattr(struct dentry *dentry, 
+@@ -4085,7 +4120,8 @@ int ext4_setattr(struct dentry *dentry, 
        if (is_quota_modification(inode, attr))
                dquot_initialize(inode);
        if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
@@ -3222,7 +3311,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
                handle_t *handle;
  
                /* (user+group)*(old+new) structure, inode write (sb,
-@@ -4106,6 +4142,8 @@ int ext4_setattr(struct dentry *dentry, 
+@@ -4107,6 +4143,8 @@ int ext4_setattr(struct dentry *dentry, 
                        inode->i_uid = attr->ia_uid;
                if (attr->ia_valid & ATTR_GID)
                        inode->i_gid = attr->ia_gid;
@@ -3231,9 +3320,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/inode.c linux-3.3.1-vs2.3.3.2/fs/ext4/
                error = ext4_mark_inode_dirty(handle, inode);
                ext4_journal_stop(handle);
        }
-diff -NurpP --minimal linux-3.3.1/fs/ext4/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext4/ioctl.c
---- linux-3.3.1/fs/ext4/ioctl.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/ioctl.c      2012-02-24 04:29:04.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext4/ioctl.c linux-3.4-vs2.3.3.4/fs/ext4/ioctl.c
+--- linux-3.4/fs/ext4/ioctl.c  2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ext4/ioctl.c        2012-05-21 18:15:05.000000000 +0200
 @@ -14,12 +14,40 @@
  #include <linux/compat.h>
  #include <linux/mount.h>
@@ -3298,9 +3387,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ext4/
                        if (!capable(CAP_LINUX_IMMUTABLE))
                                goto flags_out;
                }
-diff -NurpP --minimal linux-3.3.1/fs/ext4/namei.c linux-3.3.1-vs2.3.3.2/fs/ext4/namei.c
---- linux-3.3.1/fs/ext4/namei.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/namei.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ext4/namei.c linux-3.4-vs2.3.3.4/fs/ext4/namei.c
+--- linux-3.4/fs/ext4/namei.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext4/namei.c        2012-05-21 18:15:05.000000000 +0200
 @@ -34,6 +34,7 @@
  #include <linux/quotaops.h>
  #include <linux/buffer_head.h>
@@ -3325,10 +3414,10 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/namei.c linux-3.3.1-vs2.3.3.2/fs/ext4/
  };
  
  const struct inode_operations ext4_special_inode_operations = {
-diff -NurpP --minimal linux-3.3.1/fs/ext4/super.c linux-3.3.1-vs2.3.3.2/fs/ext4/super.c
---- linux-3.3.1/fs/ext4/super.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ext4/super.c      2012-02-24 03:55:06.000000000 +0100
-@@ -1333,6 +1333,7 @@ enum {
+diff -NurpP --minimal linux-3.4/fs/ext4/super.c linux-3.4-vs2.3.3.4/fs/ext4/super.c
+--- linux-3.4/fs/ext4/super.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ext4/super.c        2012-05-21 18:15:05.000000000 +0200
+@@ -1186,6 +1186,7 @@ enum {
        Opt_inode_readahead_blks, Opt_journal_ioprio,
        Opt_dioread_nolock, Opt_dioread_lock,
        Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
@@ -3336,38 +3425,38 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/super.c linux-3.3.1-vs2.3.3.2/fs/ext4/
  };
  
  static const match_table_t tokens = {
-@@ -1408,6 +1409,9 @@ static const match_table_t tokens = {
-       {Opt_init_itable, "init_itable=%u"},
-       {Opt_init_itable, "init_itable"},
-       {Opt_noinit_itable, "noinit_itable"},
+@@ -1264,6 +1265,9 @@ static const match_table_t tokens = {
+       {Opt_removed, "reservation"},   /* mount option from ext2/3 */
+       {Opt_removed, "noreservation"}, /* mount option from ext2/3 */
+       {Opt_removed, "journal=%u"},    /* mount option from ext2/3 */
 +      {Opt_tag, "tag"},
 +      {Opt_notag, "notag"},
 +      {Opt_tagid, "tagid=%u"},
        {Opt_err, NULL},
  };
  
-@@ -1576,6 +1580,20 @@ static int parse_options(char *options, 
-               case Opt_nouid32:
-                       set_opt(sb, NO_UID32);
-                       break;
+@@ -1498,6 +1502,20 @@ static int handle_mount_opt(struct super
+                       return -1;
+               *journal_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, arg);
+               return 1;
 +#ifndef CONFIG_TAGGING_NONE
-+              case Opt_tag:
-+                      set_opt(sb, TAGGED);
-+                      break;
-+              case Opt_notag:
-+                      clear_opt(sb, TAGGED);
-+                      break;
++      case Opt_tag:
++              set_opt(sb, TAGGED);
++              return 1;
++      case Opt_notag:
++              clear_opt(sb, TAGGED);
++              return 1;
 +#endif
 +#ifdef CONFIG_PROPAGATE
-+              case Opt_tagid:
-+                      /* use args[0] */
-+                      set_opt(sb, TAGGED);
-+                      break;
++      case Opt_tagid:
++              /* use args[0] */
++              set_opt(sb, TAGGED);
++              return 1;
 +#endif
-               case Opt_debug:
-                       set_opt(sb, DEBUG);
-                       break;
-@@ -3276,6 +3294,9 @@ static int ext4_fill_super(struct super_
+       }
+       for (m = ext4_mount_opts; m->token != Opt_err; m++) {
+@@ -3121,6 +3139,9 @@ static int ext4_fill_super(struct super_
                }
        }
  
@@ -3377,7 +3466,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/super.c linux-3.3.1-vs2.3.3.2/fs/ext4/
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
  
-@@ -4428,6 +4449,14 @@ static int ext4_remount(struct super_blo
+@@ -4267,6 +4288,14 @@ static int ext4_remount(struct super_blo
        if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED)
                ext4_abort(sb, "Abort forced by user");
  
@@ -3392,9 +3481,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ext4/super.c linux-3.3.1-vs2.3.3.2/fs/ext4/
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
  
-diff -NurpP --minimal linux-3.3.1/fs/fcntl.c linux-3.3.1-vs2.3.3.2/fs/fcntl.c
---- linux-3.3.1/fs/fcntl.c     2011-05-22 16:17:52.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/fcntl.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/fcntl.c linux-3.4-vs2.3.3.4/fs/fcntl.c
+--- linux-3.4/fs/fcntl.c       2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/fcntl.c     2012-05-21 18:15:05.000000000 +0200
 @@ -20,6 +20,7 @@
  #include <linux/signal.h>
  #include <linux/rcupdate.h>
@@ -3421,9 +3510,9 @@ diff -NurpP --minimal linux-3.3.1/fs/fcntl.c linux-3.3.1-vs2.3.3.2/fs/fcntl.c
  
        if (unlikely(filp->f_mode & FMODE_PATH)) {
                if (!check_fcntl_cmd(cmd)) {
-diff -NurpP --minimal linux-3.3.1/fs/file.c linux-3.3.1-vs2.3.3.2/fs/file.c
---- linux-3.3.1/fs/file.c      2011-05-22 16:17:52.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/file.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/file.c linux-3.4-vs2.3.3.4/fs/file.c
+--- linux-3.4/fs/file.c        2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/file.c      2012-05-21 18:15:05.000000000 +0200
 @@ -21,6 +21,7 @@
  #include <linux/spinlock.h>
  #include <linux/rcupdate.h>
@@ -3432,7 +3521,7 @@ diff -NurpP --minimal linux-3.3.1/fs/file.c linux-3.3.1-vs2.3.3.2/fs/file.c
  
  struct fdtable_defer {
        spinlock_t lock;
-@@ -359,6 +360,8 @@ struct files_struct *dup_fd(struct files
+@@ -358,6 +359,8 @@ struct files_struct *dup_fd(struct files
                struct file *f = *old_fds++;
                if (f) {
                        get_file(f);
@@ -3441,17 +3530,17 @@ diff -NurpP --minimal linux-3.3.1/fs/file.c linux-3.3.1-vs2.3.3.2/fs/file.c
                } else {
                        /*
                         * The fd may be claimed in the fd bitmap but not yet
-@@ -466,6 +469,7 @@ repeat:
+@@ -464,6 +467,7 @@ repeat:
        else
-               FD_CLR(fd, fdt->close_on_exec);
+               __clear_close_on_exec(fd, fdt);
        error = fd;
 +      vx_openfd_inc(fd);
  #if 1
        /* Sanity check */
        if (rcu_dereference_raw(fdt->fd[fd]) != NULL) {
-diff -NurpP --minimal linux-3.3.1/fs/file_table.c linux-3.3.1-vs2.3.3.2/fs/file_table.c
---- linux-3.3.1/fs/file_table.c        2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/file_table.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/file_table.c linux-3.4-vs2.3.3.4/fs/file_table.c
+--- linux-3.4/fs/file_table.c  2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/file_table.c        2012-05-21 18:15:05.000000000 +0200
 @@ -24,6 +24,8 @@
  #include <linux/percpu_counter.h>
  #include <linux/percpu.h>
@@ -3470,7 +3559,7 @@ diff -NurpP --minimal linux-3.3.1/fs/file_table.c linux-3.3.1-vs2.3.3.2/fs/file_
        return f;
  
  over:
-@@ -253,6 +257,8 @@ static void __fput(struct file *file)
+@@ -252,6 +256,8 @@ static void __fput(struct file *file)
        }
        fops_put(file->f_op);
        put_pid(file->f_owner.pid);
@@ -3479,7 +3568,7 @@ diff -NurpP --minimal linux-3.3.1/fs/file_table.c linux-3.3.1-vs2.3.3.2/fs/file_
        file_sb_list_del(file);
        if ((file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ)
                i_readcount_dec(inode);
-@@ -383,6 +389,8 @@ void put_filp(struct file *file)
+@@ -382,6 +388,8 @@ void put_filp(struct file *file)
  {
        if (atomic_long_dec_and_test(&file->f_count)) {
                security_file_free(file);
@@ -3488,9 +3577,9 @@ diff -NurpP --minimal linux-3.3.1/fs/file_table.c linux-3.3.1-vs2.3.3.2/fs/file_
                file_sb_list_del(file);
                file_free(file);
        }
-diff -NurpP --minimal linux-3.3.1/fs/fs_struct.c linux-3.3.1-vs2.3.3.2/fs/fs_struct.c
---- linux-3.3.1/fs/fs_struct.c 2011-03-15 18:07:31.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/fs_struct.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/fs_struct.c linux-3.4-vs2.3.3.4/fs/fs_struct.c
+--- linux-3.4/fs/fs_struct.c   2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/fs_struct.c 2012-05-21 18:15:05.000000000 +0200
 @@ -4,6 +4,7 @@
  #include <linux/path.h>
  #include <linux/slab.h>
@@ -3499,7 +3588,7 @@ diff -NurpP --minimal linux-3.3.1/fs/fs_struct.c linux-3.3.1-vs2.3.3.2/fs/fs_str
  #include "internal.h"
  
  static inline void path_get_longterm(struct path *path)
-@@ -96,6 +97,7 @@ void free_fs_struct(struct fs_struct *fs
+@@ -99,6 +100,7 @@ void free_fs_struct(struct fs_struct *fs
  {
        path_put_longterm(&fs->root);
        path_put_longterm(&fs->pwd);
@@ -3507,7 +3596,7 @@ diff -NurpP --minimal linux-3.3.1/fs/fs_struct.c linux-3.3.1-vs2.3.3.2/fs/fs_str
        kmem_cache_free(fs_cachep, fs);
  }
  
-@@ -135,6 +137,7 @@ struct fs_struct *copy_fs_struct(struct 
+@@ -136,6 +138,7 @@ struct fs_struct *copy_fs_struct(struct 
                fs->pwd = old->pwd;
                path_get_longterm(&fs->pwd);
                spin_unlock(&old->lock);
@@ -3515,10 +3604,10 @@ diff -NurpP --minimal linux-3.3.1/fs/fs_struct.c linux-3.3.1-vs2.3.3.2/fs/fs_str
        }
        return fs;
  }
-diff -NurpP --minimal linux-3.3.1/fs/gfs2/file.c linux-3.3.1-vs2.3.3.2/fs/gfs2/file.c
---- linux-3.3.1/fs/gfs2/file.c 2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/gfs2/file.c       2012-02-24 03:55:06.000000000 +0100
-@@ -143,6 +143,9 @@ static const u32 fsflags_to_gfs2[32] = {
+diff -NurpP --minimal linux-3.4/fs/gfs2/file.c linux-3.4-vs2.3.3.4/fs/gfs2/file.c
+--- linux-3.4/fs/gfs2/file.c   2012-05-21 18:07:20.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/gfs2/file.c 2012-05-21 18:15:05.000000000 +0200
+@@ -142,6 +142,9 @@ static const u32 fsflags_to_gfs2[32] = {
        [7] = GFS2_DIF_NOATIME,
        [12] = GFS2_DIF_EXHASH,
        [14] = GFS2_DIF_INHERIT_JDATA,
@@ -3528,7 +3617,7 @@ diff -NurpP --minimal linux-3.3.1/fs/gfs2/file.c linux-3.3.1-vs2.3.3.2/fs/gfs2/f
  };
  
  static const u32 gfs2_to_fsflags[32] = {
-@@ -152,6 +155,9 @@ static const u32 gfs2_to_fsflags[32] = {
+@@ -151,6 +154,9 @@ static const u32 gfs2_to_fsflags[32] = {
        [gfs2fl_NoAtime] = FS_NOATIME_FL,
        [gfs2fl_ExHash] = FS_INDEX_FL,
        [gfs2fl_InheritJdata] = FS_JOURNAL_DATA_FL,
@@ -3538,7 +3627,7 @@ diff -NurpP --minimal linux-3.3.1/fs/gfs2/file.c linux-3.3.1-vs2.3.3.2/fs/gfs2/f
  };
  
  static int gfs2_get_flags(struct file *filp, u32 __user *ptr)
-@@ -182,12 +188,18 @@ void gfs2_set_inode_flags(struct inode *
+@@ -181,12 +187,18 @@ void gfs2_set_inode_flags(struct inode *
  {
        struct gfs2_inode *ip = GFS2_I(inode);
        unsigned int flags = inode->i_flags;
@@ -3558,7 +3647,7 @@ diff -NurpP --minimal linux-3.3.1/fs/gfs2/file.c linux-3.3.1-vs2.3.3.2/fs/gfs2/f
        if (ip->i_diskflags & GFS2_DIF_APPENDONLY)
                flags |= S_APPEND;
        if (ip->i_diskflags & GFS2_DIF_NOATIME)
-@@ -195,6 +207,43 @@ void gfs2_set_inode_flags(struct inode *
+@@ -194,6 +206,43 @@ void gfs2_set_inode_flags(struct inode *
        if (ip->i_diskflags & GFS2_DIF_SYNC)
                flags |= S_SYNC;
        inode->i_flags = flags;
@@ -3602,7 +3691,7 @@ diff -NurpP --minimal linux-3.3.1/fs/gfs2/file.c linux-3.3.1-vs2.3.3.2/fs/gfs2/f
  }
  
  /* Flags that can be set by user space */
-@@ -306,6 +355,37 @@ static int gfs2_set_flags(struct file *f
+@@ -305,6 +354,37 @@ static int gfs2_set_flags(struct file *f
        return do_gfs2_set_flags(filp, gfsflags, ~GFS2_DIF_JDATA);
  }
  
@@ -3640,9 +3729,9 @@ diff -NurpP --minimal linux-3.3.1/fs/gfs2/file.c linux-3.3.1-vs2.3.3.2/fs/gfs2/f
  static long gfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        switch(cmd) {
-diff -NurpP --minimal linux-3.3.1/fs/gfs2/inode.h linux-3.3.1-vs2.3.3.2/fs/gfs2/inode.h
---- linux-3.3.1/fs/gfs2/inode.h        2012-01-09 16:14:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/gfs2/inode.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/gfs2/inode.h linux-3.4-vs2.3.3.4/fs/gfs2/inode.h
+--- linux-3.4/fs/gfs2/inode.h  2012-01-09 16:14:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/gfs2/inode.h        2012-05-21 18:15:05.000000000 +0200
 @@ -120,6 +120,7 @@ extern const struct file_operations gfs2
  extern const struct file_operations gfs2_dir_fops_nolock;
  
@@ -3651,18 +3740,18 @@ diff -NurpP --minimal linux-3.3.1/fs/gfs2/inode.h linux-3.3.1-vs2.3.3.2/fs/gfs2/
   
  #ifdef CONFIG_GFS2_FS_LOCKING_DLM
  extern const struct file_operations gfs2_file_fops;
-diff -NurpP --minimal linux-3.3.1/fs/inode.c linux-3.3.1-vs2.3.3.2/fs/inode.c
---- linux-3.3.1/fs/inode.c     2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/inode.c   2012-03-19 20:52:10.000000000 +0100
-@@ -27,6 +27,7 @@
- #include <linux/cred.h>
+diff -NurpP --minimal linux-3.4/fs/inode.c linux-3.4-vs2.3.3.4/fs/inode.c
+--- linux-3.4/fs/inode.c       2012-05-21 18:07:24.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/inode.c     2012-05-21 18:15:05.000000000 +0200
+@@ -17,6 +17,7 @@
+ #include <linux/prefetch.h>
  #include <linux/buffer_head.h> /* for inode_has_buffers */
  #include <linux/ratelimit.h>
 +#include <linux/vs_tag.h>
  #include "internal.h"
  
  /*
-@@ -138,6 +139,9 @@ int inode_init_always(struct super_block
+@@ -128,6 +129,9 @@ int inode_init_always(struct super_block
        struct address_space *const mapping = &inode->i_data;
  
        inode->i_sb = sb;
@@ -3672,7 +3761,7 @@ diff -NurpP --minimal linux-3.3.1/fs/inode.c linux-3.3.1-vs2.3.3.2/fs/inode.c
        inode->i_blkbits = sb->s_blocksize_bits;
        inode->i_flags = 0;
        atomic_set(&inode->i_count, 1);
-@@ -159,6 +163,7 @@ int inode_init_always(struct super_block
+@@ -149,6 +153,7 @@ int inode_init_always(struct super_block
        inode->i_bdev = NULL;
        inode->i_cdev = NULL;
        inode->i_rdev = 0;
@@ -3680,7 +3769,7 @@ diff -NurpP --minimal linux-3.3.1/fs/inode.c linux-3.3.1-vs2.3.3.2/fs/inode.c
        inode->dirtied_when = 0;
  
        if (security_inode_alloc(inode))
-@@ -480,6 +485,8 @@ void __insert_inode_hash(struct inode *i
+@@ -470,6 +475,8 @@ void __insert_inode_hash(struct inode *i
  }
  EXPORT_SYMBOL(__insert_inode_hash);
  
@@ -3689,7 +3778,7 @@ diff -NurpP --minimal linux-3.3.1/fs/inode.c linux-3.3.1-vs2.3.3.2/fs/inode.c
  /**
   *    __remove_inode_hash - remove an inode from the hash
   *    @inode: inode to unhash
-@@ -1709,9 +1716,11 @@ void init_special_inode(struct inode *in
+@@ -1689,9 +1696,11 @@ void init_special_inode(struct inode *in
        if (S_ISCHR(mode)) {
                inode->i_fop = &def_chr_fops;
                inode->i_rdev = rdev;
@@ -3701,7 +3790,7 @@ diff -NurpP --minimal linux-3.3.1/fs/inode.c linux-3.3.1-vs2.3.3.2/fs/inode.c
        } else if (S_ISFIFO(mode))
                inode->i_fop = &def_fifo_fops;
        else if (S_ISSOCK(mode))
-@@ -1740,6 +1749,7 @@ void inode_init_owner(struct inode *inod
+@@ -1720,6 +1729,7 @@ void inode_init_owner(struct inode *inod
        } else
                inode->i_gid = current_fsgid();
        inode->i_mode = mode;
@@ -3709,9 +3798,9 @@ diff -NurpP --minimal linux-3.3.1/fs/inode.c linux-3.3.1-vs2.3.3.2/fs/inode.c
  }
  EXPORT_SYMBOL(inode_init_owner);
  
-diff -NurpP --minimal linux-3.3.1/fs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ioctl.c
---- linux-3.3.1/fs/ioctl.c     2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ioctl.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ioctl.c linux-3.4-vs2.3.3.4/fs/ioctl.c
+--- linux-3.4/fs/ioctl.c       2012-05-21 18:07:24.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ioctl.c     2012-05-21 18:15:05.000000000 +0200
 @@ -15,6 +15,9 @@
  #include <linux/writeback.h>
  #include <linux/buffer_head.h>
@@ -3722,9 +3811,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ioctl.c
  
  #include <asm/ioctls.h>
  
-diff -NurpP --minimal linux-3.3.1/fs/ioprio.c linux-3.3.1-vs2.3.3.2/fs/ioprio.c
---- linux-3.3.1/fs/ioprio.c    2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ioprio.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ioprio.c linux-3.4-vs2.3.3.4/fs/ioprio.c
+--- linux-3.4/fs/ioprio.c      2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ioprio.c    2012-05-21 18:15:05.000000000 +0200
 @@ -28,6 +28,7 @@
  #include <linux/syscalls.h>
  #include <linux/security.h>
@@ -3751,9 +3840,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ioprio.c linux-3.3.1-vs2.3.3.2/fs/ioprio.c
                                tmpio = get_task_ioprio(p);
                                if (tmpio < 0)
                                        continue;
-diff -NurpP --minimal linux-3.3.1/fs/jfs/file.c linux-3.3.1-vs2.3.3.2/fs/jfs/file.c
---- linux-3.3.1/fs/jfs/file.c  2011-10-24 18:45:27.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/file.c        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/file.c linux-3.4-vs2.3.3.4/fs/jfs/file.c
+--- linux-3.4/fs/jfs/file.c    2011-10-24 18:45:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/jfs/file.c  2012-05-21 18:15:05.000000000 +0200
 @@ -109,7 +109,8 @@ int jfs_setattr(struct dentry *dentry, s
        if (is_quota_modification(inode, iattr))
                dquot_initialize(inode);
@@ -3772,9 +3861,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/file.c linux-3.3.1-vs2.3.3.2/fs/jfs/fil
  };
  
  const struct file_operations jfs_file_operations = {
-diff -NurpP --minimal linux-3.3.1/fs/jfs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/jfs/ioctl.c
---- linux-3.3.1/fs/jfs/ioctl.c 2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/ioctl.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/ioctl.c linux-3.4-vs2.3.3.4/fs/jfs/ioctl.c
+--- linux-3.4/fs/jfs/ioctl.c   2012-03-19 19:47:25.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/jfs/ioctl.c 2012-05-21 18:15:05.000000000 +0200
 @@ -11,6 +11,7 @@
  #include <linux/mount.h>
  #include <linux/time.h>
@@ -3832,9 +3921,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/jfs/io
                flags |= oldflags & ~JFS_FL_USER_MODIFIABLE;
                jfs_inode->mode2 = flags;
  
-diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_dinode.h linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_dinode.h
---- linux-3.3.1/fs/jfs/jfs_dinode.h    2008-12-25 00:26:37.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_dinode.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/jfs_dinode.h linux-3.4-vs2.3.3.4/fs/jfs/jfs_dinode.h
+--- linux-3.4/fs/jfs/jfs_dinode.h      2008-12-25 00:26:37.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/jfs/jfs_dinode.h    2012-05-21 18:15:05.000000000 +0200
 @@ -161,9 +161,13 @@ struct dinode {
  
  #define JFS_APPEND_FL         0x01000000 /* writes to file may only append */
@@ -3851,9 +3940,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_dinode.h linux-3.3.1-vs2.3.3.2/fs/j
  #define JFS_FL_INHERIT                0x03C80000
  
  /* These are identical to EXT[23]_IOC_GETFLAGS/SETFLAGS */
-diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_filsys.h linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_filsys.h
---- linux-3.3.1/fs/jfs/jfs_filsys.h    2008-12-25 00:26:37.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_filsys.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/jfs_filsys.h linux-3.4-vs2.3.3.4/fs/jfs/jfs_filsys.h
+--- linux-3.4/fs/jfs/jfs_filsys.h      2008-12-25 00:26:37.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/jfs/jfs_filsys.h    2012-05-21 18:15:05.000000000 +0200
 @@ -263,6 +263,7 @@
  #define JFS_NAME_MAX  255
  #define JFS_PATH_MAX  BPSIZE
@@ -3862,9 +3951,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_filsys.h linux-3.3.1-vs2.3.3.2/fs/j
  
  /*
   *    file system state (superblock state)
-diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_imap.c linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_imap.c
---- linux-3.3.1/fs/jfs/jfs_imap.c      2012-01-09 16:14:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_imap.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/jfs_imap.c linux-3.4-vs2.3.3.4/fs/jfs/jfs_imap.c
+--- linux-3.4/fs/jfs/jfs_imap.c        2012-01-09 16:14:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/jfs/jfs_imap.c      2012-05-21 18:15:05.000000000 +0200
 @@ -46,6 +46,7 @@
  #include <linux/pagemap.h>
  #include <linux/quotaops.h>
@@ -3924,9 +4013,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_imap.c linux-3.3.1-vs2.3.3.2/fs/jfs
        jfs_get_inode_flags(jfs_ip);
        /*
         * mode2 is only needed for storing the higher order bits.
-diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_inode.c linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_inode.c
---- linux-3.3.1/fs/jfs/jfs_inode.c     2012-01-09 16:14:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_inode.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/jfs_inode.c linux-3.4-vs2.3.3.4/fs/jfs/jfs_inode.c
+--- linux-3.4/fs/jfs/jfs_inode.c       2012-01-09 16:14:54.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/jfs/jfs_inode.c     2012-05-21 18:15:05.000000000 +0200
 @@ -18,6 +18,7 @@
  
  #include <linux/fs.h>
@@ -4000,9 +4089,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_inode.c linux-3.3.1-vs2.3.3.2/fs/jf
  }
  
  /*
-diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_inode.h linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_inode.h
---- linux-3.3.1/fs/jfs/jfs_inode.h     2011-10-24 18:45:27.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/jfs_inode.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/jfs_inode.h linux-3.4-vs2.3.3.4/fs/jfs/jfs_inode.h
+--- linux-3.4/fs/jfs/jfs_inode.h       2011-10-24 18:45:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/jfs/jfs_inode.h     2012-05-21 18:15:05.000000000 +0200
 @@ -39,6 +39,7 @@ extern struct dentry *jfs_fh_to_dentry(s
  extern struct dentry *jfs_fh_to_parent(struct super_block *sb, struct fid *fid,
        int fh_len, int fh_type);
@@ -4011,9 +4100,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/jfs_inode.h linux-3.3.1-vs2.3.3.2/fs/jf
  extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, int);
  extern int jfs_setattr(struct dentry *, struct iattr *);
  
-diff -NurpP --minimal linux-3.3.1/fs/jfs/namei.c linux-3.3.1-vs2.3.3.2/fs/jfs/namei.c
---- linux-3.3.1/fs/jfs/namei.c 2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/namei.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/namei.c linux-3.4-vs2.3.3.4/fs/jfs/namei.c
+--- linux-3.4/fs/jfs/namei.c   2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/jfs/namei.c 2012-05-21 18:15:05.000000000 +0200
 @@ -22,6 +22,7 @@
  #include <linux/ctype.h>
  #include <linux/quotaops.h>
@@ -4022,7 +4111,7 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/namei.c linux-3.3.1-vs2.3.3.2/fs/jfs/na
  #include "jfs_incore.h"
  #include "jfs_superblock.h"
  #include "jfs_inode.h"
-@@ -1474,6 +1475,7 @@ static struct dentry *jfs_lookup(struct 
+@@ -1461,6 +1462,7 @@ static struct dentry *jfs_lookup(struct 
                        jfs_err("jfs_lookup: iget failed on inum %d", (uint)inum);
        }
  
@@ -4030,7 +4119,7 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/namei.c linux-3.3.1-vs2.3.3.2/fs/jfs/na
        return d_splice_alias(ip, dentry);
  }
  
-@@ -1538,6 +1540,7 @@ const struct inode_operations jfs_dir_in
+@@ -1525,6 +1527,7 @@ const struct inode_operations jfs_dir_in
  #ifdef CONFIG_JFS_POSIX_ACL
        .get_acl        = jfs_get_acl,
  #endif
@@ -4038,9 +4127,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/namei.c linux-3.3.1-vs2.3.3.2/fs/jfs/na
  };
  
  const struct file_operations jfs_dir_operations = {
-diff -NurpP --minimal linux-3.3.1/fs/jfs/super.c linux-3.3.1-vs2.3.3.2/fs/jfs/super.c
---- linux-3.3.1/fs/jfs/super.c 2012-03-19 19:47:25.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/jfs/super.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/jfs/super.c linux-3.4-vs2.3.3.4/fs/jfs/super.c
+--- linux-3.4/fs/jfs/super.c   2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/jfs/super.c 2012-05-21 18:15:05.000000000 +0200
 @@ -197,7 +197,8 @@ static void jfs_put_super(struct super_b
  enum {
        Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
@@ -4096,7 +4185,7 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/super.c linux-3.3.1-vs2.3.3.2/fs/jfs/su
        if (newLVSize) {
                if (sb->s_flags & MS_RDONLY) {
                        printk(KERN_ERR
-@@ -454,6 +479,9 @@ static int jfs_fill_super(struct super_b
+@@ -455,6 +480,9 @@ static int jfs_fill_super(struct super_b
  #ifdef CONFIG_JFS_POSIX_ACL
        sb->s_flags |= MS_POSIXACL;
  #endif
@@ -4106,9 +4195,9 @@ diff -NurpP --minimal linux-3.3.1/fs/jfs/super.c linux-3.3.1-vs2.3.3.2/fs/jfs/su
  
        if (newLVSize) {
                printk(KERN_ERR "resize option for remount only\n");
-diff -NurpP --minimal linux-3.3.1/fs/libfs.c linux-3.3.1-vs2.3.3.2/fs/libfs.c
---- linux-3.3.1/fs/libfs.c     2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/libfs.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/libfs.c linux-3.4-vs2.3.3.4/fs/libfs.c
+--- linux-3.4/fs/libfs.c       2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/libfs.c     2012-05-21 18:15:05.000000000 +0200
 @@ -135,7 +135,8 @@ static inline unsigned char dt_type(stru
   * both impossible due to the lock on directory.
   */
@@ -4146,7 +4235,7 @@ diff -NurpP --minimal linux-3.3.1/fs/libfs.c linux-3.3.1-vs2.3.3.2/fs/libfs.c
  ssize_t generic_read_dir(struct file *filp, char __user *buf, size_t siz, loff_t *ppos)
  {
        return -EISDIR;
-@@ -977,6 +991,7 @@ EXPORT_SYMBOL(dcache_dir_close);
+@@ -983,6 +997,7 @@ EXPORT_SYMBOL(dcache_dir_close);
  EXPORT_SYMBOL(dcache_dir_lseek);
  EXPORT_SYMBOL(dcache_dir_open);
  EXPORT_SYMBOL(dcache_readdir);
@@ -4154,9 +4243,9 @@ diff -NurpP --minimal linux-3.3.1/fs/libfs.c linux-3.3.1-vs2.3.3.2/fs/libfs.c
  EXPORT_SYMBOL(generic_read_dir);
  EXPORT_SYMBOL(mount_pseudo);
  EXPORT_SYMBOL(simple_write_begin);
-diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
---- linux-3.3.1/fs/locks.c     2012-01-09 16:14:54.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/locks.c   2012-03-23 18:52:48.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/locks.c linux-3.4-vs2.3.3.4/fs/locks.c
+--- linux-3.4/fs/locks.c       2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/locks.c     2012-05-21 18:15:05.000000000 +0200
 @@ -126,6 +126,8 @@
  #include <linux/time.h>
  #include <linux/rcupdate.h>
@@ -4243,7 +4332,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        error = lease_init(filp, type, fl);
        if (error) {
                locks_free_lock(fl);
-@@ -772,6 +794,7 @@ static int flock_lock_file(struct file *
+@@ -773,6 +795,7 @@ static int flock_lock_file(struct file *
                lock_flocks();
        }
  
@@ -4251,7 +4340,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
  find_conflict:
        for_each_lock(inode, before) {
                struct file_lock *fl = *before;
-@@ -792,6 +815,7 @@ find_conflict:
+@@ -793,6 +816,7 @@ find_conflict:
                goto out;
        locks_copy_lock(new_fl, request);
        locks_insert_lock(before, new_fl);
@@ -4259,7 +4348,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        new_fl = NULL;
        error = 0;
  
-@@ -802,7 +826,8 @@ out:
+@@ -803,7 +827,8 @@ out:
        return error;
  }
  
@@ -4269,7 +4358,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
  {
        struct file_lock *fl;
        struct file_lock *new_fl = NULL;
-@@ -812,6 +837,8 @@ static int __posix_lock_file(struct inod
+@@ -813,6 +838,8 @@ static int __posix_lock_file(struct inod
        struct file_lock **before;
        int error, added = 0;
  
@@ -4278,7 +4367,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        /*
         * We may need two file_lock structures for this operation,
         * so we get them in advance to avoid races.
-@@ -822,7 +849,11 @@ static int __posix_lock_file(struct inod
+@@ -823,7 +850,11 @@ static int __posix_lock_file(struct inod
            (request->fl_type != F_UNLCK ||
             request->fl_start != 0 || request->fl_end != OFFSET_MAX)) {
                new_fl = locks_alloc_lock();
@@ -4290,7 +4379,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        }
  
        lock_flocks();
-@@ -1021,7 +1052,8 @@ static int __posix_lock_file(struct inod
+@@ -1022,7 +1053,8 @@ static int __posix_lock_file(struct inod
  int posix_lock_file(struct file *filp, struct file_lock *fl,
                        struct file_lock *conflock)
  {
@@ -4300,7 +4389,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
  }
  EXPORT_SYMBOL(posix_lock_file);
  
-@@ -1111,7 +1143,7 @@ int locks_mandatory_area(int read_write,
+@@ -1112,7 +1144,7 @@ int locks_mandatory_area(int read_write,
        fl.fl_end = offset + count - 1;
  
        for (;;) {
@@ -4309,7 +4398,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
                if (error != FILE_LOCK_DEFERRED)
                        break;
                error = wait_event_interruptible(fl.fl_wait, !fl.fl_next);
-@@ -1406,6 +1438,7 @@ int generic_add_lease(struct file *filp,
+@@ -1407,6 +1439,7 @@ int generic_add_lease(struct file *filp,
                goto out;
  
        locks_insert_lock(before, lease);
@@ -4317,7 +4406,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        return 0;
  
  out:
-@@ -1846,6 +1879,11 @@ int fcntl_setlk(unsigned int fd, struct 
+@@ -1847,6 +1880,11 @@ int fcntl_setlk(unsigned int fd, struct 
        if (file_lock == NULL)
                return -ENOLCK;
  
@@ -4329,7 +4418,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        /*
         * This might block, so we do it before checking the inode.
         */
-@@ -1964,6 +2002,11 @@ int fcntl_setlk64(unsigned int fd, struc
+@@ -1965,6 +2003,11 @@ int fcntl_setlk64(unsigned int fd, struc
        if (file_lock == NULL)
                return -ENOLCK;
  
@@ -4341,7 +4430,7 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
        /*
         * This might block, so we do it before checking the inode.
         */
-@@ -2229,8 +2272,11 @@ static int locks_show(struct seq_file *f
+@@ -2230,8 +2273,11 @@ static int locks_show(struct seq_file *f
  
        lock_get_status(f, fl, *((loff_t *)f->private), "");
  
@@ -4354,9 +4443,9 @@ diff -NurpP --minimal linux-3.3.1/fs/locks.c linux-3.3.1-vs2.3.3.2/fs/locks.c
  
        return 0;
  }
-diff -NurpP --minimal linux-3.3.1/fs/mount.h linux-3.3.1-vs2.3.3.2/fs/mount.h
---- linux-3.3.1/fs/mount.h     2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/mount.h   2012-02-24 17:29:48.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/mount.h linux-3.4-vs2.3.3.4/fs/mount.h
+--- linux-3.4/fs/mount.h       2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/mount.h     2012-05-21 18:15:05.000000000 +0200
 @@ -47,6 +47,7 @@ struct mount {
        int mnt_expiry_mark;            /* true if marked for expiry */
        int mnt_pinned;
@@ -4365,9 +4454,9 @@ diff -NurpP --minimal linux-3.3.1/fs/mount.h linux-3.3.1-vs2.3.3.2/fs/mount.h
  };
  
  static inline struct mount *real_mount(struct vfsmount *mnt)
-diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
---- linux-3.3.1/fs/namei.c     2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/namei.c   2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/namei.c linux-3.4-vs2.3.3.4/fs/namei.c
+--- linux-3.4/fs/namei.c       2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/namei.c     2012-05-21 18:15:05.000000000 +0200
 @@ -33,6 +33,14 @@
  #include <linux/device_cgroup.h>
  #include <linux/fs_struct.h>
@@ -4499,26 +4588,27 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
                }
                if (nd->path.dentry != nd->path.mnt->mnt_root) {
                        /* rare case of legitimate dget_parent()... */
-@@ -1149,6 +1245,9 @@ static int do_lookup(struct nameidata *n
+@@ -1174,6 +1270,9 @@ static int do_lookup(struct nameidata *n
+                               goto unlazy;
+                       }
                }
-               if (unlikely(d_need_lookup(dentry)))
-                       goto unlazy;
 +
 +              /* FIXME: check dx permission */
 +
                path->mnt = mnt;
                path->dentry = dentry;
                if (unlikely(!__follow_mount_rcu(nd, path, inode)))
-@@ -1210,6 +1309,8 @@ retry:
+@@ -1208,6 +1307,9 @@ unlazy:
+                       goto need_lookup;
                }
        }
++
 +      /* FIXME: check dx permission */
 +
+ done:
        path->mnt = mnt;
        path->dentry = dentry;
-       err = follow_managed(path, nd->flags);
-@@ -1926,7 +2027,7 @@ static int may_delete(struct inode *dir,
+@@ -1981,7 +2083,7 @@ static int may_delete(struct inode *dir,
        if (IS_APPEND(dir))
                return -EPERM;
        if (check_sticky(dir, victim->d_inode)||IS_APPEND(victim->d_inode)||
@@ -4527,7 +4617,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
                return -EPERM;
        if (isdir) {
                if (!S_ISDIR(victim->d_inode->i_mode))
-@@ -2006,19 +2107,25 @@ int vfs_create(struct inode *dir, struct
+@@ -2061,19 +2163,25 @@ int vfs_create(struct inode *dir, struct
  {
        int error = may_create(dir, dentry);
  
@@ -4555,7 +4645,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
        return error;
  }
  
-@@ -2053,6 +2160,15 @@ static int may_open(struct path *path, i
+@@ -2108,6 +2216,15 @@ static int may_open(struct path *path, i
                break;
        }
  
@@ -4571,7 +4661,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
        error = inode_permission(inode, acc_mode);
        if (error)
                return error;
-@@ -2277,6 +2393,16 @@ ok:
+@@ -2332,6 +2449,16 @@ ok:
        }
  common:
        error = may_open(&nd->path, acc_mode, open_flag);
@@ -4588,7 +4678,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
        if (error)
                goto exit;
        filp = nameidata_to_filp(nd);
-@@ -2319,6 +2445,7 @@ static struct file *path_openat(int dfd,
+@@ -2374,6 +2501,7 @@ static struct file *path_openat(int dfd,
        struct path path;
        int error;
  
@@ -4596,7 +4686,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
        filp = get_empty_filp();
        if (!filp)
                return ERR_PTR(-ENFILE);
-@@ -2356,6 +2483,17 @@ static struct file *path_openat(int dfd,
+@@ -2411,6 +2539,17 @@ static struct file *path_openat(int dfd,
                        filp = do_last(nd, &path, op, pathname);
                put_link(nd, &link, cookie);
        }
@@ -4614,7 +4704,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
  out:
        if (nd->root.mnt && !(nd->flags & LOOKUP_ROOT))
                path_put(&nd->root);
-@@ -2445,6 +2583,11 @@ struct dentry *kern_path_create(int dfd,
+@@ -2500,6 +2639,11 @@ struct dentry *kern_path_create(int dfd,
                goto fail;
        }
        *path = nd.path;
@@ -4626,7 +4716,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
        return dentry;
  eexist:
        dput(dentry);
-@@ -2926,7 +3069,7 @@ int vfs_link(struct dentry *old_dentry, 
+@@ -2986,7 +3130,7 @@ int vfs_link(struct dentry *old_dentry, 
        /*
         * A link to an append-only or immutable file cannot be created.
         */
@@ -4635,7 +4725,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
                return -EPERM;
        if (!dir->i_op->link)
                return -EPERM;
-@@ -3307,6 +3450,227 @@ int vfs_follow_link(struct nameidata *nd
+@@ -3375,6 +3519,253 @@ int vfs_follow_link(struct nameidata *nd
        return __vfs_follow_link(nd, link);
  }
  
@@ -4650,6 +4740,8 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
 +      return do_splice_direct(in, &ppos, out, len, 0);
 +}
 +
++extern unsigned int mnt_get_count(struct mount *mnt);
++
 +struct dentry *cow_break_link(const char *pathname)
 +{
 +      int ret, mode, pathlen, redo = 0;
@@ -4672,7 +4764,7 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
 +      ret = do_path_lookup(AT_FDCWD, pathname, LOOKUP_FOLLOW, &old_nd);
 +      vxdprintk(VXD_CBIT(misc, 2),
 +              "do_path_lookup(old): %d [r=%d]",
-+              ret, mnt_get_count(old_nd.path.mnt));
++              ret, mnt_get_count(real_mount(old_nd.path.mnt)));
 +      if (ret < 0)
 +              goto out_free_path;
 +
@@ -4854,18 +4946,47 @@ diff -NurpP --minimal linux-3.3.1/fs/namei.c linux-3.3.1-vs2.3.3.2/fs/namei.c
 +      }
 +      vxdprintk(VXD_CBIT(misc, 3),
 +              "cow_break_link returning with %p [r=%d]",
-+              new_dentry, mnt_get_count(old_nd.path.mnt));
++              new_dentry, mnt_get_count(real_mount(old_nd.path.mnt)));
 +      return new_dentry;
 +}
 +
 +#endif
++
++int   vx_info_mnt_namespace(struct mnt_namespace *ns, char *buffer)
++{
++      struct path path;
++      struct vfsmount *vmnt;
++      char *pstr, *root;
++      int length = 0;
++
++      pstr = kmalloc(PATH_MAX, GFP_KERNEL);
++      if (!pstr)
++              return 0;
++
++      vmnt = &ns->root->mnt;
++      path.mnt = vmnt;
++      path.dentry = vmnt->mnt_root;
++      root = d_path(&path, pstr, PATH_MAX - 2);
++      length = sprintf(buffer + length,
++              "Namespace:\t%p [#%u]\n"
++              "RootPath:\t%s\n",
++              ns, atomic_read(&ns->count),
++              root);
++      kfree(pstr);
++      return length;
++}
 +
  /* get the link contents into pagecache */
  static char *page_getlink(struct dentry * dentry, struct page **ppage)
  {
-diff -NurpP --minimal linux-3.3.1/fs/namespace.c linux-3.3.1-vs2.3.3.2/fs/namespace.c
---- linux-3.3.1/fs/namespace.c 2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/namespace.c       2012-02-24 17:38:42.000000000 +0100
+@@ -3499,3 +3890,4 @@ EXPORT_SYMBOL(vfs_symlink);
+ EXPORT_SYMBOL(vfs_unlink);
+ EXPORT_SYMBOL(dentry_unhash);
+ EXPORT_SYMBOL(generic_readlink);
++EXPORT_SYMBOL(vx_info_mnt_namespace);
+diff -NurpP --minimal linux-3.4/fs/namespace.c linux-3.4-vs2.3.3.4/fs/namespace.c
+--- linux-3.4/fs/namespace.c   2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/namespace.c 2012-05-21 18:15:05.000000000 +0200
 @@ -20,6 +20,11 @@
  #include <linux/fs_struct.h>  /* get_fs_root et.al. */
  #include <linux/fsnotify.h>   /* fsnotify_vfsmount_delete */
@@ -5052,10 +5173,10 @@ diff -NurpP --minimal linux-3.3.1/fs/namespace.c linux-3.3.1-vs2.3.3.2/fs/namesp
        kfree(ns);
  }
  
-diff -NurpP --minimal linux-3.3.1/fs/nfs/client.c linux-3.3.1-vs2.3.3.2/fs/nfs/client.c
---- linux-3.3.1/fs/nfs/client.c        2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfs/client.c      2012-02-24 03:55:06.000000000 +0100
-@@ -784,6 +784,9 @@ static int nfs_init_server_rpcclient(str
+diff -NurpP --minimal linux-3.4/fs/nfs/client.c linux-3.4-vs2.3.3.4/fs/nfs/client.c
+--- linux-3.4/fs/nfs/client.c  2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfs/client.c        2012-05-21 18:15:05.000000000 +0200
+@@ -802,6 +802,9 @@ static int nfs_init_server_rpcclient(str
        if (server->flags & NFS_MOUNT_SOFT)
                server->client->cl_softrtry = 1;
  
@@ -5065,7 +5186,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/client.c linux-3.3.1-vs2.3.3.2/fs/nfs/c
        return 0;
  }
  
-@@ -958,6 +961,10 @@ static void nfs_server_set_fsinfo(struct
+@@ -977,6 +980,10 @@ static void nfs_server_set_fsinfo(struct
                server->acdirmin = server->acdirmax = 0;
        }
  
@@ -5076,9 +5197,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/client.c linux-3.3.1-vs2.3.3.2/fs/nfs/c
        server->maxfilesize = fsinfo->maxfilesize;
  
        server->time_delta = fsinfo->time_delta;
-diff -NurpP --minimal linux-3.3.1/fs/nfs/dir.c linux-3.3.1-vs2.3.3.2/fs/nfs/dir.c
---- linux-3.3.1/fs/nfs/dir.c   2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfs/dir.c 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/nfs/dir.c linux-3.4-vs2.3.3.4/fs/nfs/dir.c
+--- linux-3.4/fs/nfs/dir.c     2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfs/dir.c   2012-05-21 18:15:05.000000000 +0200
 @@ -35,6 +35,7 @@
  #include <linux/sched.h>
  #include <linux/kmemleak.h>
@@ -5095,18 +5216,18 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/dir.c linux-3.3.1-vs2.3.3.2/fs/nfs/dir.
  no_entry:
        res = d_materialise_unique(dentry, inode);
        if (res != NULL) {
-diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/inode.c
---- linux-3.3.1/fs/nfs/inode.c 2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfs/inode.c       2012-02-24 04:40:22.000000000 +0100
-@@ -39,6 +39,7 @@
- #include <linux/slab.h>
+diff -NurpP --minimal linux-3.4/fs/nfs/inode.c linux-3.4-vs2.3.3.4/fs/nfs/inode.c
+--- linux-3.4/fs/nfs/inode.c   2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfs/inode.c 2012-05-21 18:15:05.000000000 +0200
+@@ -40,6 +40,7 @@
  #include <linux/compat.h>
  #include <linux/freezer.h>
+ #include <linux/crc32.h>
 +#include <linux/vs_tag.h>
  
- #include <asm/system.h>
  #include <asm/uaccess.h>
-@@ -274,6 +275,8 @@ nfs_fhget(struct super_block *sb, struct
+@@ -275,6 +276,8 @@ nfs_fhget(struct super_block *sb, struct
        if (inode->i_state & I_NEW) {
                struct nfs_inode *nfsi = NFS_I(inode);
                unsigned long now = jiffies;
@@ -5115,7 +5236,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
  
                /* We set i_ino for the few things that still rely on it,
                 * such as stat(2) */
-@@ -322,8 +325,8 @@ nfs_fhget(struct super_block *sb, struct
+@@ -323,8 +326,8 @@ nfs_fhget(struct super_block *sb, struct
                inode->i_version = 0;
                inode->i_size = 0;
                clear_nlink(inode);
@@ -5126,7 +5247,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
                inode->i_blocks = 0;
                memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));
  
-@@ -360,13 +363,13 @@ nfs_fhget(struct super_block *sb, struct
+@@ -361,13 +364,13 @@ nfs_fhget(struct super_block *sb, struct
                else if (nfs_server_capable(inode, NFS_CAP_NLINK))
                        nfsi->cache_validity |= NFS_INO_INVALID_ATTR;
                if (fattr->valid & NFS_ATTR_FATTR_OWNER)
@@ -5142,7 +5263,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
                else if (nfs_server_capable(inode, NFS_CAP_OWNER_GROUP))
                        nfsi->cache_validity |= NFS_INO_INVALID_ATTR
                                | NFS_INO_INVALID_ACCESS
-@@ -379,6 +382,11 @@ nfs_fhget(struct super_block *sb, struct
+@@ -380,6 +383,11 @@ nfs_fhget(struct super_block *sb, struct
                         */
                        inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used);
                }
@@ -5154,7 +5275,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
                nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);
                nfsi->attrtimeo_timestamp = now;
                nfsi->access_cache = RB_ROOT;
-@@ -495,6 +503,8 @@ void nfs_setattr_update_inode(struct ino
+@@ -497,6 +505,8 @@ void nfs_setattr_update_inode(struct ino
                        inode->i_uid = attr->ia_uid;
                if ((attr->ia_valid & ATTR_GID) != 0)
                        inode->i_gid = attr->ia_gid;
@@ -5163,7 +5284,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
                NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
                spin_unlock(&inode->i_lock);
        }
-@@ -944,6 +954,9 @@ static int nfs_check_inode_attributes(st
+@@ -946,6 +956,9 @@ static int nfs_check_inode_attributes(st
        struct nfs_inode *nfsi = NFS_I(inode);
        loff_t cur_size, new_isize;
        unsigned long invalid = 0;
@@ -5173,7 +5294,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
  
  
        /* Has the inode gone and changed behind our back? */
-@@ -967,13 +980,18 @@ static int nfs_check_inode_attributes(st
+@@ -969,13 +982,18 @@ static int nfs_check_inode_attributes(st
                        invalid |= NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE;
        }
  
@@ -5194,7 +5315,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
  
        /* Has the link count changed? */
        if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink)
-@@ -1210,6 +1228,9 @@ static int nfs_update_inode(struct inode
+@@ -1273,6 +1291,9 @@ static int nfs_update_inode(struct inode
        unsigned long invalid = 0;
        unsigned long now = jiffies;
        unsigned long save_cache_validity;
@@ -5202,9 +5323,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
 +      gid_t gid;
 +      tag_t tag;
  
-       dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n",
+       dfprintk(VFS, "NFS: %s(%s/%ld fh_crc=0x%08x ct=%d info=0x%x)\n",
                        __func__, inode->i_sb->s_id, inode->i_ino,
-@@ -1317,6 +1338,9 @@ static int nfs_update_inode(struct inode
+@@ -1381,6 +1402,9 @@ static int nfs_update_inode(struct inode
                                | NFS_INO_REVAL_PAGECACHE
                                | NFS_INO_REVAL_FORCED);
  
@@ -5214,7 +5335,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
  
        if (fattr->valid & NFS_ATTR_FATTR_ATIME)
                memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime));
-@@ -1338,9 +1362,9 @@ static int nfs_update_inode(struct inode
+@@ -1402,9 +1426,9 @@ static int nfs_update_inode(struct inode
                                | NFS_INO_REVAL_FORCED);
  
        if (fattr->valid & NFS_ATTR_FATTR_OWNER) {
@@ -5226,7 +5347,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
                }
        } else if (server->caps & NFS_CAP_OWNER)
                invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
-@@ -1349,9 +1373,9 @@ static int nfs_update_inode(struct inode
+@@ -1413,9 +1437,9 @@ static int nfs_update_inode(struct inode
                                | NFS_INO_REVAL_FORCED);
  
        if (fattr->valid & NFS_ATTR_FATTR_GROUP) {
@@ -5238,7 +5359,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
                }
        } else if (server->caps & NFS_CAP_OWNER_GROUP)
                invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
-@@ -1359,6 +1383,10 @@ static int nfs_update_inode(struct inode
+@@ -1423,6 +1447,10 @@ static int nfs_update_inode(struct inode
                                | NFS_INO_INVALID_ACL
                                | NFS_INO_REVAL_FORCED);
  
@@ -5249,9 +5370,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/inode.c linux-3.3.1-vs2.3.3.2/fs/nfs/in
        if (fattr->valid & NFS_ATTR_FATTR_NLINK) {
                if (inode->i_nlink != fattr->nlink) {
                        invalid |= NFS_INO_INVALID_ATTR;
-diff -NurpP --minimal linux-3.3.1/fs/nfs/nfs3xdr.c linux-3.3.1-vs2.3.3.2/fs/nfs/nfs3xdr.c
---- linux-3.3.1/fs/nfs/nfs3xdr.c       2011-03-15 18:07:32.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfs/nfs3xdr.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/nfs/nfs3xdr.c linux-3.4-vs2.3.3.4/fs/nfs/nfs3xdr.c
+--- linux-3.4/fs/nfs/nfs3xdr.c 2012-05-21 18:07:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfs/nfs3xdr.c       2012-05-21 18:15:05.000000000 +0200
 @@ -20,6 +20,7 @@
  #include <linux/nfs3.h>
  #include <linux/nfs_fs.h>
@@ -5397,17 +5518,17 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/nfs3xdr.c linux-3.3.1-vs2.3.3.2/fs/nfs/
  }
  
  /*
-diff -NurpP --minimal linux-3.3.1/fs/nfs/super.c linux-3.3.1-vs2.3.3.2/fs/nfs/super.c
---- linux-3.3.1/fs/nfs/super.c 2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfs/super.c       2012-02-24 03:55:06.000000000 +0100
-@@ -52,6 +52,7 @@
- #include <linux/nfs_xdr.h>
- #include <linux/magic.h>
+diff -NurpP --minimal linux-3.4/fs/nfs/super.c linux-3.4-vs2.3.3.4/fs/nfs/super.c
+--- linux-3.4/fs/nfs/super.c   2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfs/super.c 2012-05-21 18:15:05.000000000 +0200
+@@ -54,6 +54,7 @@
  #include <linux/parser.h>
+ #include <linux/nsproxy.h>
+ #include <linux/rcupdate.h>
 +#include <linux/vs_tag.h>
  
- #include <asm/system.h>
  #include <asm/uaccess.h>
 @@ -86,6 +87,7 @@ enum {
        Opt_sharecache, Opt_nosharecache,
        Opt_resvport, Opt_noresvport,
@@ -5416,17 +5537,17 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/super.c linux-3.3.1-vs2.3.3.2/fs/nfs/su
  
        /* Mount options that take integer arguments */
        Opt_port,
-@@ -99,6 +101,7 @@ enum {
+@@ -98,6 +100,7 @@ enum {
+       Opt_mountport,
        Opt_mountvers,
-       Opt_nfsvers,
        Opt_minorversion,
 +      Opt_tagid,
  
        /* Mount options that take string arguments */
-       Opt_sec, Opt_proto, Opt_mountproto, Opt_mounthost,
-@@ -179,6 +182,10 @@ static const match_table_t nfs_mount_opt
-       { Opt_fscache_uniq, "fsc=%s" },
-       { Opt_local_lock, "local_lock=%s" },
+       Opt_nfsvers,
+@@ -180,6 +183,10 @@ static const match_table_t nfs_mount_opt
+       /* The following needs to be listed after all other options */
+       { Opt_nfsvers, "v%s" },
  
 +      { Opt_tag, "tag" },
 +      { Opt_notag, "notag" },
@@ -5435,7 +5556,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/super.c linux-3.3.1-vs2.3.3.2/fs/nfs/su
        { Opt_err, NULL }
  };
  
-@@ -649,6 +656,7 @@ static void nfs_show_mount_options(struc
+@@ -674,6 +681,7 @@ static void nfs_show_mount_options(struc
                { NFS_MOUNT_NORDIRPLUS, ",nordirplus", "" },
                { NFS_MOUNT_UNSHARED, ",nosharecache", "" },
                { NFS_MOUNT_NORESVPORT, ",noresvport", "" },
@@ -5443,7 +5564,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/super.c linux-3.3.1-vs2.3.3.2/fs/nfs/su
                { 0, NULL, NULL }
        };
        const struct proc_nfs_info *nfs_infop;
-@@ -1216,6 +1224,14 @@ static int nfs_parse_mount_options(char 
+@@ -1286,6 +1294,14 @@ static int nfs_parse_mount_options(char 
                        kfree(mnt->fscache_uniq);
                        mnt->fscache_uniq = NULL;
                        break;
@@ -5458,7 +5579,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/super.c linux-3.3.1-vs2.3.3.2/fs/nfs/su
  
                /*
                 * options that take numeric values
-@@ -1322,6 +1338,12 @@ static int nfs_parse_mount_options(char 
+@@ -1372,6 +1388,12 @@ static int nfs_parse_mount_options(char 
                                goto out_invalid_value;
                        mnt->minorversion = option;
                        break;
@@ -5471,9 +5592,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfs/super.c linux-3.3.1-vs2.3.3.2/fs/nfs/su
  
                /*
                 * options that take text values
-diff -NurpP --minimal linux-3.3.1/fs/nfsd/auth.c linux-3.3.1-vs2.3.3.2/fs/nfsd/auth.c
---- linux-3.3.1/fs/nfsd/auth.c 2010-02-25 11:52:05.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfsd/auth.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/nfsd/auth.c linux-3.4-vs2.3.3.4/fs/nfsd/auth.c
+--- linux-3.4/fs/nfsd/auth.c   2010-02-25 11:52:05.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/nfsd/auth.c 2012-05-21 18:15:05.000000000 +0200
 @@ -1,6 +1,7 @@
  /* Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> */
  
@@ -5492,9 +5613,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfsd/auth.c linux-3.3.1-vs2.3.3.2/fs/nfsd/a
  
        rqgi = rqstp->rq_cred.cr_group_info;
  
-diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfs3xdr.c linux-3.3.1-vs2.3.3.2/fs/nfsd/nfs3xdr.c
---- linux-3.3.1/fs/nfsd/nfs3xdr.c      2011-07-22 11:18:05.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/nfsd/nfs3xdr.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/nfsd/nfs3xdr.c linux-3.4-vs2.3.3.4/fs/nfsd/nfs3xdr.c
+--- linux-3.4/fs/nfsd/nfs3xdr.c        2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfsd/nfs3xdr.c      2012-05-21 18:15:05.000000000 +0200
 @@ -7,6 +7,7 @@
   */
  
@@ -5545,9 +5666,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfs3xdr.c linux-3.3.1-vs2.3.3.2/fs/nfs
        if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
                p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
        } else {
-diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfs4xdr.c linux-3.3.1-vs2.3.3.2/fs/nfsd/nfs4xdr.c
---- linux-3.3.1/fs/nfsd/nfs4xdr.c      2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/nfsd/nfs4xdr.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/nfsd/nfs4xdr.c linux-3.4-vs2.3.3.4/fs/nfsd/nfs4xdr.c
+--- linux-3.4/fs/nfsd/nfs4xdr.c        2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfsd/nfs4xdr.c      2012-05-21 18:15:05.000000000 +0200
 @@ -46,6 +46,7 @@
  #include <linux/utsname.h>
  #include <linux/pagemap.h>
@@ -5556,7 +5677,7 @@ diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfs4xdr.c linux-3.3.1-vs2.3.3.2/fs/nfs
  
  #include "idmap.h"
  #include "acl.h"
-@@ -2327,14 +2328,18 @@ out_acl:
+@@ -2325,14 +2326,18 @@ out_acl:
                WRITE32(stat.nlink);
        }
        if (bmval1 & FATTR4_WORD1_OWNER) {
@@ -5577,9 +5698,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfs4xdr.c linux-3.3.1-vs2.3.3.2/fs/nfs
                if (status == nfserr_resource)
                        goto out_resource;
                if (status)
-diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfsxdr.c linux-3.3.1-vs2.3.3.2/fs/nfsd/nfsxdr.c
---- linux-3.3.1/fs/nfsd/nfsxdr.c       2011-05-22 16:17:53.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/nfsd/nfsxdr.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/nfsd/nfsxdr.c linux-3.4-vs2.3.3.4/fs/nfsd/nfsxdr.c
+--- linux-3.4/fs/nfsd/nfsxdr.c 2011-05-22 16:17:53.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/nfsd/nfsxdr.c       2012-05-21 18:15:05.000000000 +0200
 @@ -6,6 +6,7 @@
  
  #include "xdr.h"
@@ -5628,9 +5749,9 @@ diff -NurpP --minimal linux-3.3.1/fs/nfsd/nfsxdr.c linux-3.3.1-vs2.3.3.2/fs/nfsd
  
        if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
                *p++ = htonl(NFS_MAXPATHLEN);
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/dlmglue.c linux-3.3.1-vs2.3.3.2/fs/ocfs2/dlmglue.c
---- linux-3.3.1/fs/ocfs2/dlmglue.c     2012-01-09 16:14:55.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/dlmglue.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/dlmglue.c linux-3.4-vs2.3.3.4/fs/ocfs2/dlmglue.c
+--- linux-3.4/fs/ocfs2/dlmglue.c       2012-01-09 16:14:55.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/dlmglue.c     2012-05-21 18:15:05.000000000 +0200
 @@ -2047,6 +2047,7 @@ static void __ocfs2_stuff_meta_lvb(struc
        lvb->lvb_iclusters = cpu_to_be32(oi->ip_clusters);
        lvb->lvb_iuid      = cpu_to_be32(inode->i_uid);
@@ -5647,9 +5768,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/dlmglue.c linux-3.3.1-vs2.3.3.2/fs/oc
        inode->i_mode    = be16_to_cpu(lvb->lvb_imode);
        set_nlink(inode, be16_to_cpu(lvb->lvb_inlink));
        ocfs2_unpack_timespec(&inode->i_atime,
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/dlmglue.h linux-3.3.1-vs2.3.3.2/fs/ocfs2/dlmglue.h
---- linux-3.3.1/fs/ocfs2/dlmglue.h     2010-10-21 13:07:50.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/dlmglue.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/dlmglue.h linux-3.4-vs2.3.3.4/fs/ocfs2/dlmglue.h
+--- linux-3.4/fs/ocfs2/dlmglue.h       2010-10-21 13:07:50.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/dlmglue.h     2012-05-21 18:15:05.000000000 +0200
 @@ -46,7 +46,8 @@ struct ocfs2_meta_lvb {
        __be16       lvb_inlink;
        __be32       lvb_iattr;
@@ -5660,9 +5781,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/dlmglue.h linux-3.3.1-vs2.3.3.2/fs/oc
  };
  
  #define OCFS2_QINFO_LVB_VERSION 1
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/file.c linux-3.3.1-vs2.3.3.2/fs/ocfs2/file.c
---- linux-3.3.1/fs/ocfs2/file.c        2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/file.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/file.c linux-3.4-vs2.3.3.4/fs/ocfs2/file.c
+--- linux-3.4/fs/ocfs2/file.c  2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/file.c        2012-05-21 18:15:05.000000000 +0200
 @@ -1123,7 +1123,7 @@ int ocfs2_setattr(struct dentry *dentry,
                attr->ia_valid &= ~ATTR_SIZE;
  
@@ -5672,9 +5793,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/file.c linux-3.3.1-vs2.3.3.2/fs/ocfs2
        if (!(attr->ia_valid & OCFS2_VALID_ATTRS))
                return 0;
  
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/inode.c linux-3.3.1-vs2.3.3.2/fs/ocfs2/inode.c
---- linux-3.3.1/fs/ocfs2/inode.c       2012-01-09 16:14:55.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/inode.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/inode.c linux-3.4-vs2.3.3.4/fs/ocfs2/inode.c
+--- linux-3.4/fs/ocfs2/inode.c 2012-01-09 16:14:55.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/inode.c       2012-05-21 18:15:05.000000000 +0200
 @@ -28,6 +28,7 @@
  #include <linux/highmem.h>
  #include <linux/pagemap.h>
@@ -5771,9 +5892,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/inode.c linux-3.3.1-vs2.3.3.2/fs/ocfs
  
        /* Fast symlinks will have i_size but no allocated clusters. */
        if (S_ISLNK(inode->i_mode) && !fe->i_clusters)
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/inode.h linux-3.3.1-vs2.3.3.2/fs/ocfs2/inode.h
---- linux-3.3.1/fs/ocfs2/inode.h       2012-01-09 16:14:55.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/inode.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/inode.h linux-3.4-vs2.3.3.4/fs/ocfs2/inode.h
+--- linux-3.4/fs/ocfs2/inode.h 2012-01-09 16:14:55.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/inode.h       2012-05-21 18:15:05.000000000 +0200
 @@ -154,6 +154,7 @@ struct buffer_head *ocfs2_bread(struct i
  
  void ocfs2_set_inode_flags(struct inode *inode);
@@ -5782,10 +5903,10 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/inode.h linux-3.3.1-vs2.3.3.2/fs/ocfs
  
  static inline blkcnt_t ocfs2_inode_sector_count(struct inode *inode)
  {
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ocfs2/ioctl.c
---- linux-3.3.1/fs/ocfs2/ioctl.c       2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/ioctl.c     2012-02-24 03:55:06.000000000 +0100
-@@ -78,7 +78,41 @@ static int ocfs2_get_inode_attr(struct i
+diff -NurpP --minimal linux-3.4/fs/ocfs2/ioctl.c linux-3.4-vs2.3.3.4/fs/ocfs2/ioctl.c
+--- linux-3.4/fs/ocfs2/ioctl.c 2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/ioctl.c       2012-05-21 18:15:05.000000000 +0200
+@@ -76,7 +76,41 @@ static int ocfs2_get_inode_attr(struct i
        return status;
  }
  
@@ -5828,7 +5949,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ocfs
                                unsigned mask)
  {
        struct ocfs2_inode_info *ocfs2_inode = OCFS2_I(inode);
-@@ -103,6 +137,11 @@ static int ocfs2_set_inode_attr(struct i
+@@ -101,6 +135,11 @@ static int ocfs2_set_inode_attr(struct i
        if (!S_ISDIR(inode->i_mode))
                flags &= ~OCFS2_DIRSYNC_FL;
  
@@ -5840,7 +5961,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ocfs
        handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
        if (IS_ERR(handle)) {
                status = PTR_ERR(handle);
-@@ -881,6 +920,7 @@ bail:
+@@ -879,6 +918,7 @@ bail:
        return status;
  }
  
@@ -5848,9 +5969,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ioctl.c linux-3.3.1-vs2.3.3.2/fs/ocfs
  long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        struct inode *inode = filp->f_path.dentry->d_inode;
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/namei.c linux-3.3.1-vs2.3.3.2/fs/ocfs2/namei.c
---- linux-3.3.1/fs/ocfs2/namei.c       2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/namei.c     2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/namei.c linux-3.4-vs2.3.3.4/fs/ocfs2/namei.c
+--- linux-3.4/fs/ocfs2/namei.c 2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/namei.c       2012-05-21 18:15:05.000000000 +0200
 @@ -41,6 +41,7 @@
  #include <linux/slab.h>
  #include <linux/highmem.h>
@@ -5881,9 +6002,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/namei.c linux-3.3.1-vs2.3.3.2/fs/ocfs
        fe->i_mode = cpu_to_le16(inode->i_mode);
        if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
                fe->id1.dev1.i_rdev = cpu_to_le64(huge_encode_dev(dev));
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ocfs2.h linux-3.3.1-vs2.3.3.2/fs/ocfs2/ocfs2.h
---- linux-3.3.1/fs/ocfs2/ocfs2.h       2012-01-09 16:14:55.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/ocfs2.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/ocfs2.h linux-3.4-vs2.3.3.4/fs/ocfs2/ocfs2.h
+--- linux-3.4/fs/ocfs2/ocfs2.h 2012-01-09 16:14:55.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/ocfs2.h       2012-05-21 18:15:05.000000000 +0200
 @@ -272,6 +272,7 @@ enum ocfs2_mount_options
                                                     writes */
        OCFS2_MOUNT_HB_NONE = 1 << 13, /* No heartbeat */
@@ -5892,9 +6013,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ocfs2.h linux-3.3.1-vs2.3.3.2/fs/ocfs
  };
  
  #define OCFS2_OSB_SOFT_RO                     0x0001
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ocfs2_fs.h linux-3.3.1-vs2.3.3.2/fs/ocfs2/ocfs2_fs.h
---- linux-3.3.1/fs/ocfs2/ocfs2_fs.h    2011-05-22 16:17:53.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/ocfs2_fs.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/ocfs2_fs.h linux-3.4-vs2.3.3.4/fs/ocfs2/ocfs2_fs.h
+--- linux-3.4/fs/ocfs2/ocfs2_fs.h      2011-05-22 16:17:53.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/ocfs2_fs.h    2012-05-21 18:15:05.000000000 +0200
 @@ -266,6 +266,11 @@
  #define OCFS2_TOPDIR_FL                       FS_TOPDIR_FL    /* Top of directory hierarchies*/
  #define OCFS2_RESERVED_FL             FS_RESERVED_FL  /* reserved for ext2 lib */
@@ -5907,9 +6028,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/ocfs2_fs.h linux-3.3.1-vs2.3.3.2/fs/o
  #define OCFS2_FL_VISIBLE              FS_FL_USER_VISIBLE      /* User visible flags */
  #define OCFS2_FL_MODIFIABLE           FS_FL_USER_MODIFIABLE   /* User modifiable flags */
  
-diff -NurpP --minimal linux-3.3.1/fs/ocfs2/super.c linux-3.3.1-vs2.3.3.2/fs/ocfs2/super.c
---- linux-3.3.1/fs/ocfs2/super.c       2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/ocfs2/super.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/ocfs2/super.c linux-3.4-vs2.3.3.4/fs/ocfs2/super.c
+--- linux-3.4/fs/ocfs2/super.c 2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/ocfs2/super.c       2012-05-21 18:15:05.000000000 +0200
 @@ -185,6 +185,7 @@ enum {
        Opt_coherency_full,
        Opt_resv_level,
@@ -5952,7 +6073,7 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/super.c linux-3.3.1-vs2.3.3.2/fs/ocfs
        if (ocfs2_mount_local(osb))
                snprintf(nodestr, sizeof(nodestr), "local");
        else
-@@ -1506,6 +1520,20 @@ static int ocfs2_parse_options(struct su
+@@ -1503,6 +1517,20 @@ static int ocfs2_parse_options(struct su
                            option < OCFS2_MAX_RESV_LEVEL)
                                mopt->dir_resv_level = option;
                        break;
@@ -5973,9 +6094,9 @@ diff -NurpP --minimal linux-3.3.1/fs/ocfs2/super.c linux-3.3.1-vs2.3.3.2/fs/ocfs
                default:
                        mlog(ML_ERROR,
                             "Unrecognized mount option \"%s\" "
-diff -NurpP --minimal linux-3.3.1/fs/open.c linux-3.3.1-vs2.3.3.2/fs/open.c
---- linux-3.3.1/fs/open.c      2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/open.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/open.c linux-3.4-vs2.3.3.4/fs/open.c
+--- linux-3.4/fs/open.c        2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/open.c      2012-05-21 18:15:05.000000000 +0200
 @@ -30,6 +30,11 @@
  #include <linux/fs_struct.h>
  #include <linux/ima.h>
@@ -6060,16 +6181,16 @@ diff -NurpP --minimal linux-3.3.1/fs/open.c linux-3.3.1-vs2.3.3.2/fs/open.c
        mnt_drop_write(path.mnt);
  out_release:
 @@ -839,6 +866,7 @@ static void __put_unused_fd(struct files
-       __FD_CLR(fd, fdt->open_fds);
+       __clear_open_fd(fd, fdt);
        if (fd < files->next_fd)
                files->next_fd = fd;
 +      vx_openfd_dec(fd);
  }
  
  void put_unused_fd(unsigned int fd)
-diff -NurpP --minimal linux-3.3.1/fs/proc/array.c linux-3.3.1-vs2.3.3.2/fs/proc/array.c
---- linux-3.3.1/fs/proc/array.c        2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/array.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc/array.c linux-3.4-vs2.3.3.4/fs/proc/array.c
+--- linux-3.4/fs/proc/array.c  2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/array.c        2012-05-21 18:15:05.000000000 +0200
 @@ -81,6 +81,8 @@
  #include <linux/pid_namespace.h>
  #include <linux/ptrace.h>
@@ -6180,12 +6301,12 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/array.c linux-3.3.1-vs2.3.3.2/fs/proc/
 +                      start_time = 0;
 +      }
 +
-       seq_printf(m, "%d (%s) %c %d %d %d %d %d %u %lu \
- %lu %lu %lu %lu %lu %ld %ld %ld %ld %d 0 %llu %lu %ld %lu %lu %lu %lu %lu \
- %lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld %lu %lu %lu\n",
-diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/base.c
---- linux-3.3.1/fs/proc/base.c 2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/base.c       2012-02-24 04:45:58.000000000 +0100
+       seq_printf(m, "%d (%s) %c", pid_nr_ns(pid, ns), tcomm, state);
+       seq_put_decimal_ll(m, ' ', ppid);
+       seq_put_decimal_ll(m, ' ', pgid);
+diff -NurpP --minimal linux-3.4/fs/proc/base.c linux-3.4-vs2.3.3.4/fs/proc/base.c
+--- linux-3.4/fs/proc/base.c   2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/base.c 2012-05-21 18:15:05.000000000 +0200
 @@ -84,6 +84,8 @@
  #include <linux/fs_struct.h>
  #include <linux/slab.h>
@@ -6213,7 +6334,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        /*
         * Warn that /proc/pid/oom_adj is deprecated, see
         * Documentation/feature-removal-schedule.txt.
-@@ -1542,6 +1549,8 @@ struct inode *proc_pid_make_inode(struct
+@@ -1541,6 +1548,8 @@ struct inode *proc_pid_make_inode(struct
                inode->i_gid = cred->egid;
                rcu_read_unlock();
        }
@@ -6222,7 +6343,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        security_task_to_inode(task, inode);
  
  out:
-@@ -1587,6 +1596,8 @@ int pid_getattr(struct vfsmount *mnt, st
+@@ -1586,6 +1595,8 @@ int pid_getattr(struct vfsmount *mnt, st
  
  /* dentry stuff */
  
@@ -6231,7 +6352,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
  /*
   *    Exceptional case: normally we are not allowed to unhash a busy
   * directory. In this case, however, we can do it - no aliasing problems
-@@ -1615,6 +1626,12 @@ int pid_revalidate(struct dentry *dentry
+@@ -1614,6 +1625,12 @@ int pid_revalidate(struct dentry *dentry
        task = get_proc_task(inode);
  
        if (task) {
@@ -6244,7 +6365,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
                if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
                    task_dumpable(task)) {
                        rcu_read_lock();
-@@ -1631,6 +1648,7 @@ int pid_revalidate(struct dentry *dentry
+@@ -1630,6 +1647,7 @@ int pid_revalidate(struct dentry *dentry
                put_task_struct(task);
                return 1;
        }
@@ -6252,7 +6373,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        d_drop(dentry);
        return 0;
  }
-@@ -2469,6 +2487,13 @@ static struct dentry *proc_pident_lookup
+@@ -2449,6 +2467,13 @@ static struct dentry *proc_pident_lookup
        if (!task)
                goto out_no_task;
  
@@ -6266,7 +6387,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        /*
         * Yes, it does not scale. And it should not. Don't add
         * new entries into /proc/<tgid>/ without very good reasons.
-@@ -2854,7 +2879,7 @@ out_iput:
+@@ -2834,7 +2859,7 @@ out_iput:
  static struct dentry *proc_base_lookup(struct inode *dir, struct dentry *dentry)
  {
        struct dentry *error;
@@ -6275,7 +6396,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        const struct pid_entry *p, *last;
  
        error = ERR_PTR(-ENOENT);
-@@ -2961,6 +2986,9 @@ static int proc_pid_personality(struct s
+@@ -2941,6 +2966,9 @@ static int proc_pid_personality(struct s
  static const struct file_operations proc_task_operations;
  static const struct inode_operations proc_task_inode_operations;
  
@@ -6285,7 +6406,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
  static const struct pid_entry tgid_base_stuff[] = {
        DIR("task",       S_IRUGO|S_IXUGO, proc_task_inode_operations, proc_task_operations),
        DIR("fd",         S_IRUSR|S_IXUSR, proc_fd_inode_operations, proc_fd_operations),
-@@ -3027,6 +3055,8 @@ static const struct pid_entry tgid_base_
+@@ -3007,6 +3035,8 @@ static const struct pid_entry tgid_base_
  #ifdef CONFIG_CGROUPS
        REG("cgroup",  S_IRUGO, proc_cgroup_operations),
  #endif
@@ -6294,7 +6415,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        INF("oom_score",  S_IRUGO, proc_oom_score),
        REG("oom_adj",    S_IRUGO|S_IWUSR, proc_oom_adjust_operations),
        REG("oom_score_adj", S_IRUGO|S_IWUSR, proc_oom_score_adj_operations),
-@@ -3046,6 +3076,7 @@ static const struct pid_entry tgid_base_
+@@ -3026,6 +3056,7 @@ static const struct pid_entry tgid_base_
  #ifdef CONFIG_HARDWALL
        INF("hardwall",   S_IRUGO, proc_pid_hardwall),
  #endif
@@ -6302,7 +6423,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
  };
  
  static int proc_tgid_base_readdir(struct file * filp,
-@@ -3239,7 +3270,7 @@ retry:
+@@ -3219,7 +3250,7 @@ retry:
        iter.task = NULL;
        pid = find_ge_pid(iter.tgid, ns);
        if (pid) {
@@ -6311,7 +6432,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
                iter.task = pid_task(pid, PIDTYPE_PID);
                /* What we to know is if the pid we have find is the
                 * pid of a thread_group_leader.  Testing for task
-@@ -3269,7 +3300,7 @@ static int proc_pid_fill_cache(struct fi
+@@ -3249,7 +3280,7 @@ static int proc_pid_fill_cache(struct fi
        struct tgid_iter iter)
  {
        char name[PROC_NUMBUF];
@@ -6320,7 +6441,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        return proc_fill_cache(filp, dirent, filldir, name, len,
                                proc_pid_instantiate, iter.task, NULL);
  }
-@@ -3293,7 +3324,7 @@ int proc_pid_readdir(struct file * filp,
+@@ -3273,7 +3304,7 @@ int proc_pid_readdir(struct file * filp,
                goto out_no_task;
        nr = filp->f_pos - FIRST_PROCESS_ENTRY;
  
@@ -6329,7 +6450,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
        if (!reaper)
                goto out_no_task;
  
-@@ -3315,6 +3346,8 @@ int proc_pid_readdir(struct file * filp,
+@@ -3295,6 +3326,8 @@ int proc_pid_readdir(struct file * filp,
                        __filldir = fake_filldir;
  
                filp->f_pos = iter.tgid + TGID_OFFSET;
@@ -6338,7 +6459,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
                if (proc_pid_fill_cache(filp, dirent, __filldir, iter) < 0) {
                        put_task_struct(iter.task);
                        goto out;
-@@ -3468,6 +3501,8 @@ static struct dentry *proc_task_lookup(s
+@@ -3448,6 +3481,8 @@ static struct dentry *proc_task_lookup(s
        tid = name_to_int(dentry);
        if (tid == ~0U)
                goto out;
@@ -6347,9 +6468,9 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/base.c linux-3.3.1-vs2.3.3.2/fs/proc/b
  
        ns = dentry->d_sb->s_fs_info;
        rcu_read_lock();
-diff -NurpP --minimal linux-3.3.1/fs/proc/generic.c linux-3.3.1-vs2.3.3.2/fs/proc/generic.c
---- linux-3.3.1/fs/proc/generic.c      2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/generic.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc/generic.c linux-3.4-vs2.3.3.4/fs/proc/generic.c
+--- linux-3.4/fs/proc/generic.c        2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/proc/generic.c      2012-05-21 18:15:05.000000000 +0200
 @@ -22,6 +22,7 @@
  #include <linux/bitops.h>
  #include <linux/spinlock.h>
@@ -6409,10 +6530,10 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/generic.c linux-3.3.1-vs2.3.3.2/fs/pro
                } else {
                        kfree(ent);
                        ent = NULL;
-diff -NurpP --minimal linux-3.3.1/fs/proc/inode.c linux-3.3.1-vs2.3.3.2/fs/proc/inode.c
---- linux-3.3.1/fs/proc/inode.c        2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/inode.c      2012-02-24 03:55:06.000000000 +0100
-@@ -459,6 +459,8 @@ struct inode *proc_get_inode(struct supe
+diff -NurpP --minimal linux-3.4/fs/proc/inode.c linux-3.4-vs2.3.3.4/fs/proc/inode.c
+--- linux-3.4/fs/proc/inode.c  2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/inode.c        2012-05-21 18:15:05.000000000 +0200
+@@ -458,6 +458,8 @@ struct inode *proc_get_inode(struct supe
                        inode->i_uid = de->uid;
                        inode->i_gid = de->gid;
                }
@@ -6421,18 +6542,19 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/inode.c linux-3.3.1-vs2.3.3.2/fs/proc/
                if (de->size)
                        inode->i_size = de->size;
                if (de->nlink)
-diff -NurpP --minimal linux-3.3.1/fs/proc/internal.h linux-3.3.1-vs2.3.3.2/fs/proc/internal.h
---- linux-3.3.1/fs/proc/internal.h     2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/internal.h   2012-02-24 03:55:06.000000000 +0100
-@@ -10,6 +10,7 @@
+diff -NurpP --minimal linux-3.4/fs/proc/internal.h linux-3.4-vs2.3.3.4/fs/proc/internal.h
+--- linux-3.4/fs/proc/internal.h       2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/internal.h     2012-05-21 18:15:05.000000000 +0200
+@@ -10,6 +10,8 @@
   */
  
  #include <linux/proc_fs.h>
 +#include <linux/vs_pid.h>
++
+ struct  ctl_table_header;
  
  extern struct proc_dir_entry proc_root;
- #ifdef CONFIG_PROC_SYSCTL
-@@ -51,6 +52,9 @@ extern int proc_pid_status(struct seq_fi
+@@ -54,6 +56,9 @@ extern int proc_pid_status(struct seq_fi
                                struct pid *pid, struct task_struct *task);
  extern int proc_pid_statm(struct seq_file *m, struct pid_namespace *ns,
                                struct pid *pid, struct task_struct *task);
@@ -6441,8 +6563,8 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/internal.h linux-3.3.1-vs2.3.3.2/fs/pr
 +
  extern loff_t mem_lseek(struct file *file, loff_t offset, int orig);
  
- extern const struct file_operations proc_maps_operations;
-@@ -76,11 +80,16 @@ static inline struct pid *proc_pid(struc
+ extern const struct file_operations proc_pid_maps_operations;
+@@ -82,11 +87,16 @@ static inline struct pid *proc_pid(struc
        return PROC_I(inode)->pid;
  }
  
@@ -6460,9 +6582,9 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/internal.h linux-3.3.1-vs2.3.3.2/fs/pr
  static inline int proc_fd(struct inode *inode)
  {
        return PROC_I(inode)->fd;
-diff -NurpP --minimal linux-3.3.1/fs/proc/loadavg.c linux-3.3.1-vs2.3.3.2/fs/proc/loadavg.c
---- linux-3.3.1/fs/proc/loadavg.c      2009-09-10 15:26:23.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/loadavg.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc/loadavg.c linux-3.4-vs2.3.3.4/fs/proc/loadavg.c
+--- linux-3.4/fs/proc/loadavg.c        2009-09-10 15:26:23.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/loadavg.c      2012-05-21 18:15:05.000000000 +0200
 @@ -12,15 +12,27 @@
  
  static int loadavg_proc_show(struct seq_file *m, void *v)
@@ -6492,9 +6614,9 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/loadavg.c linux-3.3.1-vs2.3.3.2/fs/pro
                task_active_pid_ns(current)->last_pid);
        return 0;
  }
-diff -NurpP --minimal linux-3.3.1/fs/proc/meminfo.c linux-3.3.1-vs2.3.3.2/fs/proc/meminfo.c
---- linux-3.3.1/fs/proc/meminfo.c      2012-01-09 16:14:55.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/meminfo.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc/meminfo.c linux-3.4-vs2.3.3.4/fs/proc/meminfo.c
+--- linux-3.4/fs/proc/meminfo.c        2012-01-09 16:14:55.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/proc/meminfo.c      2012-05-21 18:15:05.000000000 +0200
 @@ -39,7 +39,8 @@ static int meminfo_proc_show(struct seq_
        allowed = ((totalram_pages - hugetlb_total_pages())
                * sysctl_overcommit_ratio / 100) + total_swap_pages;
@@ -6505,9 +6627,9 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/meminfo.c linux-3.3.1-vs2.3.3.2/fs/pro
                        total_swapcache_pages - i.bufferram;
        if (cached < 0)
                cached = 0;
-diff -NurpP --minimal linux-3.3.1/fs/proc/root.c linux-3.3.1-vs2.3.3.2/fs/proc/root.c
---- linux-3.3.1/fs/proc/root.c 2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/root.c       2012-02-24 04:46:50.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc/root.c linux-3.4-vs2.3.3.4/fs/proc/root.c
+--- linux-3.4/fs/proc/root.c   2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/root.c 2012-05-21 18:15:05.000000000 +0200
 @@ -19,9 +19,14 @@
  #include <linux/mount.h>
  #include <linux/pid_namespace.h>
@@ -6523,7 +6645,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/root.c linux-3.3.1-vs2.3.3.2/fs/proc/r
  static int proc_test_super(struct super_block *sb, void *data)
  {
        return sb->s_fs_info == data;
-@@ -189,6 +194,7 @@ void __init proc_root_init(void)
+@@ -190,6 +195,7 @@ void __init proc_root_init(void)
  #endif
        proc_mkdir("bus", NULL);
        proc_sys_init();
@@ -6531,7 +6653,7 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/root.c linux-3.3.1-vs2.3.3.2/fs/proc/r
  }
  
  static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
-@@ -256,6 +262,7 @@ struct proc_dir_entry proc_root = {
+@@ -257,6 +263,7 @@ struct proc_dir_entry proc_root = {
        .proc_iops      = &proc_root_inode_operations, 
        .proc_fops      = &proc_root_operations,
        .parent         = &proc_root,
@@ -6539,9 +6661,31 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/root.c linux-3.3.1-vs2.3.3.2/fs/proc/r
        .name           = "/proc",
  };
  
-diff -NurpP --minimal linux-3.3.1/fs/proc/uptime.c linux-3.3.1-vs2.3.3.2/fs/proc/uptime.c
---- linux-3.3.1/fs/proc/uptime.c       2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc/uptime.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc/stat.c linux-3.4-vs2.3.3.4/fs/proc/stat.c
+--- linux-3.4/fs/proc/stat.c   2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/proc/stat.c 2012-05-21 18:15:05.000000000 +0200
+@@ -9,6 +9,7 @@
+ #include <linux/slab.h>
+ #include <linux/time.h>
+ #include <linux/irqnr.h>
++#include <linux/vserver/cvirt.h>
+ #include <asm/cputime.h>
+ #include <linux/tick.h>
+@@ -86,6 +87,10 @@ static int show_stat(struct seq_file *p,
+               irq = softirq = steal = 0;
+       guest = guest_nice = 0;
+       getboottime(&boottime);
++
++      if (vx_flags(VXF_VIRT_UPTIME, 0))
++              vx_vsi_boottime(&boottime);
++
+       jif = boottime.tv_sec;
+       for_each_possible_cpu(i) {
+diff -NurpP --minimal linux-3.4/fs/proc/uptime.c linux-3.4-vs2.3.3.4/fs/proc/uptime.c
+--- linux-3.4/fs/proc/uptime.c 2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/proc/uptime.c       2012-05-21 18:15:05.000000000 +0200
 @@ -5,6 +5,7 @@
  #include <linux/seq_file.h>
  #include <linux/time.h>
@@ -6561,9 +6705,9 @@ diff -NurpP --minimal linux-3.3.1/fs/proc/uptime.c linux-3.3.1-vs2.3.3.2/fs/proc
        seq_printf(m, "%lu.%02lu %lu.%02lu\n",
                        (unsigned long) uptime.tv_sec,
                        (uptime.tv_nsec / (NSEC_PER_SEC / 100)),
-diff -NurpP --minimal linux-3.3.1/fs/proc_namespace.c linux-3.3.1-vs2.3.3.2/fs/proc_namespace.c
---- linux-3.3.1/fs/proc_namespace.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/proc_namespace.c  2012-02-24 17:41:22.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/proc_namespace.c linux-3.4-vs2.3.3.4/fs/proc_namespace.c
+--- linux-3.4/fs/proc_namespace.c      2012-03-19 19:47:26.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/proc_namespace.c    2012-05-21 18:15:05.000000000 +0200
 @@ -44,6 +44,8 @@ static int show_sb_opts(struct seq_file 
                { MS_SYNCHRONOUS, ",sync" },
                { MS_DIRSYNC, ",dirsync" },
@@ -6673,12 +6817,12 @@ diff -NurpP --minimal linux-3.3.1/fs/proc_namespace.c linux-3.3.1-vs2.3.3.2/fs/p
        /* file system type */
        seq_puts(m, "with fstype ");
        show_type(m, sb);
-diff -NurpP --minimal linux-3.3.1/fs/quota/dquot.c linux-3.3.1-vs2.3.3.2/fs/quota/dquot.c
---- linux-3.3.1/fs/quota/dquot.c       2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/quota/dquot.c     2012-02-24 03:55:06.000000000 +0100
-@@ -1547,6 +1547,9 @@ int __dquot_alloc_space(struct inode *in
+diff -NurpP --minimal linux-3.4/fs/quota/dquot.c linux-3.4-vs2.3.3.4/fs/quota/dquot.c
+--- linux-3.4/fs/quota/dquot.c 2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/quota/dquot.c       2012-05-21 18:15:05.000000000 +0200
+@@ -1563,6 +1563,9 @@ int __dquot_alloc_space(struct inode *in
+       struct dquot **dquots = inode->i_dquot;
        int reserve = flags & DQUOT_SPACE_RESERVE;
-       int nofail = flags & DQUOT_SPACE_NOFAIL;
  
 +      if ((ret = dl_alloc_space(inode, number)))
 +              return ret;
@@ -6686,9 +6830,9 @@ diff -NurpP --minimal linux-3.3.1/fs/quota/dquot.c linux-3.3.1-vs2.3.3.2/fs/quot
        /*
         * First test before acquiring mutex - solves deadlocks when we
         * re-enter the quota code and are already holding the mutex
-@@ -1601,6 +1604,9 @@ int dquot_alloc_inode(const struct inode
-       int cnt, ret = 0;
-       char warntype[MAXQUOTAS];
+@@ -1618,6 +1621,9 @@ int dquot_alloc_inode(const struct inode
+       struct dquot_warn warn[MAXQUOTAS];
+       struct dquot * const *dquots = inode->i_dquot;
  
 +      if ((ret = dl_alloc_inode(inode)))
 +              return ret;
@@ -6696,8 +6840,8 @@ diff -NurpP --minimal linux-3.3.1/fs/quota/dquot.c linux-3.3.1-vs2.3.3.2/fs/quot
        /* First test before acquiring mutex - solves deadlocks when we
           * re-enter the quota code and are already holding the mutex */
        if (!dquot_active(inode))
-@@ -1671,6 +1677,8 @@ void __dquot_free_space(struct inode *in
-       char warntype[MAXQUOTAS];
+@@ -1689,6 +1695,8 @@ void __dquot_free_space(struct inode *in
+       struct dquot **dquots = inode->i_dquot;
        int reserve = flags & DQUOT_SPACE_RESERVE;
  
 +      dl_free_space(inode, number);
@@ -6705,18 +6849,18 @@ diff -NurpP --minimal linux-3.3.1/fs/quota/dquot.c linux-3.3.1-vs2.3.3.2/fs/quot
        /* First test before acquiring mutex - solves deadlocks when we
           * re-enter the quota code and are already holding the mutex */
        if (!dquot_active(inode)) {
-@@ -1709,6 +1717,8 @@ void dquot_free_inode(const struct inode
-       unsigned int cnt;
-       char warntype[MAXQUOTAS];
+@@ -1733,6 +1741,8 @@ void dquot_free_inode(const struct inode
+       struct dquot_warn warn[MAXQUOTAS];
+       struct dquot * const *dquots = inode->i_dquot;
  
 +      dl_free_inode(inode);
 +
        /* First test before acquiring mutex - solves deadlocks when we
           * re-enter the quota code and are already holding the mutex */
        if (!dquot_active(inode))
-diff -NurpP --minimal linux-3.3.1/fs/quota/quota.c linux-3.3.1-vs2.3.3.2/fs/quota/quota.c
---- linux-3.3.1/fs/quota/quota.c       2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/quota/quota.c     2012-03-19 20:54:39.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/quota/quota.c linux-3.4-vs2.3.3.4/fs/quota/quota.c
+--- linux-3.4/fs/quota/quota.c 2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/quota/quota.c       2012-05-21 18:15:05.000000000 +0200
 @@ -8,6 +8,7 @@
  #include <linux/fs.h>
  #include <linux/namei.h>
@@ -6734,7 +6878,7 @@ diff -NurpP --minimal linux-3.3.1/fs/quota/quota.c linux-3.3.1-vs2.3.3.2/fs/quot
                        return -EPERM;
        }
  
-@@ -292,6 +293,46 @@ static int do_quotactl(struct super_bloc
+@@ -291,6 +292,46 @@ static int do_quotactl(struct super_bloc
        }
  }
  
@@ -6781,7 +6925,7 @@ diff -NurpP --minimal linux-3.3.1/fs/quota/quota.c linux-3.3.1-vs2.3.3.2/fs/quot
  /* Return 1 if 'cmd' will block on frozen filesystem */
  static int quotactl_cmd_write(int cmd)
  {
-@@ -324,6 +365,22 @@ static struct super_block *quotactl_bloc
+@@ -323,6 +364,22 @@ static struct super_block *quotactl_bloc
        putname(tmp);
        if (IS_ERR(bdev))
                return ERR_CAST(bdev);
@@ -6804,9 +6948,9 @@ diff -NurpP --minimal linux-3.3.1/fs/quota/quota.c linux-3.3.1-vs2.3.3.2/fs/quot
        if (quotactl_cmd_write(cmd))
                sb = get_super_thawed(bdev);
        else
-diff -NurpP --minimal linux-3.3.1/fs/reiserfs/file.c linux-3.3.1-vs2.3.3.2/fs/reiserfs/file.c
---- linux-3.3.1/fs/reiserfs/file.c     2011-10-24 18:45:27.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/reiserfs/file.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/reiserfs/file.c linux-3.4-vs2.3.3.4/fs/reiserfs/file.c
+--- linux-3.4/fs/reiserfs/file.c       2012-05-21 18:07:26.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/file.c     2012-05-21 18:15:05.000000000 +0200
 @@ -319,5 +319,6 @@ const struct inode_operations reiserfs_f
        .listxattr = reiserfs_listxattr,
        .removexattr = reiserfs_removexattr,
@@ -6814,9 +6958,9 @@ diff -NurpP --minimal linux-3.3.1/fs/reiserfs/file.c linux-3.3.1-vs2.3.3.2/fs/re
 +      .sync_flags = reiserfs_sync_flags,
        .get_acl = reiserfs_get_acl,
  };
-diff -NurpP --minimal linux-3.3.1/fs/reiserfs/inode.c linux-3.3.1-vs2.3.3.2/fs/reiserfs/inode.c
---- linux-3.3.1/fs/reiserfs/inode.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/reiserfs/inode.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/reiserfs/inode.c linux-3.4-vs2.3.3.4/fs/reiserfs/inode.c
+--- linux-3.4/fs/reiserfs/inode.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/inode.c    2012-05-21 18:15:05.000000000 +0200
 @@ -18,6 +18,7 @@
  #include <linux/writeback.h>
  #include <linux/quotaops.h>
@@ -6982,9 +7126,9 @@ diff -NurpP --minimal linux-3.3.1/fs/reiserfs/inode.c linux-3.3.1-vs2.3.3.2/fs/r
                mark_inode_dirty(inode);
                error = journal_end(&th, inode->i_sb, jbegin_count);
                if (error)
-diff -NurpP --minimal linux-3.3.1/fs/reiserfs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/reiserfs/ioctl.c
---- linux-3.3.1/fs/reiserfs/ioctl.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/reiserfs/ioctl.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/reiserfs/ioctl.c linux-3.4-vs2.3.3.4/fs/reiserfs/ioctl.c
+--- linux-3.4/fs/reiserfs/ioctl.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/ioctl.c    2012-05-21 18:15:05.000000000 +0200
 @@ -11,6 +11,21 @@
  #include <linux/pagemap.h>
  #include <linux/compat.h>
@@ -7046,12 +7190,12 @@ diff -NurpP --minimal linux-3.3.1/fs/reiserfs/ioctl.c linux-3.3.1-vs2.3.3.2/fs/r
                        sd_attrs_to_i_attrs(flags, inode);
                        REISERFS_I(inode)->i_attrs = flags;
                        inode->i_ctime = CURRENT_TIME_SEC;
-diff -NurpP --minimal linux-3.3.1/fs/reiserfs/namei.c linux-3.3.1-vs2.3.3.2/fs/reiserfs/namei.c
---- linux-3.3.1/fs/reiserfs/namei.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/reiserfs/namei.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/reiserfs/namei.c linux-3.4-vs2.3.3.4/fs/reiserfs/namei.c
+--- linux-3.4/fs/reiserfs/namei.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/namei.c    2012-05-21 18:15:05.000000000 +0200
 @@ -18,6 +18,7 @@
- #include <linux/reiserfs_acl.h>
- #include <linux/reiserfs_xattr.h>
+ #include "acl.h"
+ #include "xattr.h"
  #include <linux/quotaops.h>
 +#include <linux/vs_tag.h>
  
@@ -7065,9 +7209,50 @@ diff -NurpP --minimal linux-3.3.1/fs/reiserfs/namei.c linux-3.3.1-vs2.3.3.2/fs/r
  
        return d_splice_alias(inode, dentry);
  }
-diff -NurpP --minimal linux-3.3.1/fs/reiserfs/super.c linux-3.3.1-vs2.3.3.2/fs/reiserfs/super.c
---- linux-3.3.1/fs/reiserfs/super.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/reiserfs/super.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/reiserfs/reiserfs.h linux-3.4-vs2.3.3.4/fs/reiserfs/reiserfs.h
+--- linux-3.4/fs/reiserfs/reiserfs.h   2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/reiserfs.h 2012-05-21 19:19:33.000000000 +0200
+@@ -544,6 +544,7 @@ enum reiserfs_mount_options {
+       REISERFS_EXPOSE_PRIVROOT,
+       REISERFS_BARRIER_NONE,
+       REISERFS_BARRIER_FLUSH,
++      REISERFS_TAGGED,
+       /* Actions on error */
+       REISERFS_ERROR_PANIC,
+@@ -1543,6 +1544,11 @@ struct stat_data_v1 {
+ #define REISERFS_COMPR_FL     FS_COMPR_FL
+ #define REISERFS_NOTAIL_FL    FS_NOTAIL_FL
++/* unfortunately reiserfs sdattr is only 16 bit */
++#define REISERFS_IXUNLINK_FL  (FS_IXUNLINK_FL >> 16)
++#define REISERFS_BARRIER_FL   (FS_BARRIER_FL >> 16)
++#define REISERFS_COW_FL       (FS_COW_FL >> 16)
++
+ /* persistent flags that file inherits from the parent directory */
+ #define REISERFS_INHERIT_MASK ( REISERFS_IMMUTABLE_FL |       \
+                               REISERFS_SYNC_FL |      \
+@@ -1552,6 +1558,9 @@ struct stat_data_v1 {
+                               REISERFS_COMPR_FL |     \
+                               REISERFS_NOTAIL_FL )
++#define REISERFS_FL_USER_VISIBLE      0x80FF
++#define REISERFS_FL_USER_MODIFIABLE   0x80FF
++
+ /* Stat Data on disk (reiserfs version of UFS disk inode minus the
+    address blocks) */
+ struct stat_data {
+@@ -2641,6 +2650,7 @@ static inline void reiserfs_update_sd(st
+ void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode);
+ void i_attrs_to_sd_attrs(struct inode *inode, __u16 * sd_attrs);
+ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr);
++int reiserfs_sync_flags(struct inode *inode, int, int);
+ int __reiserfs_write_begin(struct page *page, unsigned from, unsigned len);
+diff -NurpP --minimal linux-3.4/fs/reiserfs/super.c linux-3.4-vs2.3.3.4/fs/reiserfs/super.c
+--- linux-3.4/fs/reiserfs/super.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/super.c    2012-05-21 18:15:05.000000000 +0200
 @@ -980,6 +980,14 @@ static int reiserfs_parse_options(struct
                {"user_xattr",.setmask = 1 << REISERFS_UNSUPPORTED_OPT},
                {"nouser_xattr",.clrmask = 1 << REISERFS_UNSUPPORTED_OPT},
@@ -7109,9 +7294,9 @@ diff -NurpP --minimal linux-3.3.1/fs/reiserfs/super.c linux-3.3.1-vs2.3.3.2/fs/r
        rs = SB_DISK_SUPER_BLOCK(s);
        /* Let's do basic sanity check to verify that underlying device is not
           smaller than the filesystem. If the check fails then abort and scream,
-diff -NurpP --minimal linux-3.3.1/fs/reiserfs/xattr.c linux-3.3.1-vs2.3.3.2/fs/reiserfs/xattr.c
---- linux-3.3.1/fs/reiserfs/xattr.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/reiserfs/xattr.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/reiserfs/xattr.c linux-3.4-vs2.3.3.4/fs/reiserfs/xattr.c
+--- linux-3.4/fs/reiserfs/xattr.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/reiserfs/xattr.c    2012-05-21 18:15:05.000000000 +0200
 @@ -40,6 +40,7 @@
  #include <linux/errno.h>
  #include <linux/gfp.h>
@@ -7120,9 +7305,9 @@ diff -NurpP --minimal linux-3.3.1/fs/reiserfs/xattr.c linux-3.3.1-vs2.3.3.2/fs/r
  #include <linux/file.h>
  #include <linux/pagemap.h>
  #include <linux/xattr.h>
-diff -NurpP --minimal linux-3.3.1/fs/stat.c linux-3.3.1-vs2.3.3.2/fs/stat.c
---- linux-3.3.1/fs/stat.c      2012-01-09 16:14:55.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/stat.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/stat.c linux-3.4-vs2.3.3.4/fs/stat.c
+--- linux-3.4/fs/stat.c        2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/stat.c      2012-05-21 18:15:05.000000000 +0200
 @@ -26,6 +26,7 @@ void generic_fillattr(struct inode *inod
        stat->nlink = inode->i_nlink;
        stat->uid = inode->i_uid;
@@ -7131,9 +7316,9 @@ diff -NurpP --minimal linux-3.3.1/fs/stat.c linux-3.3.1-vs2.3.3.2/fs/stat.c
        stat->rdev = inode->i_rdev;
        stat->size = i_size_read(inode);
        stat->atime = inode->i_atime;
-diff -NurpP --minimal linux-3.3.1/fs/statfs.c linux-3.3.1-vs2.3.3.2/fs/statfs.c
---- linux-3.3.1/fs/statfs.c    2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/statfs.c  2012-02-24 04:27:47.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/statfs.c linux-3.4-vs2.3.3.4/fs/statfs.c
+--- linux-3.4/fs/statfs.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/statfs.c    2012-05-21 18:15:05.000000000 +0200
 @@ -7,6 +7,8 @@
  #include <linux/statfs.h>
  #include <linux/security.h>
@@ -7152,20 +7337,19 @@ diff -NurpP --minimal linux-3.3.1/fs/statfs.c linux-3.3.1-vs2.3.3.2/fs/statfs.c
        return retval;
  }
  
-diff -NurpP --minimal linux-3.3.1/fs/super.c linux-3.3.1-vs2.3.3.2/fs/super.c
---- linux-3.3.1/fs/super.c     2012-03-19 19:47:26.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/super.c   2012-03-19 20:52:10.000000000 +0100
-@@ -32,6 +32,9 @@
- #include <linux/backing-dev.h>
+diff -NurpP --minimal linux-3.4/fs/super.c linux-3.4-vs2.3.3.4/fs/super.c
+--- linux-3.4/fs/super.c       2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/super.c     2012-05-21 18:59:38.000000000 +0200
+@@ -33,6 +33,8 @@
  #include <linux/rculist_bl.h>
  #include <linux/cleancache.h>
-+#include <linux/devpts_fs.h>
-+#include <linux/proc_fs.h>
+ #include <linux/fsnotify.h>
++#include <linux/magic.h>
 +#include <linux/vs_context.h>
  #include "internal.h"
  
  
-@@ -1137,6 +1140,13 @@ mount_fs(struct file_system_type *type, 
+@@ -1138,6 +1140,13 @@ mount_fs(struct file_system_type *type, 
        WARN_ON(sb->s_bdi == &default_backing_dev_info);
        sb->s_flags |= MS_BORN;
  
@@ -7179,9 +7363,9 @@ diff -NurpP --minimal linux-3.3.1/fs/super.c linux-3.3.1-vs2.3.3.2/fs/super.c
        error = security_sb_kern_mount(sb, flags, secdata);
        if (error)
                goto out_sb;
-diff -NurpP --minimal linux-3.3.1/fs/sysfs/mount.c linux-3.3.1-vs2.3.3.2/fs/sysfs/mount.c
---- linux-3.3.1/fs/sysfs/mount.c       2011-07-22 11:18:06.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/sysfs/mount.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/sysfs/mount.c linux-3.4-vs2.3.3.4/fs/sysfs/mount.c
+--- linux-3.4/fs/sysfs/mount.c 2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/sysfs/mount.c       2012-05-21 18:15:05.000000000 +0200
 @@ -47,7 +47,7 @@ static int sysfs_fill_super(struct super
  
        sb->s_blocksize = PAGE_CACHE_SIZE;
@@ -7191,9 +7375,9 @@ diff -NurpP --minimal linux-3.3.1/fs/sysfs/mount.c linux-3.3.1-vs2.3.3.2/fs/sysf
        sb->s_op = &sysfs_ops;
        sb->s_time_gran = 1;
  
-diff -NurpP --minimal linux-3.3.1/fs/utimes.c linux-3.3.1-vs2.3.3.2/fs/utimes.c
---- linux-3.3.1/fs/utimes.c    2011-05-22 16:17:54.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/utimes.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/utimes.c linux-3.4-vs2.3.3.4/fs/utimes.c
+--- linux-3.4/fs/utimes.c      2011-05-22 16:17:54.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/utimes.c    2012-05-21 18:15:05.000000000 +0200
 @@ -8,6 +8,8 @@
  #include <linux/stat.h>
  #include <linux/utime.h>
@@ -7223,18 +7407,18 @@ diff -NurpP --minimal linux-3.3.1/fs/utimes.c linux-3.3.1-vs2.3.3.2/fs/utimes.c
        if (times && times[0].tv_nsec == UTIME_NOW &&
                     times[1].tv_nsec == UTIME_NOW)
                times = NULL;
-diff -NurpP --minimal linux-3.3.1/fs/xattr.c linux-3.3.1-vs2.3.3.2/fs/xattr.c
---- linux-3.3.1/fs/xattr.c     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xattr.c   2012-02-24 03:55:06.000000000 +0100
-@@ -19,6 +19,7 @@
- #include <linux/module.h>
+diff -NurpP --minimal linux-3.4/fs/xattr.c linux-3.4-vs2.3.3.4/fs/xattr.c
+--- linux-3.4/fs/xattr.c       2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xattr.c     2012-05-21 18:15:05.000000000 +0200
+@@ -20,6 +20,7 @@
  #include <linux/fsnotify.h>
  #include <linux/audit.h>
+ #include <linux/vmalloc.h>
 +#include <linux/mount.h>
- #include <asm/uaccess.h>
  
+ #include <asm/uaccess.h>
  
-@@ -50,7 +51,7 @@ xattr_permission(struct inode *inode, co
+@@ -51,7 +52,7 @@ xattr_permission(struct inode *inode, co
         * The trusted.* namespace can only be accessed by privileged users.
         */
        if (!strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN)) {
@@ -7243,9 +7427,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xattr.c linux-3.3.1-vs2.3.3.2/fs/xattr.c
                        return (mask & MAY_WRITE) ? -EPERM : -ENODATA;
                return 0;
        }
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_dinode.h linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_dinode.h
---- linux-3.3.1/fs/xfs/xfs_dinode.h    2011-10-24 18:45:31.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_dinode.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_dinode.h linux-3.4-vs2.3.3.4/fs/xfs/xfs_dinode.h
+--- linux-3.4/fs/xfs/xfs_dinode.h      2011-10-24 18:45:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_dinode.h    2012-05-21 18:15:05.000000000 +0200
 @@ -51,7 +51,9 @@ typedef struct xfs_dinode {
        __be32          di_nlink;       /* number of links to file */
        __be16          di_projid_lo;   /* lower part of owner's project id */
@@ -7286,9 +7470,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_dinode.h linux-3.3.1-vs2.3.3.2/fs/x
 +#define XFS_DIVFLAG_COW               0x02
  
  #endif        /* __XFS_DINODE_H__ */
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_fs.h linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_fs.h
---- linux-3.3.1/fs/xfs/xfs_fs.h        2011-10-24 18:45:31.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_fs.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_fs.h linux-3.4-vs2.3.3.4/fs/xfs/xfs_fs.h
+--- linux-3.4/fs/xfs/xfs_fs.h  2011-10-24 18:45:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_fs.h        2012-05-21 18:15:05.000000000 +0200
 @@ -67,6 +67,9 @@ struct fsxattr {
  #define XFS_XFLAG_EXTSZINHERIT        0x00001000      /* inherit inode extent size */
  #define XFS_XFLAG_NODEFRAG    0x00002000      /* do not defragment */
@@ -7309,9 +7493,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_fs.h linux-3.3.1-vs2.3.3.2/fs/xfs/x
        __u32           bs_dmevmask;    /* DMIG event mask              */
        __u16           bs_dmstate;     /* DMIG state info              */
        __u16           bs_aextents;    /* attribute number of extents  */
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ialloc.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_ialloc.c
---- linux-3.3.1/fs/xfs/xfs_ialloc.c    2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_ialloc.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_ialloc.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_ialloc.c
+--- linux-3.4/fs/xfs/xfs_ialloc.c      2012-03-19 19:47:27.000000000 +0100
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_ialloc.c    2012-05-21 18:15:05.000000000 +0200
 @@ -37,7 +37,6 @@
  #include "xfs_error.h"
  #include "xfs_bmap.h"
@@ -7320,9 +7504,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ialloc.c linux-3.3.1-vs2.3.3.2/fs/x
  /*
   * Allocation group level functions.
   */
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_inode.c
---- linux-3.3.1/fs/xfs/xfs_inode.c     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_inode.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_inode.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_inode.c
+--- linux-3.4/fs/xfs/xfs_inode.c       2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_inode.c     2012-05-21 18:15:05.000000000 +0200
 @@ -236,6 +236,7 @@ xfs_inotobp(
        return 0;
  }
@@ -7479,7 +7663,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.c linux-3.3.1-vs2.3.3.2/fs/xf
        flags = XFS_ILOG_CORE;
        switch (mode & S_IFMT) {
        case S_IFIFO:
-@@ -1726,6 +1753,7 @@ xfs_ifree(
+@@ -1725,6 +1752,7 @@ xfs_ifree(
        }
        ip->i_d.di_mode = 0;            /* mark incore inode as free */
        ip->i_d.di_flags = 0;
@@ -7487,7 +7671,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.c linux-3.3.1-vs2.3.3.2/fs/xf
        ip->i_d.di_dmevmask = 0;
        ip->i_d.di_forkoff = 0;         /* mark the attr fork not in use */
        ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS;
-@@ -2620,7 +2648,8 @@ xfs_iflush_int(
+@@ -2598,7 +2626,8 @@ xfs_iflush_int(
         * because if the inode is dirty at all the core must
         * be.
         */
@@ -7497,9 +7681,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.c linux-3.3.1-vs2.3.3.2/fs/xf
  
        /* Wrap, we never let the log put out DI_MAX_FLUSH */
        if (ip->i_d.di_flushiter == DI_MAX_FLUSH)
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.h linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_inode.h
---- linux-3.3.1/fs/xfs/xfs_inode.h     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_inode.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_inode.h linux-3.4-vs2.3.3.4/fs/xfs/xfs_inode.h
+--- linux-3.4/fs/xfs/xfs_inode.h       2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_inode.h     2012-05-21 18:15:05.000000000 +0200
 @@ -134,7 +134,9 @@ typedef struct xfs_icdinode {
        __uint32_t      di_nlink;       /* number of links to file */
        __uint16_t      di_projid_lo;   /* lower part of owner's project id */
@@ -7511,7 +7695,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.h linux-3.3.1-vs2.3.3.2/fs/xf
        __uint16_t      di_flushiter;   /* incremented on flush */
        xfs_ictimestamp_t di_atime;     /* time last accessed */
        xfs_ictimestamp_t di_mtime;     /* time last modified */
-@@ -556,7 +558,7 @@ int                xfs_itobp(struct xfs_mount *, struc
+@@ -565,7 +567,7 @@ int                xfs_itobp(struct xfs_mount *, struc
  int           xfs_iread(struct xfs_mount *, struct xfs_trans *,
                          struct xfs_inode *, uint);
  void          xfs_dinode_to_disk(struct xfs_dinode *,
@@ -7520,9 +7704,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_inode.h linux-3.3.1-vs2.3.3.2/fs/xf
  void          xfs_idestroy_fork(struct xfs_inode *, int);
  void          xfs_idata_realloc(struct xfs_inode *, int, int);
  void          xfs_iroot_realloc(struct xfs_inode *, int, int);
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_ioctl.c
---- linux-3.3.1/fs/xfs/xfs_ioctl.c     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_ioctl.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_ioctl.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_ioctl.c
+--- linux-3.4/fs/xfs/xfs_ioctl.c       2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_ioctl.c     2012-05-21 18:15:05.000000000 +0200
 @@ -28,7 +28,7 @@
  #include "xfs_bmap_btree.h"
  #include "xfs_dinode.h"
@@ -7532,7 +7716,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xf
  #include "xfs_rtalloc.h"
  #include "xfs_itable.h"
  #include "xfs_error.h"
-@@ -748,6 +748,10 @@ xfs_merge_ioc_xflags(
+@@ -750,6 +750,10 @@ xfs_merge_ioc_xflags(
                xflags |= XFS_XFLAG_IMMUTABLE;
        else
                xflags &= ~XFS_XFLAG_IMMUTABLE;
@@ -7543,7 +7727,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xf
        if (flags & FS_APPEND_FL)
                xflags |= XFS_XFLAG_APPEND;
        else
-@@ -776,6 +780,8 @@ xfs_di2lxflags(
+@@ -778,6 +782,8 @@ xfs_di2lxflags(
  
        if (di_flags & XFS_DIFLAG_IMMUTABLE)
                flags |= FS_IMMUTABLE_FL;
@@ -7552,7 +7736,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xf
        if (di_flags & XFS_DIFLAG_APPEND)
                flags |= FS_APPEND_FL;
        if (di_flags & XFS_DIFLAG_SYNC)
-@@ -836,6 +842,8 @@ xfs_set_diflags(
+@@ -838,6 +844,8 @@ xfs_set_diflags(
        di_flags = (ip->i_d.di_flags & XFS_DIFLAG_PREALLOC);
        if (xflags & XFS_XFLAG_IMMUTABLE)
                di_flags |= XFS_DIFLAG_IMMUTABLE;
@@ -7561,7 +7745,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xf
        if (xflags & XFS_XFLAG_APPEND)
                di_flags |= XFS_DIFLAG_APPEND;
        if (xflags & XFS_XFLAG_SYNC)
-@@ -878,6 +886,10 @@ xfs_diflags_to_linux(
+@@ -880,6 +888,10 @@ xfs_diflags_to_linux(
                inode->i_flags |= S_IMMUTABLE;
        else
                inode->i_flags &= ~S_IMMUTABLE;
@@ -7572,7 +7756,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xf
        if (xflags & XFS_XFLAG_APPEND)
                inode->i_flags |= S_APPEND;
        else
-@@ -1370,10 +1382,18 @@ xfs_file_ioctl(
+@@ -1372,10 +1384,18 @@ xfs_file_ioctl(
        case XFS_IOC_FSGETXATTRA:
                return xfs_ioc_fsgetxattr(ip, 1, arg);
        case XFS_IOC_FSSETXATTR:
@@ -7591,9 +7775,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.c linux-3.3.1-vs2.3.3.2/fs/xf
                return xfs_ioc_setxflags(ip, filp, arg);
  
        case XFS_IOC_FSSETDM: {
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.h linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_ioctl.h
---- linux-3.3.1/fs/xfs/xfs_ioctl.h     2011-10-24 18:45:31.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_ioctl.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_ioctl.h linux-3.4-vs2.3.3.4/fs/xfs/xfs_ioctl.h
+--- linux-3.4/fs/xfs/xfs_ioctl.h       2011-10-24 18:45:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_ioctl.h     2012-05-21 18:15:05.000000000 +0200
 @@ -70,6 +70,12 @@ xfs_handle_to_dentry(
        void __user             *uhandle,
        u32                     hlen);
@@ -7607,9 +7791,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_ioctl.h linux-3.3.1-vs2.3.3.2/fs/xf
  extern long
  xfs_file_ioctl(
        struct file             *filp,
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_iops.c
---- linux-3.3.1/fs/xfs/xfs_iops.c      2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_iops.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_iops.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_iops.c
+--- linux-3.4/fs/xfs/xfs_iops.c        2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_iops.c      2012-05-21 18:15:05.000000000 +0200
 @@ -30,6 +30,7 @@
  #include "xfs_bmap_btree.h"
  #include "xfs_dinode.h"
@@ -7624,9 +7808,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
  #include <linux/slab.h>
 +#include <linux/vs_tag.h>
  
- /*
-  * Bring the timestamps in the XFS inode uptodate.
-@@ -474,6 +476,7 @@ xfs_vn_getattr(
+ static int
+ xfs_initxattrs(
+@@ -424,6 +426,7 @@ xfs_vn_getattr(
        stat->nlink = ip->i_d.di_nlink;
        stat->uid = ip->i_d.di_uid;
        stat->gid = ip->i_d.di_gid;
@@ -7634,7 +7818,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
        stat->ino = ip->i_ino;
        stat->atime = inode->i_atime;
        stat->mtime = inode->i_mtime;
-@@ -1051,6 +1054,7 @@ static const struct inode_operations xfs
+@@ -996,6 +999,7 @@ static const struct inode_operations xfs
        .removexattr            = generic_removexattr,
        .listxattr              = xfs_vn_listxattr,
        .fiemap                 = xfs_vn_fiemap,
@@ -7642,7 +7826,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
  };
  
  static const struct inode_operations xfs_dir_inode_operations = {
-@@ -1076,6 +1080,7 @@ static const struct inode_operations xfs
+@@ -1021,6 +1025,7 @@ static const struct inode_operations xfs
        .getxattr               = generic_getxattr,
        .removexattr            = generic_removexattr,
        .listxattr              = xfs_vn_listxattr,
@@ -7650,7 +7834,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
  };
  
  static const struct inode_operations xfs_dir_ci_inode_operations = {
-@@ -1125,6 +1130,10 @@ xfs_diflags_to_iflags(
+@@ -1070,6 +1075,10 @@ xfs_diflags_to_iflags(
                inode->i_flags |= S_IMMUTABLE;
        else
                inode->i_flags &= ~S_IMMUTABLE;
@@ -7661,7 +7845,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
        if (ip->i_d.di_flags & XFS_DIFLAG_APPEND)
                inode->i_flags |= S_APPEND;
        else
-@@ -1137,6 +1146,15 @@ xfs_diflags_to_iflags(
+@@ -1082,6 +1091,15 @@ xfs_diflags_to_iflags(
                inode->i_flags |= S_NOATIME;
        else
                inode->i_flags &= ~S_NOATIME;
@@ -7677,7 +7861,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
  }
  
  /*
-@@ -1168,6 +1186,7 @@ xfs_setup_inode(
+@@ -1113,6 +1131,7 @@ xfs_setup_inode(
        set_nlink(inode, ip->i_d.di_nlink);
        inode->i_uid    = ip->i_d.di_uid;
        inode->i_gid    = ip->i_d.di_gid;
@@ -7685,20 +7869,20 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_iops.c linux-3.3.1-vs2.3.3.2/fs/xfs
  
        switch (inode->i_mode & S_IFMT) {
        case S_IFBLK:
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_itable.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_itable.c
---- linux-3.3.1/fs/xfs/xfs_itable.c    2011-05-22 16:17:54.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_itable.c  2012-02-24 03:55:06.000000000 +0100
-@@ -98,6 +98,7 @@ xfs_bulkstat_one_int(
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_itable.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_itable.c
+--- linux-3.4/fs/xfs/xfs_itable.c      2012-05-21 18:07:27.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_itable.c    2012-05-21 18:15:05.000000000 +0200
+@@ -97,6 +97,7 @@ xfs_bulkstat_one_int(
        buf->bs_mode = dic->di_mode;
        buf->bs_uid = dic->di_uid;
        buf->bs_gid = dic->di_gid;
 +      buf->bs_tag = dic->di_tag;
        buf->bs_size = dic->di_size;
-       /*
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_linux.h linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_linux.h
---- linux-3.3.1/fs/xfs/xfs_linux.h     2011-10-24 18:45:31.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_linux.h   2012-02-24 03:55:06.000000000 +0100
+       buf->bs_atime.tv_sec = dic->di_atime.t_sec;
+       buf->bs_atime.tv_nsec = dic->di_atime.t_nsec;
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_linux.h linux-3.4-vs2.3.3.4/fs/xfs/xfs_linux.h
+--- linux-3.4/fs/xfs/xfs_linux.h       2011-10-24 18:45:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_linux.h     2012-05-21 18:15:05.000000000 +0200
 @@ -121,6 +121,7 @@
  
  #define current_cpu()         (raw_smp_processor_id())
@@ -7707,9 +7891,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_linux.h linux-3.3.1-vs2.3.3.2/fs/xf
  #define current_test_flags(f) (current->flags & (f))
  #define current_set_flags_nested(sp, f)               \
                (*(sp) = current->flags, current->flags |= (f))
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_log_recover.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_log_recover.c
---- linux-3.3.1/fs/xfs/xfs_log_recover.c       2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_log_recover.c     2012-04-03 03:02:12.000000000 +0200
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_log_recover.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_log_recover.c
+--- linux-3.4/fs/xfs/xfs_log_recover.c 2012-05-21 18:07:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_log_recover.c       2012-05-21 18:15:05.000000000 +0200
 @@ -2344,7 +2344,8 @@ xlog_recover_inode_pass2(
        }
  
@@ -7720,10 +7904,10 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_log_recover.c linux-3.3.1-vs2.3.3.2
  
        /* the rest is in on-disk format */
        if (item->ri_buf[1].i_len > sizeof(struct xfs_icdinode)) {
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_mount.h linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_mount.h
---- linux-3.3.1/fs/xfs/xfs_mount.h     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_mount.h   2012-02-24 03:55:06.000000000 +0100
-@@ -248,6 +248,7 @@ typedef struct xfs_mount {
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_mount.h linux-3.4-vs2.3.3.4/fs/xfs/xfs_mount.h
+--- linux-3.4/fs/xfs/xfs_mount.h       2012-05-21 18:07:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_mount.h     2012-05-21 18:15:05.000000000 +0200
+@@ -251,6 +251,7 @@ typedef struct xfs_mount {
                                                   allocator */
  #define XFS_MOUNT_NOATTR2     (1ULL << 25)    /* disable use of attr2 format */
  
@@ -7731,9 +7915,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_mount.h linux-3.3.1-vs2.3.3.2/fs/xf
  
  /*
   * Default minimum read and write sizes.
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_super.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_super.c
---- linux-3.3.1/fs/xfs/xfs_super.c     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_super.c   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_super.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_super.c
+--- linux-3.4/fs/xfs/xfs_super.c       2012-05-21 18:07:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_super.c     2012-05-21 18:15:05.000000000 +0200
 @@ -113,6 +113,9 @@ mempool_t *xfs_ioend_pool;
  #define MNTOPT_NODELAYLOG  "nodelaylog"       /* Delayed logging disabled */
  #define MNTOPT_DISCARD           "discard"    /* Discard unused blocks */
@@ -7759,7 +7943,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_super.c linux-3.3.1-vs2.3.3.2/fs/xf
        {Opt_barrier, "barrier"},
        {Opt_nobarrier, "nobarrier"},
        {Opt_err, NULL}
-@@ -373,6 +380,19 @@ xfs_parseargs(
+@@ -372,6 +379,19 @@ xfs_parseargs(
                } else if (!strcmp(this_char, "irixsgid")) {
                        xfs_warn(mp,
        "irixsgid is now a sysctl(2) variable, option is deprecated.");
@@ -7779,7 +7963,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_super.c linux-3.3.1-vs2.3.3.2/fs/xf
                } else {
                        xfs_warn(mp, "unknown mount option [%s].", this_char);
                        return EINVAL;
-@@ -1114,6 +1134,16 @@ xfs_fs_remount(
+@@ -1127,6 +1147,16 @@ xfs_fs_remount(
                case Opt_nobarrier:
                        mp->m_flags &= ~XFS_MOUNT_BARRIER;
                        break;
@@ -7796,7 +7980,7 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_super.c linux-3.3.1-vs2.3.3.2/fs/xf
                default:
                        /*
                         * Logically we would return an error here to prevent
-@@ -1329,6 +1359,9 @@ xfs_fs_fill_super(
+@@ -1346,6 +1376,9 @@ xfs_fs_fill_super(
        if (error)
                goto out_free_sb;
  
@@ -7806,9 +7990,9 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_super.c linux-3.3.1-vs2.3.3.2/fs/xf
        /*
         * we must configure the block size in the superblock before we run the
         * full mount process as the mount process can lookup and cache inodes.
-diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_vnodeops.c linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_vnodeops.c
---- linux-3.3.1/fs/xfs/xfs_vnodeops.c  2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/fs/xfs/xfs_vnodeops.c        2012-04-01 18:12:15.000000000 +0200
+diff -NurpP --minimal linux-3.4/fs/xfs/xfs_vnodeops.c linux-3.4-vs2.3.3.4/fs/xfs/xfs_vnodeops.c
+--- linux-3.4/fs/xfs/xfs_vnodeops.c    2012-05-21 18:07:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/fs/xfs/xfs_vnodeops.c  2012-05-21 18:15:05.000000000 +0200
 @@ -106,6 +106,77 @@ xfs_readlink_bmap(
        return error;
  }
@@ -7887,10 +8071,10 @@ diff -NurpP --minimal linux-3.3.1/fs/xfs/xfs_vnodeops.c linux-3.3.1-vs2.3.3.2/fs
  int
  xfs_readlink(
        xfs_inode_t     *ip,
-diff -NurpP --minimal linux-3.3.1/include/linux/Kbuild linux-3.3.1-vs2.3.3.2/include/linux/Kbuild
---- linux-3.3.1/include/linux/Kbuild   2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/Kbuild 2012-02-24 03:55:06.000000000 +0100
-@@ -17,6 +17,7 @@ header-y += netfilter_bridge/
+diff -NurpP --minimal linux-3.4/include/linux/Kbuild linux-3.4-vs2.3.3.4/include/linux/Kbuild
+--- linux-3.4/include/linux/Kbuild     2012-05-21 18:07:28.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/Kbuild   2012-05-21 18:15:05.000000000 +0200
+@@ -18,6 +18,7 @@ header-y += netfilter_bridge/
  header-y += netfilter_ipv4/
  header-y += netfilter_ipv6/
  header-y += usb/
@@ -7898,9 +8082,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/Kbuild linux-3.3.1-vs2.3.3.2/inc
  header-y += wimax/
  
  objhdr-y += version.h
-diff -NurpP --minimal linux-3.3.1/include/linux/capability.h linux-3.3.1-vs2.3.3.2/include/linux/capability.h
---- linux-3.3.1/include/linux/capability.h     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/capability.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/capability.h linux-3.4-vs2.3.3.4/include/linux/capability.h
+--- linux-3.4/include/linux/capability.h       2012-03-19 19:47:27.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/capability.h     2012-05-21 18:15:05.000000000 +0200
 @@ -280,6 +280,7 @@ struct cpu_vfs_cap_data {
     arbitrary SCSI commands */
  /* Allow setting encryption key on loopback filesystem */
@@ -7923,9 +8107,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/capability.h linux-3.3.1-vs2.3.3
  
  /*
   * Bit location of each capability (used by user-space library and kernel)
-diff -NurpP --minimal linux-3.3.1/include/linux/cred.h linux-3.3.1-vs2.3.3.2/include/linux/cred.h
---- linux-3.3.1/include/linux/cred.h   2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/cred.h 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/cred.h linux-3.4-vs2.3.3.4/include/linux/cred.h
+--- linux-3.4/include/linux/cred.h     2012-03-19 19:47:27.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/cred.h   2012-05-21 18:15:05.000000000 +0200
 @@ -156,6 +156,7 @@ extern void exit_creds(struct task_struc
  extern int copy_creds(struct task_struct *, unsigned long);
  extern const struct cred *get_task_cred(struct task_struct *);
@@ -7966,115 +8150,19 @@ diff -NurpP --minimal linux-3.3.1/include/linux/cred.h linux-3.3.1-vs2.3.3.2/inc
  /**
   * get_new_cred - Get a reference on a new set of credentials
   * @cred: The new credentials to reference
-diff -NurpP --minimal linux-3.3.1/include/linux/devpts_fs.h linux-3.3.1-vs2.3.3.2/include/linux/devpts_fs.h
---- linux-3.3.1/include/linux/devpts_fs.h      2008-12-25 00:26:37.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/devpts_fs.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/devpts_fs.h linux-3.4-vs2.3.3.4/include/linux/devpts_fs.h
+--- linux-3.4/include/linux/devpts_fs.h        2008-12-25 00:26:37.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/devpts_fs.h      2012-05-21 18:15:05.000000000 +0200
 @@ -45,5 +45,4 @@ static inline void devpts_pty_kill(struc
  
  #endif
  
 -
  #endif /* _LINUX_DEVPTS_FS_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/ext2_fs.h linux-3.3.1-vs2.3.3.2/include/linux/ext2_fs.h
---- linux-3.3.1/include/linux/ext2_fs.h        2012-01-09 16:14:56.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/ext2_fs.h      2012-02-24 03:55:06.000000000 +0100
-@@ -190,8 +190,12 @@ struct ext2_group_desc
- #define EXT2_NOTAIL_FL                        FS_NOTAIL_FL    /* file tail should not be merged */
- #define EXT2_DIRSYNC_FL                       FS_DIRSYNC_FL   /* dirsync behaviour (directories only) */
- #define EXT2_TOPDIR_FL                        FS_TOPDIR_FL    /* Top of directory hierarchies*/
-+#define EXT2_IXUNLINK_FL              FS_IXUNLINK_FL  /* Immutable invert on unlink */
- #define EXT2_RESERVED_FL              FS_RESERVED_FL  /* reserved for ext2 lib */
-+#define EXT2_BARRIER_FL                       FS_BARRIER_FL   /* Barrier for chroot() */
-+#define EXT2_COW_FL                   FS_COW_FL       /* Copy on Write marker */
-+
- #define EXT2_FL_USER_VISIBLE          FS_FL_USER_VISIBLE      /* User visible flags */
- #define EXT2_FL_USER_MODIFIABLE               FS_FL_USER_MODIFIABLE   /* User modifiable flags */
-@@ -275,7 +279,8 @@ struct ext2_inode {
-                       __u16   i_pad1;
-                       __le16  l_i_uid_high;   /* these 2 fields    */
-                       __le16  l_i_gid_high;   /* were reserved2[0] */
--                      __u32   l_i_reserved2;
-+                      __le16  l_i_tag;        /* Context Tag */
-+                      __u16   l_i_reserved2;
-               } linux2;
-               struct {
-                       __u8    h_i_frag;       /* Fragment number */
-@@ -304,6 +309,7 @@ struct ext2_inode {
- #define i_gid_low     i_gid
- #define i_uid_high    osd2.linux2.l_i_uid_high
- #define i_gid_high    osd2.linux2.l_i_gid_high
-+#define i_raw_tag     osd2.linux2.l_i_tag
- #define i_reserved2   osd2.linux2.l_i_reserved2
- #endif
-@@ -348,6 +354,7 @@ struct ext2_inode {
- #define EXT2_MOUNT_USRQUOTA           0x020000  /* user quota */
- #define EXT2_MOUNT_GRPQUOTA           0x040000  /* group quota */
- #define EXT2_MOUNT_RESERVATION                0x080000  /* Preallocation */
-+#define EXT2_MOUNT_TAGGED             (1<<24)   /* Enable Context Tags */
- #define clear_opt(o, opt)             o &= ~EXT2_MOUNT_##opt
-diff -NurpP --minimal linux-3.3.1/include/linux/ext3_fs.h linux-3.3.1-vs2.3.3.2/include/linux/ext3_fs.h
---- linux-3.3.1/include/linux/ext3_fs.h        2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/ext3_fs.h      2012-02-24 03:55:06.000000000 +0100
-@@ -173,10 +173,14 @@ struct ext3_group_desc
- #define EXT3_NOTAIL_FL                        0x00008000 /* file tail should not be merged */
- #define EXT3_DIRSYNC_FL                       0x00010000 /* dirsync behaviour (directories only) */
- #define EXT3_TOPDIR_FL                        0x00020000 /* Top of directory hierarchies*/
-+#define EXT3_IXUNLINK_FL              0x08000000 /* Immutable invert on unlink */
- #define EXT3_RESERVED_FL              0x80000000 /* reserved for ext3 lib */
--#define EXT3_FL_USER_VISIBLE          0x0003DFFF /* User visible flags */
--#define EXT3_FL_USER_MODIFIABLE               0x000380FF /* User modifiable flags */
-+#define EXT3_BARRIER_FL                       0x04000000 /* Barrier for chroot() */
-+#define EXT3_COW_FL                   0x20000000 /* Copy on Write marker */
-+
-+#define EXT3_FL_USER_VISIBLE          0x0103DFFF /* User visible flags */
-+#define EXT3_FL_USER_MODIFIABLE               0x010380FF /* User modifiable flags */
- /* Flags that should be inherited by new inodes from their parent. */
- #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\
-@@ -312,7 +316,8 @@ struct ext3_inode {
-                       __u16   i_pad1;
-                       __le16  l_i_uid_high;   /* these 2 fields    */
-                       __le16  l_i_gid_high;   /* were reserved2[0] */
--                      __u32   l_i_reserved2;
-+                      __le16  l_i_tag;        /* Context Tag */
-+                      __u16   l_i_reserved2;
-               } linux2;
-               struct {
-                       __u8    h_i_frag;       /* Fragment number */
-@@ -343,6 +348,7 @@ struct ext3_inode {
- #define i_gid_low     i_gid
- #define i_uid_high    osd2.linux2.l_i_uid_high
- #define i_gid_high    osd2.linux2.l_i_gid_high
-+#define i_raw_tag     osd2.linux2.l_i_tag
- #define i_reserved2   osd2.linux2.l_i_reserved2
- #elif defined(__GNU__)
-@@ -405,6 +411,7 @@ struct ext3_inode {
- #define EXT3_MOUNT_GRPQUOTA           0x200000 /* "old" group quota */
- #define EXT3_MOUNT_DATA_ERR_ABORT     0x400000 /* Abort on file data write
-                                                 * error in ordered mode */
-+#define EXT3_MOUNT_TAGGED             (1<<24) /* Enable Context Tags */
- /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */
- #ifndef _LINUX_EXT2_FS_H
-@@ -918,6 +925,7 @@ extern void ext3_get_inode_flags(struct 
- extern void ext3_set_aops(struct inode *inode);
- extern int ext3_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
-                      u64 start, u64 len);
-+extern int ext3_sync_flags(struct inode *, int, int);
- /* ioctl.c */
- extern long ext3_ioctl(struct file *, unsigned int, unsigned long);
-diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/include/linux/fs.h
---- linux-3.3.1/include/linux/fs.h     2012-03-19 19:47:27.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/fs.h   2012-03-19 20:52:10.000000000 +0100
-@@ -210,6 +210,9 @@ struct inodes_stat_t {
+diff -NurpP --minimal linux-3.4/include/linux/fs.h linux-3.4-vs2.3.3.4/include/linux/fs.h
+--- linux-3.4/include/linux/fs.h       2012-05-21 18:07:29.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/fs.h     2012-05-21 18:15:05.000000000 +0200
+@@ -214,6 +214,9 @@ struct inodes_stat_t {
  #define MS_KERNMOUNT  (1<<22) /* this is a kern_mount call */
  #define MS_I_VERSION  (1<<23) /* Update inode I_version field */
  #define MS_STRICTATIME        (1<<24) /* Always perform atime updates */
@@ -8084,7 +8172,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  #define MS_NOSEC      (1<<28)
  #define MS_BORN               (1<<29)
  #define MS_ACTIVE     (1<<30)
-@@ -241,6 +244,14 @@ struct inodes_stat_t {
+@@ -245,6 +248,14 @@ struct inodes_stat_t {
  #define S_IMA         1024    /* Inode has an associated IMA struct */
  #define S_AUTOMOUNT   2048    /* Automount/referral quasi-directory */
  #define S_NOSEC               4096    /* no suid or xattr security attributes */
@@ -8099,7 +8187,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  
  /*
   * Note that nosuid etc flags are inode-specific: setting some file-system
-@@ -263,12 +274,15 @@ struct inodes_stat_t {
+@@ -267,12 +278,15 @@ struct inodes_stat_t {
  #define IS_DIRSYNC(inode)     (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
                                        ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
  #define IS_MANDLOCK(inode)    __IS_FLG(inode, MS_MANDLOCK)
@@ -8117,7 +8205,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  #define IS_POSIXACL(inode)    __IS_FLG(inode, MS_POSIXACL)
  
  #define IS_DEADDIR(inode)     ((inode)->i_flags & S_DEAD)
-@@ -279,6 +293,16 @@ struct inodes_stat_t {
+@@ -283,6 +297,16 @@ struct inodes_stat_t {
  #define IS_AUTOMOUNT(inode)   ((inode)->i_flags & S_AUTOMOUNT)
  #define IS_NOSEC(inode)               ((inode)->i_flags & S_NOSEC)
  
@@ -8134,7 +8222,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  /* the read-only stuff doesn't really belong here, but any other place is
     probably as bad and I don't want to create yet another include file. */
  
-@@ -365,11 +389,14 @@ struct inodes_stat_t {
+@@ -369,11 +393,14 @@ struct inodes_stat_t {
  #define FS_EXTENT_FL                  0x00080000 /* Extents */
  #define FS_DIRECTIO_FL                        0x00100000 /* Use direct i/o */
  #define FS_NOCOW_FL                   0x00800000 /* Do not cow file */
@@ -8151,7 +8239,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  
  #define SYNC_FILE_RANGE_WAIT_BEFORE   1
  #define SYNC_FILE_RANGE_WRITE         2
-@@ -451,6 +478,7 @@ typedef void (dio_iodone_t)(struct kiocb
+@@ -456,6 +483,7 @@ typedef void (dio_iodone_t)(struct kiocb
  #define ATTR_KILL_PRIV        (1 << 14)
  #define ATTR_OPEN     (1 << 15) /* Truncating from open(O_TRUNC) */
  #define ATTR_TIMES_SET        (1 << 16)
@@ -8159,7 +8247,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  
  /*
   * This is the Inode Attributes structure, used for notify_change().  It
-@@ -466,6 +494,7 @@ struct iattr {
+@@ -471,6 +499,7 @@ struct iattr {
        umode_t         ia_mode;
        uid_t           ia_uid;
        gid_t           ia_gid;
@@ -8167,7 +8255,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
        loff_t          ia_size;
        struct timespec ia_atime;
        struct timespec ia_mtime;
-@@ -479,6 +508,9 @@ struct iattr {
+@@ -484,6 +513,9 @@ struct iattr {
        struct file     *ia_file;
  };
  
@@ -8177,7 +8265,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  /*
   * Includes for diskquotas.
   */
-@@ -758,7 +790,9 @@ struct inode {
+@@ -763,7 +795,9 @@ struct inode {
        unsigned short          i_opflags;
        uid_t                   i_uid;
        gid_t                   i_gid;
@@ -8188,7 +8276,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  
  #ifdef CONFIG_FS_POSIX_ACL
        struct posix_acl        *i_acl;
-@@ -787,6 +821,7 @@ struct inode {
+@@ -792,6 +826,7 @@ struct inode {
                unsigned int __i_nlink;
        };
        dev_t                   i_rdev;
@@ -8196,7 +8284,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
        struct timespec         i_atime;
        struct timespec         i_mtime;
        struct timespec         i_ctime;
-@@ -924,12 +959,12 @@ static inline void i_size_write(struct i
+@@ -929,12 +964,12 @@ static inline void i_size_write(struct i
  
  static inline unsigned iminor(const struct inode *inode)
  {
@@ -8211,7 +8299,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  }
  
  extern struct block_device *I_BDEV(struct inode *inode);
-@@ -996,6 +1031,7 @@ struct file {
+@@ -1001,6 +1036,7 @@ struct file {
        loff_t                  f_pos;
        struct fown_struct      f_owner;
        const struct cred       *f_cred;
@@ -8219,7 +8307,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
        struct file_ra_state    f_ra;
  
        u64                     f_version;
-@@ -1143,6 +1179,7 @@ struct file_lock {
+@@ -1148,6 +1184,7 @@ struct file_lock {
        struct file *fl_file;
        loff_t fl_start;
        loff_t fl_end;
@@ -8227,7 +8315,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  
        struct fasync_struct *  fl_fasync; /* for lease break notifications */
        /* for lease breaks: */
-@@ -1650,6 +1687,7 @@ struct inode_operations {
+@@ -1661,6 +1698,7 @@ struct inode_operations {
        ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
        ssize_t (*listxattr) (struct dentry *, char *, size_t);
        int (*removexattr) (struct dentry *, const char *);
@@ -8235,7 +8323,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
        void (*truncate_range)(struct inode *, loff_t, loff_t);
        int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
                      u64 len);
-@@ -1669,6 +1707,7 @@ extern ssize_t vfs_readv(struct file *, 
+@@ -1680,6 +1718,7 @@ extern ssize_t vfs_readv(struct file *, 
                unsigned long, loff_t *);
  extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
                unsigned long, loff_t *);
@@ -8243,7 +8331,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  
  struct super_operations {
        struct inode *(*alloc_inode)(struct super_block *sb);
-@@ -2507,6 +2546,7 @@ extern int dcache_dir_open(struct inode 
+@@ -2509,6 +2548,7 @@ extern int dcache_dir_open(struct inode 
  extern int dcache_dir_close(struct inode *, struct file *);
  extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
  extern int dcache_readdir(struct file *, void *, filldir_t);
@@ -8251,10 +8339,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/fs.h linux-3.3.1-vs2.3.3.2/inclu
  extern int simple_setattr(struct dentry *, struct iattr *);
  extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
  extern int simple_statfs(struct dentry *, struct kstatfs *);
-diff -NurpP --minimal linux-3.3.1/include/linux/gfs2_ondisk.h linux-3.3.1-vs2.3.3.2/include/linux/gfs2_ondisk.h
---- linux-3.3.1/include/linux/gfs2_ondisk.h    2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/gfs2_ondisk.h  2012-02-24 03:55:06.000000000 +0100
-@@ -213,6 +213,9 @@ enum {
+diff -NurpP --minimal linux-3.4/include/linux/gfs2_ondisk.h linux-3.4-vs2.3.3.4/include/linux/gfs2_ondisk.h
+--- linux-3.4/include/linux/gfs2_ondisk.h      2012-05-21 18:07:29.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/gfs2_ondisk.h    2012-05-21 18:15:05.000000000 +0200
+@@ -214,6 +214,9 @@ enum {
        gfs2fl_NoAtime          = 7,
        gfs2fl_Sync             = 8,
        gfs2fl_System           = 9,
@@ -8264,7 +8352,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/gfs2_ondisk.h linux-3.3.1-vs2.3.
        gfs2fl_TruncInProg      = 29,
        gfs2fl_InheritDirectio  = 30,
        gfs2fl_InheritJdata     = 31,
-@@ -229,6 +232,9 @@ enum {
+@@ -230,6 +233,9 @@ enum {
  #define GFS2_DIF_NOATIME              0x00000080
  #define GFS2_DIF_SYNC                 0x00000100
  #define GFS2_DIF_SYSTEM                       0x00000200 /* New in gfs2 */
@@ -8274,9 +8362,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/gfs2_ondisk.h linux-3.3.1-vs2.3.
  #define GFS2_DIF_TRUNC_IN_PROG                0x20000000 /* New in gfs2 */
  #define GFS2_DIF_INHERIT_DIRECTIO     0x40000000
  #define GFS2_DIF_INHERIT_JDATA                0x80000000
-diff -NurpP --minimal linux-3.3.1/include/linux/if_tun.h linux-3.3.1-vs2.3.3.2/include/linux/if_tun.h
---- linux-3.3.1/include/linux/if_tun.h 2010-08-02 16:52:54.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/if_tun.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/if_tun.h linux-3.4-vs2.3.3.4/include/linux/if_tun.h
+--- linux-3.4/include/linux/if_tun.h   2010-08-02 16:52:54.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/if_tun.h 2012-05-21 18:15:05.000000000 +0200
 @@ -53,6 +53,7 @@
  #define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
  #define TUNGETVNETHDRSZ _IOR('T', 215, int)
@@ -8285,13 +8373,13 @@ diff -NurpP --minimal linux-3.3.1/include/linux/if_tun.h linux-3.3.1-vs2.3.3.2/i
  
  /* TUNSETIFF ifr flags */
  #define IFF_TUN               0x0001
-diff -NurpP --minimal linux-3.3.1/include/linux/init_task.h linux-3.3.1-vs2.3.3.2/include/linux/init_task.h
---- linux-3.3.1/include/linux/init_task.h      2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/init_task.h    2012-02-24 03:55:06.000000000 +0100
-@@ -192,6 +192,10 @@ extern struct cred init_cred;
-       INIT_FTRACE_GRAPH                                               \
+diff -NurpP --minimal linux-3.4/include/linux/init_task.h linux-3.4-vs2.3.3.4/include/linux/init_task.h
+--- linux-3.4/include/linux/init_task.h        2012-05-21 18:07:29.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/init_task.h      2012-05-21 18:15:05.000000000 +0200
+@@ -200,6 +200,10 @@ extern struct cred init_cred;
        INIT_TRACE_RECURSION                                            \
        INIT_TASK_RCU_PREEMPT(tsk)                                      \
+       INIT_CPUSET_SEQ                                                 \
 +      .xid            = 0,                                            \
 +      .vx_info        = NULL,                                         \
 +      .nid            = 0,                                            \
@@ -8299,9 +8387,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/init_task.h linux-3.3.1-vs2.3.3.
  }
  
  
-diff -NurpP --minimal linux-3.3.1/include/linux/ipc.h linux-3.3.1-vs2.3.3.2/include/linux/ipc.h
---- linux-3.3.1/include/linux/ipc.h    2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/ipc.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/ipc.h linux-3.4-vs2.3.3.4/include/linux/ipc.h
+--- linux-3.4/include/linux/ipc.h      2012-03-19 19:47:28.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/ipc.h    2012-05-21 18:15:05.000000000 +0200
 @@ -91,6 +91,7 @@ struct kern_ipc_perm
        key_t           key;
        uid_t           uid;
@@ -8310,9 +8398,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/ipc.h linux-3.3.1-vs2.3.3.2/incl
        uid_t           cuid;
        gid_t           cgid;
        umode_t         mode; 
-diff -NurpP --minimal linux-3.3.1/include/linux/ipc_namespace.h linux-3.3.1-vs2.3.3.2/include/linux/ipc_namespace.h
---- linux-3.3.1/include/linux/ipc_namespace.h  2011-10-24 18:45:32.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/ipc_namespace.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/ipc_namespace.h linux-3.4-vs2.3.3.4/include/linux/ipc_namespace.h
+--- linux-3.4/include/linux/ipc_namespace.h    2011-10-24 18:45:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/ipc_namespace.h  2012-05-21 18:15:05.000000000 +0200
 @@ -101,7 +101,8 @@ static inline int mq_init_ns(struct ipc_
  
  #if defined(CONFIG_IPC_NS)
@@ -8339,9 +8427,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/ipc_namespace.h linux-3.3.1-vs2.
  }
  
  static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)
-diff -NurpP --minimal linux-3.3.1/include/linux/loop.h linux-3.3.1-vs2.3.3.2/include/linux/loop.h
---- linux-3.3.1/include/linux/loop.h   2012-01-09 16:14:58.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/loop.h 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/loop.h linux-3.4-vs2.3.3.4/include/linux/loop.h
+--- linux-3.4/include/linux/loop.h     2012-01-09 16:14:58.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/loop.h   2012-05-21 18:15:05.000000000 +0200
 @@ -45,6 +45,7 @@ struct loop_device {
        struct loop_func_table *lo_encryption;
        __u32           lo_init[2];
@@ -8350,9 +8438,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/loop.h linux-3.3.1-vs2.3.3.2/inc
        int             (*ioctl)(struct loop_device *, int cmd, 
                                 unsigned long arg); 
  
-diff -NurpP --minimal linux-3.3.1/include/linux/magic.h linux-3.3.1-vs2.3.3.2/include/linux/magic.h
---- linux-3.3.1/include/linux/magic.h  2012-01-09 16:14:58.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/magic.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/magic.h linux-3.4-vs2.3.3.4/include/linux/magic.h
+--- linux-3.4/include/linux/magic.h    2012-05-21 18:07:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/magic.h  2012-05-21 18:15:05.000000000 +0200
 @@ -3,7 +3,7 @@
  
  #define ADFS_SUPER_MAGIC      0xadf5
@@ -8362,17 +8450,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/magic.h linux-3.3.1-vs2.3.3.2/in
  #define AUTOFS_SUPER_MAGIC    0x0187
  #define CODA_SUPER_MAGIC      0x73757245
  #define CRAMFS_MAGIC          0x28cd3d45      /* some random number */
-@@ -41,6 +41,7 @@
- #define NFS_SUPER_MAGIC               0x6969
- #define OPENPROM_SUPER_MAGIC  0x9fa1
- #define PROC_SUPER_MAGIC      0x9fa0
-+#define DEVPTS_SUPER_MAGIC    0x1cd1
- #define QNX4_SUPER_MAGIC      0x002f          /* qnx4 fs detection */
- #define REISERFS_SUPER_MAGIC  0x52654973      /* used by gcc */
-diff -NurpP --minimal linux-3.3.1/include/linux/major.h linux-3.3.1-vs2.3.3.2/include/linux/major.h
---- linux-3.3.1/include/linux/major.h  2009-09-10 15:26:25.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/major.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/major.h linux-3.4-vs2.3.3.4/include/linux/major.h
+--- linux-3.4/include/linux/major.h    2009-09-10 15:26:25.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/major.h  2012-05-21 18:15:05.000000000 +0200
 @@ -15,6 +15,7 @@
  #define HD_MAJOR              IDE0_MAJOR
  #define PTY_SLAVE_MAJOR               3
@@ -8381,10 +8461,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/major.h linux-3.3.1-vs2.3.3.2/in
  #define TTYAUX_MAJOR          5
  #define LP_MAJOR              6
  #define VCS_MAJOR             7
-diff -NurpP --minimal linux-3.3.1/include/linux/memcontrol.h linux-3.3.1-vs2.3.3.2/include/linux/memcontrol.h
---- linux-3.3.1/include/linux/memcontrol.h     2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/memcontrol.h   2012-03-19 20:52:10.000000000 +0100
-@@ -87,6 +87,13 @@ extern struct mem_cgroup *try_get_mem_cg
+diff -NurpP --minimal linux-3.4/include/linux/memcontrol.h linux-3.4-vs2.3.3.4/include/linux/memcontrol.h
+--- linux-3.4/include/linux/memcontrol.h       2012-05-21 18:07:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/memcontrol.h     2012-05-21 18:15:05.000000000 +0200
+@@ -88,6 +88,13 @@ extern struct mem_cgroup *try_get_mem_cg
  extern struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg);
  extern struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont);
  
@@ -8398,9 +8478,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/memcontrol.h linux-3.3.1-vs2.3.3
  static inline
  int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
  {
-diff -NurpP --minimal linux-3.3.1/include/linux/mm_types.h linux-3.3.1-vs2.3.3.2/include/linux/mm_types.h
---- linux-3.3.1/include/linux/mm_types.h       2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/mm_types.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/mm_types.h linux-3.4-vs2.3.3.4/include/linux/mm_types.h
+--- linux-3.4/include/linux/mm_types.h 2012-03-19 19:47:28.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/mm_types.h       2012-05-21 18:15:05.000000000 +0200
 @@ -343,6 +343,7 @@ struct mm_struct {
  
        /* Architecture-specific MM context */
@@ -8409,10 +8489,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/mm_types.h linux-3.3.1-vs2.3.3.2
  
        /* Swap token stuff */
        /*
-diff -NurpP --minimal linux-3.3.1/include/linux/mmzone.h linux-3.3.1-vs2.3.3.2/include/linux/mmzone.h
---- linux-3.3.1/include/linux/mmzone.h 2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/mmzone.h       2012-02-24 03:55:06.000000000 +0100
-@@ -683,6 +683,13 @@ typedef struct pglist_data {
+diff -NurpP --minimal linux-3.4/include/linux/mmzone.h linux-3.4-vs2.3.3.4/include/linux/mmzone.h
+--- linux-3.4/include/linux/mmzone.h   2012-05-21 18:07:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/mmzone.h 2012-05-21 18:15:05.000000000 +0200
+@@ -684,6 +684,13 @@ typedef struct pglist_data {
        __pgdat->node_start_pfn + __pgdat->node_spanned_pages;\
  })
  
@@ -8426,9 +8506,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/mmzone.h linux-3.3.1-vs2.3.3.2/i
  #include <linux/memory_hotplug.h>
  
  extern struct mutex zonelists_mutex;
-diff -NurpP --minimal linux-3.3.1/include/linux/mount.h linux-3.3.1-vs2.3.3.2/include/linux/mount.h
---- linux-3.3.1/include/linux/mount.h  2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/mount.h        2012-02-24 17:29:28.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/mount.h linux-3.4-vs2.3.3.4/include/linux/mount.h
+--- linux-3.4/include/linux/mount.h    2012-03-19 19:47:28.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/mount.h  2012-05-21 18:15:05.000000000 +0200
 @@ -47,6 +47,9 @@ struct mnt_namespace;
  
  #define MNT_INTERNAL  0x4000
@@ -8439,9 +8519,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/mount.h linux-3.3.1-vs2.3.3.2/in
  struct vfsmount {
        struct dentry *mnt_root;        /* root of the mounted tree */
        struct super_block *mnt_sb;     /* pointer to superblock */
-diff -NurpP --minimal linux-3.3.1/include/linux/net.h linux-3.3.1-vs2.3.3.2/include/linux/net.h
---- linux-3.3.1/include/linux/net.h    2011-07-22 11:18:11.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/net.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/net.h linux-3.4-vs2.3.3.4/include/linux/net.h
+--- linux-3.4/include/linux/net.h      2012-05-21 18:07:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/net.h    2012-05-21 18:15:05.000000000 +0200
 @@ -72,6 +72,7 @@ struct net;
  #define SOCK_NOSPACE          2
  #define SOCK_PASSCRED         3
@@ -8450,10 +8530,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/net.h linux-3.3.1-vs2.3.3.2/incl
  
  #ifndef ARCH_HAS_SOCKET_TYPES
  /**
-diff -NurpP --minimal linux-3.3.1/include/linux/netdevice.h linux-3.3.1-vs2.3.3.2/include/linux/netdevice.h
---- linux-3.3.1/include/linux/netdevice.h      2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/netdevice.h    2012-02-24 03:55:06.000000000 +0100
-@@ -1627,6 +1627,7 @@ extern void              netdev_resync_ops(struct ne
+diff -NurpP --minimal linux-3.4/include/linux/netdevice.h linux-3.4-vs2.3.3.4/include/linux/netdevice.h
+--- linux-3.4/include/linux/netdevice.h        2012-05-21 18:07:31.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/netdevice.h      2012-05-21 18:15:05.000000000 +0200
+@@ -1620,6 +1620,7 @@ extern void              netdev_resync_ops(struct ne
  
  extern struct net_device      *dev_get_by_index(struct net *net, int ifindex);
  extern struct net_device      *__dev_get_by_index(struct net *net, int ifindex);
@@ -8461,9 +8541,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/netdevice.h linux-3.3.1-vs2.3.3.
  extern struct net_device      *dev_get_by_index_rcu(struct net *net, int ifindex);
  extern int            dev_restart(struct net_device *dev);
  #ifdef CONFIG_NETPOLL_TRAP
-diff -NurpP --minimal linux-3.3.1/include/linux/nfs_mount.h linux-3.3.1-vs2.3.3.2/include/linux/nfs_mount.h
---- linux-3.3.1/include/linux/nfs_mount.h      2011-01-05 21:50:31.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/nfs_mount.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/nfs_mount.h linux-3.4-vs2.3.3.4/include/linux/nfs_mount.h
+--- linux-3.4/include/linux/nfs_mount.h        2011-01-05 21:50:31.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/nfs_mount.h      2012-05-21 18:15:05.000000000 +0200
 @@ -63,7 +63,8 @@ struct nfs_mount_data {
  #define NFS_MOUNT_SECFLAVOUR  0x2000  /* 5 */
  #define NFS_MOUNT_NORDIRPLUS  0x4000  /* 5 */
@@ -8474,9 +8554,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/nfs_mount.h linux-3.3.1-vs2.3.3.
  
  /* The following are for internal use only */
  #define NFS_MOUNT_LOOKUP_CACHE_NONEG  0x10000
-diff -NurpP --minimal linux-3.3.1/include/linux/nsproxy.h linux-3.3.1-vs2.3.3.2/include/linux/nsproxy.h
---- linux-3.3.1/include/linux/nsproxy.h        2011-10-24 18:45:32.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/nsproxy.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/nsproxy.h linux-3.4-vs2.3.3.4/include/linux/nsproxy.h
+--- linux-3.4/include/linux/nsproxy.h  2011-10-24 18:45:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/nsproxy.h        2012-05-21 18:15:05.000000000 +0200
 @@ -3,6 +3,7 @@
  
  #include <linux/spinlock.h>
@@ -8526,9 +8606,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/nsproxy.h linux-3.3.1-vs2.3.3.2/
  }
  
  #endif
-diff -NurpP --minimal linux-3.3.1/include/linux/pid.h linux-3.3.1-vs2.3.3.2/include/linux/pid.h
---- linux-3.3.1/include/linux/pid.h    2011-07-22 11:18:11.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/pid.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/pid.h linux-3.4-vs2.3.3.4/include/linux/pid.h
+--- linux-3.4/include/linux/pid.h      2011-07-22 11:18:11.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/pid.h    2012-05-21 18:15:05.000000000 +0200
 @@ -8,7 +8,8 @@ enum pid_type
        PIDTYPE_PID,
        PIDTYPE_PGID,
@@ -8547,9 +8627,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/pid.h linux-3.3.1-vs2.3.3.2/incl
  pid_t pid_vnr(struct pid *pid);
  
  #define do_each_pid_task(pid, type, task)                             \
-diff -NurpP --minimal linux-3.3.1/include/linux/proc_fs.h linux-3.3.1-vs2.3.3.2/include/linux/proc_fs.h
---- linux-3.3.1/include/linux/proc_fs.h        2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/proc_fs.h      2012-02-24 04:17:21.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/proc_fs.h linux-3.4-vs2.3.3.4/include/linux/proc_fs.h
+--- linux-3.4/include/linux/proc_fs.h  2012-03-19 19:47:28.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/proc_fs.h        2012-05-21 18:15:05.000000000 +0200
 @@ -54,6 +54,7 @@ struct proc_dir_entry {
        nlink_t nlink;
        uid_t uid;
@@ -8585,9 +8665,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/proc_fs.h linux-3.3.1-vs2.3.3.2/
        int fd;
        union proc_op op;
        struct proc_dir_entry *pde;
-diff -NurpP --minimal linux-3.3.1/include/linux/quotaops.h linux-3.3.1-vs2.3.3.2/include/linux/quotaops.h
---- linux-3.3.1/include/linux/quotaops.h       2012-01-09 16:14:58.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/quotaops.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/quotaops.h linux-3.4-vs2.3.3.4/include/linux/quotaops.h
+--- linux-3.4/include/linux/quotaops.h 2012-01-09 16:14:58.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/quotaops.h       2012-05-21 18:15:05.000000000 +0200
 @@ -8,6 +8,7 @@
  #define _LINUX_QUOTAOPS_
  
@@ -8629,9 +8709,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/quotaops.h linux-3.3.1-vs2.3.3.2
  }
  
  static inline int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
-diff -NurpP --minimal linux-3.3.1/include/linux/reboot.h linux-3.3.1-vs2.3.3.2/include/linux/reboot.h
---- linux-3.3.1/include/linux/reboot.h 2011-10-24 18:45:32.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/reboot.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/reboot.h linux-3.4-vs2.3.3.4/include/linux/reboot.h
+--- linux-3.4/include/linux/reboot.h   2011-10-24 18:45:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/reboot.h 2012-05-21 18:15:05.000000000 +0200
 @@ -33,6 +33,7 @@
  #define       LINUX_REBOOT_CMD_RESTART2       0xA1B2C3D4
  #define       LINUX_REBOOT_CMD_SW_SUSPEND     0xD000FCE2
@@ -8640,54 +8720,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/reboot.h linux-3.3.1-vs2.3.3.2/i
  
  
  #ifdef __KERNEL__
-diff -NurpP --minimal linux-3.3.1/include/linux/reiserfs_fs.h linux-3.3.1-vs2.3.3.2/include/linux/reiserfs_fs.h
---- linux-3.3.1/include/linux/reiserfs_fs.h    2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/reiserfs_fs.h  2012-02-24 03:55:06.000000000 +0100
-@@ -976,6 +976,11 @@ struct stat_data_v1 {
- #define REISERFS_COMPR_FL     FS_COMPR_FL
- #define REISERFS_NOTAIL_FL    FS_NOTAIL_FL
-+/* unfortunately reiserfs sdattr is only 16 bit */
-+#define REISERFS_IXUNLINK_FL  (FS_IXUNLINK_FL >> 16)
-+#define REISERFS_BARRIER_FL   (FS_BARRIER_FL >> 16)
-+#define REISERFS_COW_FL       (FS_COW_FL >> 16)
-+
- /* persistent flags that file inherits from the parent directory */
- #define REISERFS_INHERIT_MASK ( REISERFS_IMMUTABLE_FL |       \
-                               REISERFS_SYNC_FL |      \
-@@ -985,6 +990,9 @@ struct stat_data_v1 {
-                               REISERFS_COMPR_FL |     \
-                               REISERFS_NOTAIL_FL )
-+#define REISERFS_FL_USER_VISIBLE      0x80FF
-+#define REISERFS_FL_USER_MODIFIABLE   0x80FF
-+
- /* Stat Data on disk (reiserfs version of UFS disk inode minus the
-    address blocks) */
- struct stat_data {
-@@ -2074,6 +2082,7 @@ static inline void reiserfs_update_sd(st
- void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode);
- void i_attrs_to_sd_attrs(struct inode *inode, __u16 * sd_attrs);
- int reiserfs_setattr(struct dentry *dentry, struct iattr *attr);
-+int reiserfs_sync_flags(struct inode *inode, int, int);
- int __reiserfs_write_begin(struct page *page, unsigned from, unsigned len);
-diff -NurpP --minimal linux-3.3.1/include/linux/reiserfs_fs_sb.h linux-3.3.1-vs2.3.3.2/include/linux/reiserfs_fs_sb.h
---- linux-3.3.1/include/linux/reiserfs_fs_sb.h 2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/reiserfs_fs_sb.h       2012-02-24 03:55:06.000000000 +0100
-@@ -477,6 +477,7 @@ enum reiserfs_mount_options {
-       REISERFS_EXPOSE_PRIVROOT,
-       REISERFS_BARRIER_NONE,
-       REISERFS_BARRIER_FLUSH,
-+      REISERFS_TAGGED,
-       /* Actions on error */
-       REISERFS_ERROR_PANIC,
-diff -NurpP --minimal linux-3.3.1/include/linux/sched.h linux-3.3.1-vs2.3.3.2/include/linux/sched.h
---- linux-3.3.1/include/linux/sched.h  2012-03-19 19:47:28.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/sched.h        2012-03-19 20:52:10.000000000 +0100
-@@ -1420,6 +1420,14 @@ struct task_struct {
+diff -NurpP --minimal linux-3.4/include/linux/sched.h linux-3.4-vs2.3.3.4/include/linux/sched.h
+--- linux-3.4/include/linux/sched.h    2012-05-21 18:07:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/sched.h  2012-05-21 18:15:05.000000000 +0200
+@@ -1452,6 +1452,14 @@ struct task_struct {
  #endif
        seccomp_t seccomp;
  
@@ -8702,7 +8738,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sched.h linux-3.3.1-vs2.3.3.2/in
  /* Thread group tracking */
        u32 parent_exec_id;
        u32 self_exec_id;
-@@ -1669,6 +1677,11 @@ struct pid_namespace;
+@@ -1696,6 +1704,11 @@ struct pid_namespace;
  pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
                        struct pid_namespace *ns);
  
@@ -8714,7 +8750,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sched.h linux-3.3.1-vs2.3.3.2/in
  static inline pid_t task_pid_nr(struct task_struct *tsk)
  {
        return tsk->pid;
-@@ -1682,7 +1695,8 @@ static inline pid_t task_pid_nr_ns(struc
+@@ -1709,7 +1722,8 @@ static inline pid_t task_pid_nr_ns(struc
  
  static inline pid_t task_pid_vnr(struct task_struct *tsk)
  {
@@ -8724,7 +8760,7 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sched.h linux-3.3.1-vs2.3.3.2/in
  }
  
  
-@@ -1695,7 +1709,7 @@ pid_t task_tgid_nr_ns(struct task_struct
+@@ -1722,7 +1736,7 @@ pid_t task_tgid_nr_ns(struct task_struct
  
  static inline pid_t task_tgid_vnr(struct task_struct *tsk)
  {
@@ -8733,9 +8769,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sched.h linux-3.3.1-vs2.3.3.2/in
  }
  
  
-diff -NurpP --minimal linux-3.3.1/include/linux/shmem_fs.h linux-3.3.1-vs2.3.3.2/include/linux/shmem_fs.h
---- linux-3.3.1/include/linux/shmem_fs.h       2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/shmem_fs.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/shmem_fs.h linux-3.4-vs2.3.3.4/include/linux/shmem_fs.h
+--- linux-3.4/include/linux/shmem_fs.h 2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/shmem_fs.h       2012-05-21 18:15:05.000000000 +0200
 @@ -8,6 +8,9 @@
  
  /* inode in-kernel data */
@@ -8746,9 +8782,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/shmem_fs.h linux-3.3.1-vs2.3.3.2
  struct shmem_inode_info {
        spinlock_t              lock;
        unsigned long           flags;
-diff -NurpP --minimal linux-3.3.1/include/linux/stat.h linux-3.3.1-vs2.3.3.2/include/linux/stat.h
---- linux-3.3.1/include/linux/stat.h   2008-12-25 00:26:37.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/stat.h 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/stat.h linux-3.4-vs2.3.3.4/include/linux/stat.h
+--- linux-3.4/include/linux/stat.h     2008-12-25 00:26:37.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/stat.h   2012-05-21 18:15:05.000000000 +0200
 @@ -66,6 +66,7 @@ struct kstat {
        unsigned int    nlink;
        uid_t           uid;
@@ -8757,9 +8793,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/stat.h linux-3.3.1-vs2.3.3.2/inc
        dev_t           rdev;
        loff_t          size;
        struct timespec  atime;
-diff -NurpP --minimal linux-3.3.1/include/linux/sunrpc/auth.h linux-3.3.1-vs2.3.3.2/include/linux/sunrpc/auth.h
---- linux-3.3.1/include/linux/sunrpc/auth.h    2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/sunrpc/auth.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/sunrpc/auth.h linux-3.4-vs2.3.3.4/include/linux/sunrpc/auth.h
+--- linux-3.4/include/linux/sunrpc/auth.h      2012-05-21 18:07:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/sunrpc/auth.h    2012-05-21 18:15:05.000000000 +0200
 @@ -25,6 +25,7 @@
  struct auth_cred {
        uid_t   uid;
@@ -8768,10 +8804,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sunrpc/auth.h linux-3.3.1-vs2.3.
        struct group_info *group_info;
        const char *principal;
        unsigned char machine_cred : 1;
-diff -NurpP --minimal linux-3.3.1/include/linux/sunrpc/clnt.h linux-3.3.1-vs2.3.3.2/include/linux/sunrpc/clnt.h
---- linux-3.3.1/include/linux/sunrpc/clnt.h    2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/sunrpc/clnt.h  2012-02-24 03:55:06.000000000 +0100
-@@ -50,7 +50,8 @@ struct rpc_clnt {
+diff -NurpP --minimal linux-3.4/include/linux/sunrpc/clnt.h linux-3.4-vs2.3.3.4/include/linux/sunrpc/clnt.h
+--- linux-3.4/include/linux/sunrpc/clnt.h      2012-05-21 18:07:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/sunrpc/clnt.h    2012-05-21 18:15:05.000000000 +0200
+@@ -49,7 +49,8 @@ struct rpc_clnt {
        unsigned int            cl_softrtry : 1,/* soft timeouts */
                                cl_discrtry : 1,/* disconnect before retry */
                                cl_autobind : 1,/* use getport() */
@@ -8781,9 +8817,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sunrpc/clnt.h linux-3.3.1-vs2.3.
  
        struct rpc_rtt *        cl_rtt;         /* RTO estimator data */
        const struct rpc_timeout *cl_timeout;   /* Timeout strategy */
-diff -NurpP --minimal linux-3.3.1/include/linux/sysctl.h linux-3.3.1-vs2.3.3.2/include/linux/sysctl.h
---- linux-3.3.1/include/linux/sysctl.h 2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/sysctl.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/sysctl.h linux-3.4-vs2.3.3.4/include/linux/sysctl.h
+--- linux-3.4/include/linux/sysctl.h   2012-05-21 18:07:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/sysctl.h 2012-05-21 18:15:05.000000000 +0200
 @@ -60,6 +60,7 @@ enum
        CTL_ABI=9,              /* Binary emulation */
        CTL_CPU=10,             /* CPU stuff (speed scaling, etc) */
@@ -8800,9 +8836,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sysctl.h linux-3.3.1-vs2.3.3.2/i
  
        KERN_SPARC_REBOOT=21,   /* reboot command on Sparc */
        KERN_CTLALTDEL=22,      /* int: allow ctl-alt-del to reboot */
-diff -NurpP --minimal linux-3.3.1/include/linux/sysfs.h linux-3.3.1-vs2.3.3.2/include/linux/sysfs.h
---- linux-3.3.1/include/linux/sysfs.h  2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/sysfs.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/sysfs.h linux-3.4-vs2.3.3.4/include/linux/sysfs.h
+--- linux-3.4/include/linux/sysfs.h    2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/sysfs.h  2012-05-21 18:15:05.000000000 +0200
 @@ -19,6 +19,8 @@
  #include <linux/kobject_ns.h>
  #include <linux/atomic.h>
@@ -8812,22 +8848,21 @@ diff -NurpP --minimal linux-3.3.1/include/linux/sysfs.h linux-3.3.1-vs2.3.3.2/in
  struct kobject;
  struct module;
  enum kobj_ns_type;
-diff -NurpP --minimal linux-3.3.1/include/linux/time.h linux-3.3.1-vs2.3.3.2/include/linux/time.h
---- linux-3.3.1/include/linux/time.h   2011-07-22 11:18:11.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/include/linux/time.h 2012-02-24 03:55:06.000000000 +0100
-@@ -256,6 +256,9 @@ static __always_inline void timespec_add
-       a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns);
+diff -NurpP --minimal linux-3.4/include/linux/time.h linux-3.4-vs2.3.3.4/include/linux/time.h
+--- linux-3.4/include/linux/time.h     2012-05-21 18:07:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/time.h   2012-05-21 18:15:05.000000000 +0200
+@@ -256,6 +256,8 @@ static __always_inline void timespec_add
        a->tv_nsec = ns;
  }
-+
 +#include <linux/vs_time.h>
 +
  #endif /* __KERNEL__ */
  
  #define NFDBITS                       __NFDBITS
-diff -NurpP --minimal linux-3.3.1/include/linux/types.h linux-3.3.1-vs2.3.3.2/include/linux/types.h
---- linux-3.3.1/include/linux/types.h  2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/types.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/types.h linux-3.4-vs2.3.3.4/include/linux/types.h
+--- linux-3.4/include/linux/types.h    2012-05-21 18:07:32.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/linux/types.h  2012-05-21 18:15:05.000000000 +0200
 @@ -41,6 +41,9 @@ typedef __kernel_uid32_t     uid_t;
  typedef __kernel_gid32_t      gid_t;
  typedef __kernel_uid16_t        uid16_t;
@@ -8838,9 +8873,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/types.h linux-3.3.1-vs2.3.3.2/in
  
  typedef unsigned long         uintptr_t;
  
-diff -NurpP --minimal linux-3.3.1/include/linux/utsname.h linux-3.3.1-vs2.3.3.2/include/linux/utsname.h
---- linux-3.3.1/include/linux/utsname.h        2012-01-09 16:14:59.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/utsname.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/utsname.h linux-3.4-vs2.3.3.4/include/linux/utsname.h
+--- linux-3.4/include/linux/utsname.h  2012-01-09 16:14:59.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/utsname.h        2012-05-21 18:15:05.000000000 +0200
 @@ -62,7 +62,8 @@ static inline void get_uts_ns(struct uts
  }
  
@@ -8867,9 +8902,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/utsname.h linux-3.3.1-vs2.3.3.2/
  }
  #endif
  
-diff -NurpP --minimal linux-3.3.1/include/linux/vroot.h linux-3.3.1-vs2.3.3.2/include/linux/vroot.h
---- linux-3.3.1/include/linux/vroot.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vroot.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vroot.h linux-3.4-vs2.3.3.4/include/linux/vroot.h
+--- linux-3.4/include/linux/vroot.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vroot.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,51 @@
 +
 +/*
@@ -8922,9 +8957,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vroot.h linux-3.3.1-vs2.3.3.2/in
 +#define VROOT_CLR_DEV         0x5601
 +
 +#endif /* _LINUX_VROOT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_base.h linux-3.3.1-vs2.3.3.2/include/linux/vs_base.h
---- linux-3.3.1/include/linux/vs_base.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_base.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_base.h linux-3.4-vs2.3.3.4/include/linux/vs_base.h
+--- linux-3.4/include/linux/vs_base.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_base.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,10 @@
 +#ifndef _VS_BASE_H
 +#define _VS_BASE_H
@@ -8936,9 +8971,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_base.h linux-3.3.1-vs2.3.3.2/
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_context.h linux-3.3.1-vs2.3.3.2/include/linux/vs_context.h
---- linux-3.3.1/include/linux/vs_context.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_context.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_context.h linux-3.4-vs2.3.3.4/include/linux/vs_context.h
+--- linux-3.4/include/linux/vs_context.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_context.h     2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,242 @@
 +#ifndef _VS_CONTEXT_H
 +#define _VS_CONTEXT_H
@@ -9182,9 +9217,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_context.h linux-3.3.1-vs2.3.3
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_cowbl.h linux-3.3.1-vs2.3.3.2/include/linux/vs_cowbl.h
---- linux-3.3.1/include/linux/vs_cowbl.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_cowbl.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_cowbl.h linux-3.4-vs2.3.3.4/include/linux/vs_cowbl.h
+--- linux-3.4/include/linux/vs_cowbl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_cowbl.h       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,48 @@
 +#ifndef _VS_COWBL_H
 +#define _VS_COWBL_H
@@ -9234,9 +9269,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_cowbl.h linux-3.3.1-vs2.3.3.2
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_cvirt.h linux-3.3.1-vs2.3.3.2/include/linux/vs_cvirt.h
---- linux-3.3.1/include/linux/vs_cvirt.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_cvirt.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_cvirt.h linux-3.4-vs2.3.3.4/include/linux/vs_cvirt.h
+--- linux-3.4/include/linux/vs_cvirt.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_cvirt.h       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,50 @@
 +#ifndef _VS_CVIRT_H
 +#define _VS_CVIRT_H
@@ -9288,9 +9323,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_cvirt.h linux-3.3.1-vs2.3.3.2
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_device.h linux-3.3.1-vs2.3.3.2/include/linux/vs_device.h
---- linux-3.3.1/include/linux/vs_device.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_device.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_device.h linux-3.4-vs2.3.3.4/include/linux/vs_device.h
+--- linux-3.4/include/linux/vs_device.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_device.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,45 @@
 +#ifndef _VS_DEVICE_H
 +#define _VS_DEVICE_H
@@ -9337,9 +9372,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_device.h linux-3.3.1-vs2.3.3.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_dlimit.h linux-3.3.1-vs2.3.3.2/include/linux/vs_dlimit.h
---- linux-3.3.1/include/linux/vs_dlimit.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_dlimit.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_dlimit.h linux-3.4-vs2.3.3.4/include/linux/vs_dlimit.h
+--- linux-3.4/include/linux/vs_dlimit.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_dlimit.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,215 @@
 +#ifndef _VS_DLIMIT_H
 +#define _VS_DLIMIT_H
@@ -9556,9 +9591,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_dlimit.h linux-3.3.1-vs2.3.3.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_inet.h linux-3.3.1-vs2.3.3.2/include/linux/vs_inet.h
---- linux-3.3.1/include/linux/vs_inet.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_inet.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_inet.h linux-3.4-vs2.3.3.4/include/linux/vs_inet.h
+--- linux-3.4/include/linux/vs_inet.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_inet.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,353 @@
 +#ifndef _VS_INET_H
 +#define _VS_INET_H
@@ -9913,9 +9948,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_inet.h linux-3.3.1-vs2.3.3.2/
 +#else
 +// #warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_inet6.h linux-3.3.1-vs2.3.3.2/include/linux/vs_inet6.h
---- linux-3.3.1/include/linux/vs_inet6.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_inet6.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_inet6.h linux-3.4-vs2.3.3.4/include/linux/vs_inet6.h
+--- linux-3.4/include/linux/vs_inet6.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_inet6.h       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,246 @@
 +#ifndef _VS_INET6_H
 +#define _VS_INET6_H
@@ -10163,9 +10198,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_inet6.h linux-3.3.1-vs2.3.3.2
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_limit.h linux-3.3.1-vs2.3.3.2/include/linux/vs_limit.h
---- linux-3.3.1/include/linux/vs_limit.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_limit.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_limit.h linux-3.4-vs2.3.3.4/include/linux/vs_limit.h
+--- linux-3.4/include/linux/vs_limit.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_limit.h       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,140 @@
 +#ifndef _VS_LIMIT_H
 +#define _VS_LIMIT_H
@@ -10307,9 +10342,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_limit.h linux-3.3.1-vs2.3.3.2
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_network.h linux-3.3.1-vs2.3.3.2/include/linux/vs_network.h
---- linux-3.3.1/include/linux/vs_network.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_network.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_network.h linux-3.4-vs2.3.3.4/include/linux/vs_network.h
+--- linux-3.4/include/linux/vs_network.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_network.h     2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,169 @@
 +#ifndef _NX_VS_NETWORK_H
 +#define _NX_VS_NETWORK_H
@@ -10480,9 +10515,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_network.h linux-3.3.1-vs2.3.3
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_pid.h linux-3.3.1-vs2.3.3.2/include/linux/vs_pid.h
---- linux-3.3.1/include/linux/vs_pid.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_pid.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_pid.h linux-3.4-vs2.3.3.4/include/linux/vs_pid.h
+--- linux-3.4/include/linux/vs_pid.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_pid.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,50 @@
 +#ifndef _VS_PID_H
 +#define _VS_PID_H
@@ -10534,9 +10569,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_pid.h linux-3.3.1-vs2.3.3.2/i
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_sched.h linux-3.3.1-vs2.3.3.2/include/linux/vs_sched.h
---- linux-3.3.1/include/linux/vs_sched.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_sched.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_sched.h linux-3.4-vs2.3.3.4/include/linux/vs_sched.h
+--- linux-3.4/include/linux/vs_sched.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_sched.h       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,40 @@
 +#ifndef _VS_SCHED_H
 +#define _VS_SCHED_H
@@ -10578,9 +10613,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_sched.h linux-3.3.1-vs2.3.3.2
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_socket.h linux-3.3.1-vs2.3.3.2/include/linux/vs_socket.h
---- linux-3.3.1/include/linux/vs_socket.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_socket.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_socket.h linux-3.4-vs2.3.3.4/include/linux/vs_socket.h
+--- linux-3.4/include/linux/vs_socket.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_socket.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,67 @@
 +#ifndef _VS_SOCKET_H
 +#define _VS_SOCKET_H
@@ -10649,9 +10684,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_socket.h linux-3.3.1-vs2.3.3.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_tag.h linux-3.3.1-vs2.3.3.2/include/linux/vs_tag.h
---- linux-3.3.1/include/linux/vs_tag.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_tag.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_tag.h linux-3.4-vs2.3.3.4/include/linux/vs_tag.h
+--- linux-3.4/include/linux/vs_tag.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_tag.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,47 @@
 +#ifndef _VS_TAG_H
 +#define _VS_TAG_H
@@ -10700,9 +10735,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_tag.h linux-3.3.1-vs2.3.3.2/i
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vs_time.h linux-3.3.1-vs2.3.3.2/include/linux/vs_time.h
---- linux-3.3.1/include/linux/vs_time.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vs_time.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vs_time.h linux-3.4-vs2.3.3.4/include/linux/vs_time.h
+--- linux-3.4/include/linux/vs_time.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vs_time.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,19 @@
 +#ifndef _VS_TIME_H
 +#define _VS_TIME_H
@@ -10723,9 +10758,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vs_time.h linux-3.3.1-vs2.3.3.2/
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/Kbuild linux-3.3.1-vs2.3.3.2/include/linux/vserver/Kbuild
---- linux-3.3.1/include/linux/vserver/Kbuild   1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/Kbuild 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/Kbuild linux-3.4-vs2.3.3.4/include/linux/vserver/Kbuild
+--- linux-3.4/include/linux/vserver/Kbuild     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/Kbuild   2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,8 @@
 +
 +header-y += context_cmd.h network_cmd.h space_cmd.h \
@@ -10735,9 +10770,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/Kbuild linux-3.3.1-vs2.3
 +
 +header-y += switch.h network.h monitor.h inode.h device.h
 +
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/base.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/base.h
---- linux-3.3.1/include/linux/vserver/base.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/base.h 2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/base.h linux-3.4-vs2.3.3.4/include/linux/vserver/base.h
+--- linux-3.4/include/linux/vserver/base.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/base.h   2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,178 @@
 +#ifndef _VX_BASE_H
 +#define _VX_BASE_H
@@ -10917,9 +10952,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/base.h linux-3.3.1-vs2.3
 +#define nx_info_state(n, m)   (__nx_state(n) & (m))
 +
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct.h
---- linux-3.3.1/include/linux/vserver/cacct.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cacct.h linux-3.4-vs2.3.3.4/include/linux/vserver/cacct.h
+--- linux-3.4/include/linux/vserver/cacct.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cacct.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,15 @@
 +#ifndef _VX_CACCT_H
 +#define _VX_CACCT_H
@@ -10936,9 +10971,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct.h linux-3.3.1-vs2.
 +};
 +
 +#endif        /* _VX_CACCT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct_cmd.h
---- linux-3.3.1/include/linux/vserver/cacct_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cacct_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/cacct_cmd.h
+--- linux-3.4/include/linux/vserver/cacct_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cacct_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,23 @@
 +#ifndef _VX_CACCT_CMD_H
 +#define _VX_CACCT_CMD_H
@@ -10963,9 +10998,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CACCT_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct_def.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct_def.h
---- linux-3.3.1/include/linux/vserver/cacct_def.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct_def.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cacct_def.h linux-3.4-vs2.3.3.4/include/linux/vserver/cacct_def.h
+--- linux-3.4/include/linux/vserver/cacct_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cacct_def.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,43 @@
 +#ifndef _VX_CACCT_DEF_H
 +#define _VX_CACCT_DEF_H
@@ -11010,9 +11045,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct_def.h linux-3.3.1-
 +#endif
 +
 +#endif        /* _VX_CACCT_DEF_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct_int.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct_int.h
---- linux-3.3.1/include/linux/vserver/cacct_int.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cacct_int.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cacct_int.h linux-3.4-vs2.3.3.4/include/linux/vserver/cacct_int.h
+--- linux-3.4/include/linux/vserver/cacct_int.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cacct_int.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,21 @@
 +#ifndef _VX_CACCT_INT_H
 +#define _VX_CACCT_INT_H
@@ -11035,9 +11070,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cacct_int.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CACCT_INT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/check.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/check.h
---- linux-3.3.1/include/linux/vserver/check.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/check.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/check.h linux-3.4-vs2.3.3.4/include/linux/vserver/check.h
+--- linux-3.4/include/linux/vserver/check.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/check.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,89 @@
 +#ifndef _VS_CHECK_H
 +#define _VS_CHECK_H
@@ -11128,9 +11163,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/check.h linux-3.3.1-vs2.
 +#define nx_weak_check(c, m)   ((m) ? nx_check(c, m) : 1)
 +
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/context.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/context.h
---- linux-3.3.1/include/linux/vserver/context.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/context.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/context.h linux-3.4-vs2.3.3.4/include/linux/vserver/context.h
+--- linux-3.4/include/linux/vserver/context.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/context.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,188 @@
 +#ifndef _VX_CONTEXT_H
 +#define _VX_CONTEXT_H
@@ -11320,9 +11355,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/context.h linux-3.3.1-vs
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CONTEXT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/context_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/context_cmd.h
---- linux-3.3.1/include/linux/vserver/context_cmd.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/context_cmd.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/context_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/context_cmd.h
+--- linux-3.4/include/linux/vserver/context_cmd.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/context_cmd.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,162 @@
 +#ifndef _VX_CONTEXT_CMD_H
 +#define _VX_CONTEXT_CMD_H
@@ -11486,10 +11521,10 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/context_cmd.h linux-3.3.
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cvirt.h
---- linux-3.3.1/include/linux/vserver/cvirt.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cvirt.h        2012-02-24 03:55:06.000000000 +0100
-@@ -0,0 +1,20 @@
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cvirt.h linux-3.4-vs2.3.3.4/include/linux/vserver/cvirt.h
+--- linux-3.4/include/linux/vserver/cvirt.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cvirt.h  2012-05-21 18:15:05.000000000 +0200
+@@ -0,0 +1,22 @@
 +#ifndef _VX_CVIRT_H
 +#define _VX_CVIRT_H
 +
@@ -11498,6 +11533,8 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt.h linux-3.3.1-vs2.
 +
 +struct timespec;
 +
++void vx_vsi_boottime(struct timespec *);
++
 +void vx_vsi_uptime(struct timespec *, struct timespec *);
 +
 +
@@ -11510,9 +11547,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt.h linux-3.3.1-vs2.
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CVIRT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cvirt_cmd.h
---- linux-3.3.1/include/linux/vserver/cvirt_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cvirt_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cvirt_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/cvirt_cmd.h
+--- linux-3.4/include/linux/vserver/cvirt_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cvirt_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,53 @@
 +#ifndef _VX_CVIRT_CMD_H
 +#define _VX_CVIRT_CMD_H
@@ -11567,9 +11604,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CVIRT_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt_def.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/cvirt_def.h
---- linux-3.3.1/include/linux/vserver/cvirt_def.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/cvirt_def.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/cvirt_def.h linux-3.4-vs2.3.3.4/include/linux/vserver/cvirt_def.h
+--- linux-3.4/include/linux/vserver/cvirt_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/cvirt_def.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,80 @@
 +#ifndef _VX_CVIRT_DEF_H
 +#define _VX_CVIRT_DEF_H
@@ -11651,9 +11688,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/cvirt_def.h linux-3.3.1-
 +#endif
 +
 +#endif        /* _VX_CVIRT_DEF_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/debug.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/debug.h
---- linux-3.3.1/include/linux/vserver/debug.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/debug.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/debug.h linux-3.4-vs2.3.3.4/include/linux/vserver/debug.h
+--- linux-3.4/include/linux/vserver/debug.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/debug.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,145 @@
 +#ifndef _VX_DEBUG_H
 +#define _VX_DEBUG_H
@@ -11800,9 +11837,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/debug.h linux-3.3.1-vs2.
 +
 +
 +#endif /* _VX_DEBUG_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/debug_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/debug_cmd.h
---- linux-3.3.1/include/linux/vserver/debug_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/debug_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/debug_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/debug_cmd.h
+--- linux-3.4/include/linux/vserver/debug_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/debug_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,58 @@
 +#ifndef _VX_DEBUG_CMD_H
 +#define _VX_DEBUG_CMD_H
@@ -11862,9 +11899,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/debug_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_DEBUG_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/device.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/device.h
---- linux-3.3.1/include/linux/vserver/device.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/device.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/device.h linux-3.4-vs2.3.3.4/include/linux/vserver/device.h
+--- linux-3.4/include/linux/vserver/device.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/device.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,15 @@
 +#ifndef _VX_DEVICE_H
 +#define _VX_DEVICE_H
@@ -11881,9 +11918,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/device.h linux-3.3.1-vs2
 +#else /* _VX_DEVICE_H */
 +#warning duplicate inclusion
 +#endif        /* _VX_DEVICE_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/device_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/device_cmd.h
---- linux-3.3.1/include/linux/vserver/device_cmd.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/device_cmd.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/device_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/device_cmd.h
+--- linux-3.4/include/linux/vserver/device_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/device_cmd.h     2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,44 @@
 +#ifndef _VX_DEVICE_CMD_H
 +#define _VX_DEVICE_CMD_H
@@ -11929,9 +11966,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/device_cmd.h linux-3.3.1
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_DEVICE_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/device_def.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/device_def.h
---- linux-3.3.1/include/linux/vserver/device_def.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/device_def.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/device_def.h linux-3.4-vs2.3.3.4/include/linux/vserver/device_def.h
+--- linux-3.4/include/linux/vserver/device_def.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/device_def.h     2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,17 @@
 +#ifndef _VX_DEVICE_DEF_H
 +#define _VX_DEVICE_DEF_H
@@ -11950,9 +11987,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/device_def.h linux-3.3.1
 +};
 +
 +#endif        /* _VX_DEVICE_DEF_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/dlimit.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/dlimit.h
---- linux-3.3.1/include/linux/vserver/dlimit.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/dlimit.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/dlimit.h linux-3.4-vs2.3.3.4/include/linux/vserver/dlimit.h
+--- linux-3.4/include/linux/vserver/dlimit.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/dlimit.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,54 @@
 +#ifndef _VX_DLIMIT_H
 +#define _VX_DLIMIT_H
@@ -12008,9 +12045,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/dlimit.h linux-3.3.1-vs2
 +#else /* _VX_DLIMIT_H */
 +#warning duplicate inclusion
 +#endif        /* _VX_DLIMIT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/dlimit_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/dlimit_cmd.h
---- linux-3.3.1/include/linux/vserver/dlimit_cmd.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/dlimit_cmd.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/dlimit_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/dlimit_cmd.h
+--- linux-3.4/include/linux/vserver/dlimit_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/dlimit_cmd.h     2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,109 @@
 +#ifndef _VX_DLIMIT_CMD_H
 +#define _VX_DLIMIT_CMD_H
@@ -12121,9 +12158,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/dlimit_cmd.h linux-3.3.1
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_DLIMIT_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/global.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/global.h
---- linux-3.3.1/include/linux/vserver/global.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/global.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/global.h linux-3.4-vs2.3.3.4/include/linux/vserver/global.h
+--- linux-3.4/include/linux/vserver/global.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/global.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,19 @@
 +#ifndef _VX_GLOBAL_H
 +#define _VX_GLOBAL_H
@@ -12144,9 +12181,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/global.h linux-3.3.1-vs2
 +
 +
 +#endif /* _VX_GLOBAL_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/history.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/history.h
---- linux-3.3.1/include/linux/vserver/history.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/history.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/history.h linux-3.4-vs2.3.3.4/include/linux/vserver/history.h
+--- linux-3.4/include/linux/vserver/history.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/history.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,197 @@
 +#ifndef _VX_HISTORY_H
 +#define _VX_HISTORY_H
@@ -12345,9 +12382,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/history.h linux-3.3.1-vs
 +#endif /* CONFIG_VSERVER_HISTORY */
 +
 +#endif /* _VX_HISTORY_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/inode.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/inode.h
---- linux-3.3.1/include/linux/vserver/inode.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/inode.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/inode.h linux-3.4-vs2.3.3.4/include/linux/vserver/inode.h
+--- linux-3.4/include/linux/vserver/inode.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/inode.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,39 @@
 +#ifndef _VX_INODE_H
 +#define _VX_INODE_H
@@ -12388,9 +12425,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/inode.h linux-3.3.1-vs2.
 +#else /* _VX_INODE_H */
 +#warning duplicate inclusion
 +#endif        /* _VX_INODE_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/inode_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/inode_cmd.h
---- linux-3.3.1/include/linux/vserver/inode_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/inode_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/inode_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/inode_cmd.h
+--- linux-3.4/include/linux/vserver/inode_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/inode_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,59 @@
 +#ifndef _VX_INODE_CMD_H
 +#define _VX_INODE_CMD_H
@@ -12451,9 +12488,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/inode_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_INODE_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit.h
---- linux-3.3.1/include/linux/vserver/limit.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/limit.h linux-3.4-vs2.3.3.4/include/linux/vserver/limit.h
+--- linux-3.4/include/linux/vserver/limit.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/limit.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,71 @@
 +#ifndef _VX_LIMIT_H
 +#define _VX_LIMIT_H
@@ -12526,9 +12563,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit.h linux-3.3.1-vs2.
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_LIMIT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit_cmd.h
---- linux-3.3.1/include/linux/vserver/limit_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/limit_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/limit_cmd.h
+--- linux-3.4/include/linux/vserver/limit_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/limit_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,71 @@
 +#ifndef _VX_LIMIT_CMD_H
 +#define _VX_LIMIT_CMD_H
@@ -12601,9 +12638,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_LIMIT_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit_def.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit_def.h
---- linux-3.3.1/include/linux/vserver/limit_def.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit_def.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/limit_def.h linux-3.4-vs2.3.3.4/include/linux/vserver/limit_def.h
+--- linux-3.4/include/linux/vserver/limit_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/limit_def.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,47 @@
 +#ifndef _VX_LIMIT_DEF_H
 +#define _VX_LIMIT_DEF_H
@@ -12652,9 +12689,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit_def.h linux-3.3.1-
 +#endif
 +
 +#endif        /* _VX_LIMIT_DEF_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit_int.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit_int.h
---- linux-3.3.1/include/linux/vserver/limit_int.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/limit_int.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/limit_int.h linux-3.4-vs2.3.3.4/include/linux/vserver/limit_int.h
+--- linux-3.4/include/linux/vserver/limit_int.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/limit_int.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,198 @@
 +#ifndef _VX_LIMIT_INT_H
 +#define _VX_LIMIT_INT_H
@@ -12854,9 +12891,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/limit_int.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_LIMIT_INT_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/monitor.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/monitor.h
---- linux-3.3.1/include/linux/vserver/monitor.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/monitor.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/monitor.h linux-3.4-vs2.3.3.4/include/linux/vserver/monitor.h
+--- linux-3.4/include/linux/vserver/monitor.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/monitor.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,96 @@
 +#ifndef _VX_MONITOR_H
 +#define _VX_MONITOR_H
@@ -12954,9 +12991,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/monitor.h linux-3.3.1-vs
 +
 +
 +#endif /* _VX_MONITOR_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/network.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/network.h
---- linux-3.3.1/include/linux/vserver/network.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/network.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/network.h linux-3.4-vs2.3.3.4/include/linux/vserver/network.h
+--- linux-3.4/include/linux/vserver/network.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/network.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,148 @@
 +#ifndef _VX_NETWORK_H
 +#define _VX_NETWORK_H
@@ -13106,9 +13143,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/network.h linux-3.3.1-vs
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_NETWORK_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/network_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/network_cmd.h
---- linux-3.3.1/include/linux/vserver/network_cmd.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/network_cmd.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/network_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/network_cmd.h
+--- linux-3.4/include/linux/vserver/network_cmd.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/network_cmd.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,164 @@
 +#ifndef _VX_NETWORK_CMD_H
 +#define _VX_NETWORK_CMD_H
@@ -13274,9 +13311,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/network_cmd.h linux-3.3.
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/percpu.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/percpu.h
---- linux-3.3.1/include/linux/vserver/percpu.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/percpu.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/percpu.h linux-3.4-vs2.3.3.4/include/linux/vserver/percpu.h
+--- linux-3.4/include/linux/vserver/percpu.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/percpu.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,14 @@
 +#ifndef _VX_PERCPU_H
 +#define _VX_PERCPU_H
@@ -13292,9 +13329,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/percpu.h linux-3.3.1-vs2
 +#define       PERCPU_PERCTX   (sizeof(struct _vx_percpu))
 +
 +#endif        /* _VX_PERCPU_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/pid.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/pid.h
---- linux-3.3.1/include/linux/vserver/pid.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/pid.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/pid.h linux-3.4-vs2.3.3.4/include/linux/vserver/pid.h
+--- linux-3.4/include/linux/vserver/pid.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/pid.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,51 @@
 +#ifndef _VSERVER_PID_H
 +#define _VSERVER_PID_H
@@ -13347,9 +13384,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/pid.h linux-3.3.1-vs2.3.
 +}
 +
 +#endif
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/sched.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/sched.h
---- linux-3.3.1/include/linux/vserver/sched.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/sched.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/sched.h linux-3.4-vs2.3.3.4/include/linux/vserver/sched.h
+--- linux-3.4/include/linux/vserver/sched.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/sched.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,23 @@
 +#ifndef _VX_SCHED_H
 +#define _VX_SCHED_H
@@ -13374,9 +13411,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/sched.h linux-3.3.1-vs2.
 +#else /* _VX_SCHED_H */
 +#warning duplicate inclusion
 +#endif        /* _VX_SCHED_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/sched_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/sched_cmd.h
---- linux-3.3.1/include/linux/vserver/sched_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/sched_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/sched_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/sched_cmd.h
+--- linux-3.4/include/linux/vserver/sched_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/sched_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,21 @@
 +#ifndef _VX_SCHED_CMD_H
 +#define _VX_SCHED_CMD_H
@@ -13399,9 +13436,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/sched_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_SCHED_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/sched_def.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/sched_def.h
---- linux-3.3.1/include/linux/vserver/sched_def.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/sched_def.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/sched_def.h linux-3.4-vs2.3.3.4/include/linux/vserver/sched_def.h
+--- linux-3.4/include/linux/vserver/sched_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/sched_def.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,38 @@
 +#ifndef _VX_SCHED_DEF_H
 +#define _VX_SCHED_DEF_H
@@ -13441,9 +13478,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/sched_def.h linux-3.3.1-
 +#endif
 +
 +#endif        /* _VX_SCHED_DEF_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/signal.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/signal.h
---- linux-3.3.1/include/linux/vserver/signal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/signal.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/signal.h linux-3.4-vs2.3.3.4/include/linux/vserver/signal.h
+--- linux-3.4/include/linux/vserver/signal.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/signal.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,14 @@
 +#ifndef _VX_SIGNAL_H
 +#define _VX_SIGNAL_H
@@ -13459,9 +13496,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/signal.h linux-3.3.1-vs2
 +#else /* _VX_SIGNAL_H */
 +#warning duplicate inclusion
 +#endif        /* _VX_SIGNAL_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/signal_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/signal_cmd.h
---- linux-3.3.1/include/linux/vserver/signal_cmd.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/signal_cmd.h   2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/signal_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/signal_cmd.h
+--- linux-3.4/include/linux/vserver/signal_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/signal_cmd.h     2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,43 @@
 +#ifndef _VX_SIGNAL_CMD_H
 +#define _VX_SIGNAL_CMD_H
@@ -13506,9 +13543,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/signal_cmd.h linux-3.3.1
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_SIGNAL_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/space.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/space.h
---- linux-3.3.1/include/linux/vserver/space.h  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/space.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/space.h linux-3.4-vs2.3.3.4/include/linux/vserver/space.h
+--- linux-3.4/include/linux/vserver/space.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/space.h  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,12 @@
 +#ifndef _VX_SPACE_H
 +#define _VX_SPACE_H
@@ -13522,9 +13559,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/space.h linux-3.3.1-vs2.
 +#else /* _VX_SPACE_H */
 +#warning duplicate inclusion
 +#endif        /* _VX_SPACE_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/space_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/space_cmd.h
---- linux-3.3.1/include/linux/vserver/space_cmd.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/space_cmd.h    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/space_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/space_cmd.h
+--- linux-3.4/include/linux/vserver/space_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/space_cmd.h      2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,38 @@
 +#ifndef _VX_SPACE_CMD_H
 +#define _VX_SPACE_CMD_H
@@ -13564,9 +13601,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/space_cmd.h linux-3.3.1-
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_SPACE_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/switch.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/switch.h
---- linux-3.3.1/include/linux/vserver/switch.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/switch.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/switch.h linux-3.4-vs2.3.3.4/include/linux/vserver/switch.h
+--- linux-3.4/include/linux/vserver/switch.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/switch.h 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,98 @@
 +#ifndef _VX_SWITCH_H
 +#define _VX_SWITCH_H
@@ -13666,9 +13703,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/switch.h linux-3.3.1-vs2
 +
 +#endif        /* _VX_SWITCH_H */
 +
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/tag.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/tag.h
---- linux-3.3.1/include/linux/vserver/tag.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/tag.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/tag.h linux-3.4-vs2.3.3.4/include/linux/vserver/tag.h
+--- linux-3.4/include/linux/vserver/tag.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/tag.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,143 @@
 +#ifndef _DX_TAG_H
 +#define _DX_TAG_H
@@ -13813,9 +13850,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/tag.h linux-3.3.1-vs2.3.
 +#endif
 +
 +#endif /* _DX_TAG_H */
-diff -NurpP --minimal linux-3.3.1/include/linux/vserver/tag_cmd.h linux-3.3.1-vs2.3.3.2/include/linux/vserver/tag_cmd.h
---- linux-3.3.1/include/linux/vserver/tag_cmd.h        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/linux/vserver/tag_cmd.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/linux/vserver/tag_cmd.h linux-3.4-vs2.3.3.4/include/linux/vserver/tag_cmd.h
+--- linux-3.4/include/linux/vserver/tag_cmd.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/linux/vserver/tag_cmd.h        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,22 @@
 +#ifndef _VX_TAG_CMD_H
 +#define _VX_TAG_CMD_H
@@ -13839,9 +13876,9 @@ diff -NurpP --minimal linux-3.3.1/include/linux/vserver/tag_cmd.h linux-3.3.1-vs
 +
 +#endif        /* __KERNEL__ */
 +#endif        /* _VX_TAG_CMD_H */
-diff -NurpP --minimal linux-3.3.1/include/net/addrconf.h linux-3.3.1-vs2.3.3.2/include/net/addrconf.h
---- linux-3.3.1/include/net/addrconf.h 2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/net/addrconf.h       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/net/addrconf.h linux-3.4-vs2.3.3.4/include/net/addrconf.h
+--- linux-3.4/include/net/addrconf.h   2012-05-21 18:07:33.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/net/addrconf.h 2012-05-21 18:15:05.000000000 +0200
 @@ -80,7 +80,8 @@ extern int                   ipv6_dev_get_saddr(struct n
                                               struct net_device *dev,
                                               const struct in6_addr *daddr,
@@ -13852,9 +13889,9 @@ diff -NurpP --minimal linux-3.3.1/include/net/addrconf.h linux-3.3.1-vs2.3.3.2/i
  extern int                    ipv6_get_lladdr(struct net_device *dev,
                                                struct in6_addr *addr,
                                                unsigned char banned_flags);
-diff -NurpP --minimal linux-3.3.1/include/net/af_unix.h linux-3.3.1-vs2.3.3.2/include/net/af_unix.h
---- linux-3.3.1/include/net/af_unix.h  2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/net/af_unix.h        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/net/af_unix.h linux-3.4-vs2.3.3.4/include/net/af_unix.h
+--- linux-3.4/include/net/af_unix.h    2012-05-21 18:07:33.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/net/af_unix.h  2012-05-21 18:15:05.000000000 +0200
 @@ -4,6 +4,7 @@
  #include <linux/socket.h>
  #include <linux/un.h>
@@ -13863,9 +13900,9 @@ diff -NurpP --minimal linux-3.3.1/include/net/af_unix.h linux-3.3.1-vs2.3.3.2/in
  #include <net/sock.h>
  
  extern void unix_inflight(struct file *fp);
-diff -NurpP --minimal linux-3.3.1/include/net/inet_timewait_sock.h linux-3.3.1-vs2.3.3.2/include/net/inet_timewait_sock.h
---- linux-3.3.1/include/net/inet_timewait_sock.h       2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/net/inet_timewait_sock.h     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/net/inet_timewait_sock.h linux-3.4-vs2.3.3.4/include/net/inet_timewait_sock.h
+--- linux-3.4/include/net/inet_timewait_sock.h 2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/net/inet_timewait_sock.h       2012-05-21 18:15:05.000000000 +0200
 @@ -112,6 +112,10 @@ struct inet_timewait_sock {
  #define tw_net                        __tw_common.skc_net
  #define tw_daddr              __tw_common.skc_daddr
@@ -13877,9 +13914,9 @@ diff -NurpP --minimal linux-3.3.1/include/net/inet_timewait_sock.h linux-3.3.1-v
        int                     tw_timeout;
        volatile unsigned char  tw_substate;
        unsigned char           tw_rcv_wscale;
-diff -NurpP --minimal linux-3.3.1/include/net/ip6_route.h linux-3.3.1-vs2.3.3.2/include/net/ip6_route.h
---- linux-3.3.1/include/net/ip6_route.h        2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/net/ip6_route.h      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/net/ip6_route.h linux-3.4-vs2.3.3.4/include/net/ip6_route.h
+--- linux-3.4/include/net/ip6_route.h  2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/net/ip6_route.h        2012-05-21 18:15:05.000000000 +0200
 @@ -88,7 +88,8 @@ extern int                   ip6_route_get_saddr(struct 
                                                    struct rt6_info *rt,
                                                    const struct in6_addr *daddr,
@@ -13890,9 +13927,9 @@ diff -NurpP --minimal linux-3.3.1/include/net/ip6_route.h linux-3.3.1-vs2.3.3.2/
  
  extern struct rt6_info                *rt6_lookup(struct net *net,
                                            const struct in6_addr *daddr,
-diff -NurpP --minimal linux-3.3.1/include/net/route.h linux-3.3.1-vs2.3.3.2/include/net/route.h
---- linux-3.3.1/include/net/route.h    2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/net/route.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/include/net/route.h linux-3.4-vs2.3.3.4/include/net/route.h
+--- linux-3.4/include/net/route.h      2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/include/net/route.h    2012-05-21 18:15:05.000000000 +0200
 @@ -202,6 +202,9 @@ static inline void ip_rt_put(struct rtab
                dst_release(&rt->dst);
  }
@@ -13940,10 +13977,10 @@ diff -NurpP --minimal linux-3.3.1/include/net/route.h linux-3.3.1-vs2.3.3.2/incl
                rt = __ip_route_output_key(net, fl4);
                if (IS_ERR(rt))
                        return rt;
-diff -NurpP --minimal linux-3.3.1/include/net/sock.h linux-3.3.1-vs2.3.3.2/include/net/sock.h
---- linux-3.3.1/include/net/sock.h     2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/include/net/sock.h   2012-02-24 03:55:06.000000000 +0100
-@@ -168,6 +168,10 @@ struct sock_common {
+diff -NurpP --minimal linux-3.4/include/net/sock.h linux-3.4-vs2.3.3.4/include/net/sock.h
+--- linux-3.4/include/net/sock.h       2012-05-21 18:07:33.000000000 +0200
++++ linux-3.4-vs2.3.3.4/include/net/sock.h     2012-05-21 18:15:05.000000000 +0200
+@@ -170,6 +170,10 @@ struct sock_common {
  #ifdef CONFIG_NET_NS
        struct net              *skc_net;
  #endif
@@ -13954,7 +13991,7 @@ diff -NurpP --minimal linux-3.3.1/include/net/sock.h linux-3.3.1-vs2.3.3.2/inclu
        /*
         * fields between dontcopy_begin/dontcopy_end
         * are not copied in sock_copy()
-@@ -278,6 +282,10 @@ struct sock {
+@@ -281,6 +285,10 @@ struct sock {
  #define sk_bind_node          __sk_common.skc_bind_node
  #define sk_prot                       __sk_common.skc_prot
  #define sk_net                        __sk_common.skc_net
@@ -13965,10 +14002,10 @@ diff -NurpP --minimal linux-3.3.1/include/net/sock.h linux-3.3.1-vs2.3.3.2/inclu
        socket_lock_t           sk_lock;
        struct sk_buff_head     sk_receive_queue;
        /*
-diff -NurpP --minimal linux-3.3.1/init/Kconfig linux-3.3.1-vs2.3.3.2/init/Kconfig
---- linux-3.3.1/init/Kconfig   2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/init/Kconfig 2012-02-24 03:55:06.000000000 +0100
-@@ -588,6 +588,7 @@ config HAVE_UNSTABLE_SCHED_CLOCK
+diff -NurpP --minimal linux-3.4/init/Kconfig linux-3.4-vs2.3.3.4/init/Kconfig
+--- linux-3.4/init/Kconfig     2012-05-21 18:07:33.000000000 +0200
++++ linux-3.4-vs2.3.3.4/init/Kconfig   2012-05-21 18:15:05.000000000 +0200
+@@ -579,6 +579,7 @@ config HAVE_UNSTABLE_SCHED_CLOCK
  menuconfig CGROUPS
        boolean "Control Group support"
        depends on EVENTFD
@@ -13976,7 +14013,7 @@ diff -NurpP --minimal linux-3.3.1/init/Kconfig linux-3.3.1-vs2.3.3.2/init/Kconfi
        help
          This option adds support for grouping sets of processes together, for
          use with process control subsystems such as Cpusets, CFS, memory
-@@ -837,6 +838,7 @@ config IPC_NS
+@@ -828,6 +829,7 @@ config IPC_NS
  config USER_NS
        bool "User namespace (EXPERIMENTAL)"
        depends on EXPERIMENTAL
@@ -13984,9 +14021,9 @@ diff -NurpP --minimal linux-3.3.1/init/Kconfig linux-3.3.1-vs2.3.3.2/init/Kconfi
        default y
        help
          This allows containers, i.e. vservers, to use user namespaces
-diff -NurpP --minimal linux-3.3.1/init/main.c linux-3.3.1-vs2.3.3.2/init/main.c
---- linux-3.3.1/init/main.c    2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/init/main.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/init/main.c linux-3.4-vs2.3.3.4/init/main.c
+--- linux-3.4/init/main.c      2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/init/main.c    2012-05-21 18:15:05.000000000 +0200
 @@ -68,6 +68,7 @@
  #include <linux/shmem_fs.h>
  #include <linux/slab.h>
@@ -13995,9 +14032,9 @@ diff -NurpP --minimal linux-3.3.1/init/main.c linux-3.3.1-vs2.3.3.2/init/main.c
  
  #include <asm/io.h>
  #include <asm/bugs.h>
-diff -NurpP --minimal linux-3.3.1/ipc/mqueue.c linux-3.3.1-vs2.3.3.2/ipc/mqueue.c
---- linux-3.3.1/ipc/mqueue.c   2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/ipc/mqueue.c 2012-02-24 04:07:13.000000000 +0100
+diff -NurpP --minimal linux-3.4/ipc/mqueue.c linux-3.4-vs2.3.3.4/ipc/mqueue.c
+--- linux-3.4/ipc/mqueue.c     2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/ipc/mqueue.c   2012-05-21 18:15:05.000000000 +0200
 @@ -34,6 +34,8 @@
  #include <linux/ipc_namespace.h>
  #include <linux/user_namespace.h>
@@ -14053,7 +14090,7 @@ diff -NurpP --minimal linux-3.3.1/ipc/mqueue.c linux-3.3.1-vs2.3.3.2/ipc/mqueue.
        } else if (S_ISDIR(mode)) {
                inc_nlink(inode);
                /* Some things misbehave if size == 0 on a directory */
-@@ -277,8 +285,11 @@ static void mqueue_evict_inode(struct in
+@@ -267,8 +275,11 @@ static void mqueue_evict_inode(struct in
            + info->attr.mq_msgsize);
        user = info->user;
        if (user) {
@@ -14065,7 +14102,7 @@ diff -NurpP --minimal linux-3.3.1/ipc/mqueue.c linux-3.3.1-vs2.3.3.2/ipc/mqueue.
                /*
                 * get_ns_from_inode() ensures that the
                 * (ipc_ns = sb->s_fs_info) is either a valid ipc_ns
-@@ -288,6 +299,7 @@ static void mqueue_evict_inode(struct in
+@@ -278,6 +289,7 @@ static void mqueue_evict_inode(struct in
                if (ipc_ns)
                        ipc_ns->mq_queues_count--;
                spin_unlock(&mq_lock);
@@ -14073,9 +14110,9 @@ diff -NurpP --minimal linux-3.3.1/ipc/mqueue.c linux-3.3.1-vs2.3.3.2/ipc/mqueue.
                free_uid(user);
        }
        if (ipc_ns)
-diff -NurpP --minimal linux-3.3.1/ipc/msg.c linux-3.3.1-vs2.3.3.2/ipc/msg.c
---- linux-3.3.1/ipc/msg.c      2011-05-22 16:17:59.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/ipc/msg.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/ipc/msg.c linux-3.4-vs2.3.3.4/ipc/msg.c
+--- linux-3.4/ipc/msg.c        2011-05-22 16:17:59.000000000 +0200
++++ linux-3.4-vs2.3.3.4/ipc/msg.c      2012-05-21 18:15:05.000000000 +0200
 @@ -37,6 +37,7 @@
  #include <linux/rwsem.h>
  #include <linux/nsproxy.h>
@@ -14092,9 +14129,9 @@ diff -NurpP --minimal linux-3.3.1/ipc/msg.c linux-3.3.1-vs2.3.3.2/ipc/msg.c
  
        msq->q_perm.security = NULL;
        retval = security_msg_queue_alloc(msq);
-diff -NurpP --minimal linux-3.3.1/ipc/namespace.c linux-3.3.1-vs2.3.3.2/ipc/namespace.c
---- linux-3.3.1/ipc/namespace.c        2011-07-22 11:18:12.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/ipc/namespace.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/ipc/namespace.c linux-3.4-vs2.3.3.4/ipc/namespace.c
+--- linux-3.4/ipc/namespace.c  2011-07-22 11:18:12.000000000 +0200
++++ linux-3.4-vs2.3.3.4/ipc/namespace.c        2012-05-21 18:15:05.000000000 +0200
 @@ -13,11 +13,12 @@
  #include <linux/mount.h>
  #include <linux/user_namespace.h>
@@ -14135,9 +14172,9 @@ diff -NurpP --minimal linux-3.3.1/ipc/namespace.c linux-3.3.1-vs2.3.3.2/ipc/name
  }
  
  /*
-diff -NurpP --minimal linux-3.3.1/ipc/sem.c linux-3.3.1-vs2.3.3.2/ipc/sem.c
---- linux-3.3.1/ipc/sem.c      2012-01-09 16:14:59.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/ipc/sem.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/ipc/sem.c linux-3.4-vs2.3.3.4/ipc/sem.c
+--- linux-3.4/ipc/sem.c        2012-01-09 16:14:59.000000000 +0100
++++ linux-3.4-vs2.3.3.4/ipc/sem.c      2012-05-21 18:15:05.000000000 +0200
 @@ -86,6 +86,8 @@
  #include <linux/rwsem.h>
  #include <linux/nsproxy.h>
@@ -14175,9 +14212,9 @@ diff -NurpP --minimal linux-3.3.1/ipc/sem.c linux-3.3.1-vs2.3.3.2/ipc/sem.c
        security_sem_free(sma);
        ipc_rcu_putref(sma);
  }
-diff -NurpP --minimal linux-3.3.1/ipc/shm.c linux-3.3.1-vs2.3.3.2/ipc/shm.c
---- linux-3.3.1/ipc/shm.c      2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/ipc/shm.c    2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/ipc/shm.c linux-3.4-vs2.3.3.4/ipc/shm.c
+--- linux-3.4/ipc/shm.c        2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/ipc/shm.c      2012-05-21 18:15:05.000000000 +0200
 @@ -39,6 +39,8 @@
  #include <linux/nsproxy.h>
  #include <linux/mount.h>
@@ -14233,9 +14270,9 @@ diff -NurpP --minimal linux-3.3.1/ipc/shm.c linux-3.3.1-vs2.3.3.2/ipc/shm.c
        return error;
  
  no_id:
-diff -NurpP --minimal linux-3.3.1/kernel/Makefile linux-3.3.1-vs2.3.3.2/kernel/Makefile
---- linux-3.3.1/kernel/Makefile        2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/Makefile      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/Makefile linux-3.4-vs2.3.3.4/kernel/Makefile
+--- linux-3.4/kernel/Makefile  2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/Makefile        2012-05-21 18:15:05.000000000 +0200
 @@ -25,6 +25,7 @@ endif
  obj-y += sched/
  obj-y += power/
@@ -14243,10 +14280,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/Makefile linux-3.3.1-vs2.3.3.2/kernel/M
 +obj-y += vserver/
  obj-$(CONFIG_FREEZER) += freezer.o
  obj-$(CONFIG_PROFILING) += profile.o
- obj-$(CONFIG_SYSCTL_SYSCALL_CHECK) += sysctl_check.o
-diff -NurpP --minimal linux-3.3.1/kernel/auditsc.c linux-3.3.1-vs2.3.3.2/kernel/auditsc.c
---- linux-3.3.1/kernel/auditsc.c       2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/auditsc.c     2012-02-24 16:47:49.000000000 +0100
+ obj-$(CONFIG_STACKTRACE) += stacktrace.o
+diff -NurpP --minimal linux-3.4/kernel/auditsc.c linux-3.4-vs2.3.3.4/kernel/auditsc.c
+--- linux-3.4/kernel/auditsc.c 2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/auditsc.c       2012-05-21 18:15:05.000000000 +0200
 @@ -2308,7 +2308,7 @@ int audit_set_loginuid(uid_t loginuid)
        if (task->loginuid != -1)
                return -EPERM;
@@ -14256,9 +14293,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/auditsc.c linux-3.3.1-vs2.3.3.2/kernel/
                return -EPERM;
  #endif  /* CONFIG_AUDIT_LOGINUID_IMMUTABLE */
  
-diff -NurpP --minimal linux-3.3.1/kernel/capability.c linux-3.3.1-vs2.3.3.2/kernel/capability.c
---- linux-3.3.1/kernel/capability.c    2012-03-19 19:47:29.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/capability.c  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/capability.c linux-3.4-vs2.3.3.4/kernel/capability.c
+--- linux-3.4/kernel/capability.c      2012-03-19 19:47:29.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/capability.c    2012-05-21 18:15:05.000000000 +0200
 @@ -15,6 +15,7 @@
  #include <linux/syscalls.h>
  #include <linux/pid_namespace.h>
@@ -14284,10 +14321,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/capability.c linux-3.3.1-vs2.3.3.2/kern
  /**
   * has_capability_noaudit - Does a task have a capability (unaudited) in the
   * initial user ns
-diff -NurpP --minimal linux-3.3.1/kernel/compat.c linux-3.3.1-vs2.3.3.2/kernel/compat.c
---- linux-3.3.1/kernel/compat.c        2012-01-09 16:14:59.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/compat.c      2012-02-24 03:55:06.000000000 +0100
-@@ -973,7 +973,7 @@ asmlinkage long compat_sys_stime(compat_
+diff -NurpP --minimal linux-3.4/kernel/compat.c linux-3.4-vs2.3.3.4/kernel/compat.c
+--- linux-3.4/kernel/compat.c  2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/compat.c        2012-05-21 18:15:05.000000000 +0200
+@@ -1054,7 +1054,7 @@ asmlinkage long compat_sys_stime(compat_
        if (err)
                return err;
  
@@ -14296,10 +14333,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/compat.c linux-3.3.1-vs2.3.3.2/kernel/c
        return 0;
  }
  
-diff -NurpP --minimal linux-3.3.1/kernel/cred.c linux-3.3.1-vs2.3.3.2/kernel/cred.c
---- linux-3.3.1/kernel/cred.c  2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/cred.c        2012-02-24 03:55:06.000000000 +0100
-@@ -61,31 +61,6 @@ struct cred init_cred = {
+diff -NurpP --minimal linux-3.4/kernel/cred.c linux-3.4-vs2.3.3.4/kernel/cred.c
+--- linux-3.4/kernel/cred.c    2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/cred.c  2012-05-21 18:15:05.000000000 +0200
+@@ -62,31 +62,6 @@ struct cred init_cred = {
  #endif
  };
  
@@ -14331,7 +14368,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/cred.c linux-3.3.1-vs2.3.3.2/kernel/cre
  /*
   * Dispose of the shared task group credentials
   */
-@@ -281,21 +256,16 @@ error:
+@@ -282,21 +257,16 @@ error:
   *
   * Call commit_creds() or abort_creds() to clean up.
   */
@@ -14354,7 +14391,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/cred.c linux-3.3.1-vs2.3.3.2/kernel/cre
        memcpy(new, old, sizeof(struct cred));
  
        atomic_set(&new->usage, 1);
-@@ -322,6 +292,13 @@ error:
+@@ -323,6 +293,13 @@ error:
        abort_creds(new);
        return NULL;
  }
@@ -14368,9 +14405,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/cred.c linux-3.3.1-vs2.3.3.2/kernel/cre
  EXPORT_SYMBOL(prepare_creds);
  
  /*
-diff -NurpP --minimal linux-3.3.1/kernel/exit.c linux-3.3.1-vs2.3.3.2/kernel/exit.c
---- linux-3.3.1/kernel/exit.c  2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/exit.c        2012-02-24 04:09:40.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/exit.c linux-3.4-vs2.3.3.4/kernel/exit.c
+--- linux-3.4/kernel/exit.c    2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/exit.c  2012-05-21 18:15:05.000000000 +0200
 @@ -48,6 +48,10 @@
  #include <linux/fs_struct.h>
  #include <linux/init_task.h>
@@ -14382,7 +14419,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/exit.c linux-3.3.1-vs2.3.3.2/kernel/exi
  #include <trace/events/sched.h>
  #include <linux/hw_breakpoint.h>
  #include <linux/oom.h>
-@@ -481,9 +485,11 @@ static void close_files(struct files_str
+@@ -482,9 +486,11 @@ static void close_files(struct files_str
                                        filp_close(file, files);
                                        cond_resched();
                                }
@@ -14394,7 +14431,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/exit.c linux-3.3.1-vs2.3.3.2/kernel/exi
                }
        }
  }
-@@ -1054,10 +1060,15 @@ void do_exit(long code)
+@@ -1062,10 +1068,15 @@ void do_exit(long code)
        smp_mb();
        raw_spin_unlock_wait(&tsk->pi_lock);
  
@@ -14410,10 +14447,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/exit.c linux-3.3.1-vs2.3.3.2/kernel/exi
        BUG();
        /* Avoid "noreturn function does return".  */
        for (;;)
-diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/fork.c
---- linux-3.3.1/kernel/fork.c  2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/fork.c        2012-03-19 20:52:37.000000000 +0100
-@@ -67,6 +67,9 @@
+diff -NurpP --minimal linux-3.4/kernel/fork.c linux-3.4-vs2.3.3.4/kernel/fork.c
+--- linux-3.4/kernel/fork.c    2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/fork.c  2012-05-21 18:15:05.000000000 +0200
+@@ -68,6 +68,9 @@
  #include <linux/oom.h>
  #include <linux/khugepaged.h>
  #include <linux/signalfd.h>
@@ -14423,7 +14460,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
  
  #include <asm/pgtable.h>
  #include <asm/pgalloc.h>
-@@ -169,6 +172,8 @@ void free_task(struct task_struct *tsk)
+@@ -170,6 +173,8 @@ void free_task(struct task_struct *tsk)
        account_kernel_stack(tsk->stack, -1);
        free_thread_info(tsk->stack);
        rt_mutex_debug_task_free(tsk);
@@ -14432,7 +14469,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
        ftrace_graph_exit_task(tsk);
        free_task_struct(tsk);
  }
-@@ -504,6 +509,7 @@ static struct mm_struct *mm_init(struct 
+@@ -506,6 +511,7 @@ static struct mm_struct *mm_init(struct 
        if (likely(!mm_alloc_pgd(mm))) {
                mm->def_flags = 0;
                mmu_notifier_mm_init(mm);
@@ -14440,15 +14477,15 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
                return mm;
        }
  
-@@ -541,6 +547,7 @@ void __mmdrop(struct mm_struct *mm)
- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-       VM_BUG_ON(mm->pmd_huge_pte);
- #endif
+@@ -558,6 +564,7 @@ void __mmdrop(struct mm_struct *mm)
+       destroy_context(mm);
+       mmu_notifier_mm_destroy(mm);
+       check_mm(mm);
 +      clr_vx_info(&mm->mm_vx_info);
        free_mm(mm);
  }
  EXPORT_SYMBOL_GPL(__mmdrop);
-@@ -776,6 +783,7 @@ struct mm_struct *dup_mm(struct task_str
+@@ -793,6 +800,7 @@ struct mm_struct *dup_mm(struct task_str
                goto fail_nomem;
  
        memcpy(mm, oldmm, sizeof(*mm));
@@ -14456,7 +14493,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
        mm_init_cpumask(mm);
  
        /* Initializing for Swap token stuff */
-@@ -819,6 +827,7 @@ fail_nocontext:
+@@ -836,6 +844,7 @@ fail_nocontext:
         * If init_new_context() failed, we cannot use mmput() to free the mm
         * because it calls destroy_context()
         */
@@ -14464,7 +14501,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
        mm_free_pgd(mm);
        free_mm(mm);
        return NULL;
-@@ -1104,6 +1113,8 @@ static struct task_struct *copy_process(
+@@ -1124,6 +1133,8 @@ static struct task_struct *copy_process(
        int retval;
        struct task_struct *p;
        int cgroup_callbacks_done = 0;
@@ -14473,7 +14510,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
  
        if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
                return ERR_PTR(-EINVAL);
-@@ -1150,7 +1161,12 @@ static struct task_struct *copy_process(
+@@ -1170,7 +1181,12 @@ static struct task_struct *copy_process(
        DEBUG_LOCKS_WARN_ON(!p->hardirqs_enabled);
        DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
  #endif
@@ -14486,7 +14523,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
        if (atomic_read(&p->real_cred->user->processes) >=
                        task_rlimit(p, RLIMIT_NPROC)) {
                if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) &&
-@@ -1420,6 +1436,18 @@ static struct task_struct *copy_process(
+@@ -1447,6 +1463,18 @@ static struct task_struct *copy_process(
  
        total_forks++;
        spin_unlock(&current->sighand->siglock);
@@ -14505,9 +14542,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/fork.c linux-3.3.1-vs2.3.3.2/kernel/for
        write_unlock_irq(&tasklist_lock);
        proc_fork_connector(p);
        cgroup_post_fork(p);
-diff -NurpP --minimal linux-3.3.1/kernel/kthread.c linux-3.3.1-vs2.3.3.2/kernel/kthread.c
---- linux-3.3.1/kernel/kthread.c       2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/kthread.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/kthread.c linux-3.4-vs2.3.3.4/kernel/kthread.c
+--- linux-3.4/kernel/kthread.c 2012-03-19 19:47:30.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/kthread.c       2012-05-21 18:15:05.000000000 +0200
 @@ -16,6 +16,7 @@
  #include <linux/mutex.h>
  #include <linux/slab.h>
@@ -14516,9 +14553,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/kthread.c linux-3.3.1-vs2.3.3.2/kernel/
  #include <trace/events/sched.h>
  
  static DEFINE_SPINLOCK(kthread_create_lock);
-diff -NurpP --minimal linux-3.3.1/kernel/nsproxy.c linux-3.3.1-vs2.3.3.2/kernel/nsproxy.c
---- linux-3.3.1/kernel/nsproxy.c       2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/nsproxy.c     2012-02-24 16:59:37.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/nsproxy.c linux-3.4-vs2.3.3.4/kernel/nsproxy.c
+--- linux-3.4/kernel/nsproxy.c 2012-01-09 16:15:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/nsproxy.c       2012-05-21 18:15:05.000000000 +0200
 @@ -20,11 +20,14 @@
  #include <linux/mnt_namespace.h>
  #include <linux/utsname.h>
@@ -14700,9 +14737,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/nsproxy.c linux-3.3.1-vs2.3.3.2/kernel/
                return -EPERM;
  
        *new_nsp = create_new_namespaces(unshare_flags, current,
-diff -NurpP --minimal linux-3.3.1/kernel/pid.c linux-3.3.1-vs2.3.3.2/kernel/pid.c
---- linux-3.3.1/kernel/pid.c   2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/pid.c 2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/pid.c linux-3.4-vs2.3.3.4/kernel/pid.c
+--- linux-3.4/kernel/pid.c     2012-03-19 19:47:30.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/pid.c   2012-05-21 18:15:05.000000000 +0200
 @@ -36,6 +36,7 @@
  #include <linux/pid_namespace.h>
  #include <linux/init_task.h>
@@ -14760,18 +14797,18 @@ diff -NurpP --minimal linux-3.3.1/kernel/pid.c linux-3.3.1-vs2.3.3.2/kernel/pid.
  pid_t pid_vnr(struct pid *pid)
  {
        return pid_nr_ns(pid, current->nsproxy->pid_ns);
-diff -NurpP --minimal linux-3.3.1/kernel/pid_namespace.c linux-3.3.1-vs2.3.3.2/kernel/pid_namespace.c
---- linux-3.3.1/kernel/pid_namespace.c 2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/pid_namespace.c       2012-02-24 03:55:06.000000000 +0100
-@@ -15,6 +15,7 @@
- #include <linux/acct.h>
+diff -NurpP --minimal linux-3.4/kernel/pid_namespace.c linux-3.4-vs2.3.3.4/kernel/pid_namespace.c
+--- linux-3.4/kernel/pid_namespace.c   2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/pid_namespace.c 2012-05-21 18:15:05.000000000 +0200
+@@ -16,6 +16,7 @@
  #include <linux/slab.h>
  #include <linux/proc_fs.h>
+ #include <linux/reboot.h>
 +#include <linux/vserver/global.h>
  
  #define BITS_PER_PAGE         (PAGE_SIZE*8)
  
-@@ -88,6 +89,7 @@ static struct pid_namespace *create_pid_
+@@ -89,6 +90,7 @@ static struct pid_namespace *create_pid_
                goto out_free_map;
  
        kref_init(&ns->kref);
@@ -14779,7 +14816,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/pid_namespace.c linux-3.3.1-vs2.3.3.2/k
        ns->level = level;
        ns->parent = get_pid_ns(parent_pid_ns);
  
-@@ -119,6 +121,7 @@ static void destroy_pid_namespace(struct
+@@ -120,6 +122,7 @@ static void destroy_pid_namespace(struct
  
        for (i = 0; i < PIDMAP_ENTRIES; i++)
                kfree(ns->pidmap[i].page);
@@ -14787,9 +14824,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/pid_namespace.c linux-3.3.1-vs2.3.3.2/k
        kmem_cache_free(pid_ns_cachep, ns);
  }
  
-diff -NurpP --minimal linux-3.3.1/kernel/posix-timers.c linux-3.3.1-vs2.3.3.2/kernel/posix-timers.c
---- linux-3.3.1/kernel/posix-timers.c  2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/posix-timers.c        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/posix-timers.c linux-3.4-vs2.3.3.4/kernel/posix-timers.c
+--- linux-3.4/kernel/posix-timers.c    2012-01-09 16:15:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/posix-timers.c  2012-05-21 18:15:05.000000000 +0200
 @@ -47,6 +47,7 @@
  #include <linux/wait.h>
  #include <linux/workqueue.h>
@@ -14825,9 +14862,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/posix-timers.c linux-3.3.1-vs2.3.3.2/ke
        /* If we failed to send the signal the timer stops. */
        return ret > 0;
  }
-diff -NurpP --minimal linux-3.3.1/kernel/printk.c linux-3.3.1-vs2.3.3.2/kernel/printk.c
---- linux-3.3.1/kernel/printk.c        2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/printk.c      2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/printk.c linux-3.4-vs2.3.3.4/kernel/printk.c
+--- linux-3.4/kernel/printk.c  2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/printk.c        2012-05-21 18:15:05.000000000 +0200
 @@ -41,6 +41,7 @@
  #include <linux/cpu.h>
  #include <linux/notifier.h>
@@ -14836,7 +14873,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/printk.c linux-3.3.1-vs2.3.3.2/kernel/p
  
  #include <asm/uaccess.h>
  
-@@ -314,7 +315,7 @@ static int check_syslog_permissions(int 
+@@ -317,7 +318,7 @@ static int check_syslog_permissions(int 
                return 0;
  
        if (syslog_action_restricted(type)) {
@@ -14845,7 +14882,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/printk.c linux-3.3.1-vs2.3.3.2/kernel/p
                        return 0;
                /* For historical reasons, accept CAP_SYS_ADMIN too, with a warning */
                if (capable(CAP_SYS_ADMIN)) {
-@@ -344,12 +345,9 @@ int do_syslog(int type, char __user *buf
+@@ -347,12 +348,9 @@ int do_syslog(int type, char __user *buf
        if (error)
                return error;
  
@@ -14861,7 +14898,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/printk.c linux-3.3.1-vs2.3.3.2/kernel/p
                error = -EINVAL;
                if (!buf || len < 0)
                        goto out;
-@@ -360,6 +358,16 @@ int do_syslog(int type, char __user *buf
+@@ -363,6 +361,16 @@ int do_syslog(int type, char __user *buf
                        error = -EFAULT;
                        goto out;
                }
@@ -14878,7 +14915,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/printk.c linux-3.3.1-vs2.3.3.2/kernel/p
                error = wait_event_interruptible(log_wait,
                                                        (log_start - log_end));
                if (error)
-@@ -386,16 +394,6 @@ int do_syslog(int type, char __user *buf
+@@ -389,16 +397,6 @@ int do_syslog(int type, char __user *buf
                /* FALL THRU */
        /* Read last kernel messages */
        case SYSLOG_ACTION_READ_ALL:
@@ -14895,9 +14932,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/printk.c linux-3.3.1-vs2.3.3.2/kernel/p
                count = len;
                if (count > log_buf_len)
                        count = log_buf_len;
-diff -NurpP --minimal linux-3.3.1/kernel/ptrace.c linux-3.3.1-vs2.3.3.2/kernel/ptrace.c
---- linux-3.3.1/kernel/ptrace.c        2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/ptrace.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/ptrace.c linux-3.4-vs2.3.3.4/kernel/ptrace.c
+--- linux-3.4/kernel/ptrace.c  2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/ptrace.c        2012-05-21 18:15:05.000000000 +0200
 @@ -22,6 +22,7 @@
  #include <linux/syscalls.h>
  #include <linux/uaccess.h>
@@ -14918,19 +14955,19 @@ diff -NurpP --minimal linux-3.3.1/kernel/ptrace.c linux-3.3.1-vs2.3.3.2/kernel/p
  
        return security_ptrace_access_check(task, mode);
  }
-diff -NurpP --minimal linux-3.3.1/kernel/sched/core.c linux-3.3.1-vs2.3.3.2/kernel/sched/core.c
---- linux-3.3.1/kernel/sched/core.c    2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/sched/core.c  2012-03-19 20:52:10.000000000 +0100
-@@ -71,6 +71,8 @@
- #include <linux/ftrace.h>
+diff -NurpP --minimal linux-3.4/kernel/sched/core.c linux-3.4-vs2.3.3.4/kernel/sched/core.c
+--- linux-3.4/kernel/sched/core.c      2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/sched/core.c    2012-05-21 18:15:05.000000000 +0200
+@@ -72,6 +72,8 @@
  #include <linux/slab.h>
  #include <linux/init_task.h>
+ #include <linux/binfmts.h>
 +#include <linux/vs_sched.h>
 +#include <linux/vs_cvirt.h>
  
+ #include <asm/switch_to.h>
  #include <asm/tlb.h>
- #include <asm/irq_regs.h>
-@@ -2335,9 +2337,17 @@ static void calc_global_nohz(unsigned lo
+@@ -2359,9 +2361,17 @@ static void calc_global_nohz(void)
   */
  void get_avenrun(unsigned long *loads, unsigned long offset, int shift)
  {
@@ -14951,7 +14988,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/core.c linux-3.3.1-vs2.3.3.2/kern
  }
  
  /*
-@@ -2633,14 +2643,17 @@ static inline void task_group_account_fi
+@@ -2665,14 +2675,17 @@ static inline void task_group_account_fi
  void account_user_time(struct task_struct *p, cputime_t cputime,
                       cputime_t cputime_scaled)
  {
@@ -14970,7 +15007,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/core.c linux-3.3.1-vs2.3.3.2/kern
  
        /* Add user time to cpustat. */
        task_group_account_field(p, index, (__force u64) cputime);
-@@ -2687,9 +2700,12 @@ static inline
+@@ -2719,9 +2732,12 @@ static inline
  void __account_system_time(struct task_struct *p, cputime_t cputime,
                        cputime_t cputime_scaled, int index)
  {
@@ -14983,7 +15020,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/core.c linux-3.3.1-vs2.3.3.2/kern
        account_group_system_time(p, cputime);
  
        /* Add system time to cpustat. */
-@@ -3886,7 +3902,7 @@ SYSCALL_DEFINE1(nice, int, increment)
+@@ -3941,7 +3957,7 @@ SYSCALL_DEFINE1(nice, int, increment)
                nice = 19;
  
        if (increment < 0 && !can_nice(current, nice))
@@ -14992,9 +15029,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/core.c linux-3.3.1-vs2.3.3.2/kern
  
        retval = security_task_setnice(current, nice);
        if (retval)
-diff -NurpP --minimal linux-3.3.1/kernel/sched/fair.c linux-3.3.1-vs2.3.3.2/kernel/sched/fair.c
---- linux-3.3.1/kernel/sched/fair.c    2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/sched/fair.c  2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/sched/fair.c linux-3.4-vs2.3.3.4/kernel/sched/fair.c
+--- linux-3.4/kernel/sched/fair.c      2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/sched/fair.c    2012-05-21 18:15:05.000000000 +0200
 @@ -26,6 +26,7 @@
  #include <linux/slab.h>
  #include <linux/profile.h>
@@ -15003,7 +15040,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/fair.c linux-3.3.1-vs2.3.3.2/kern
  
  #include <trace/events/sched.h>
  
-@@ -1126,6 +1127,8 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
+@@ -1111,6 +1112,8 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
                __enqueue_entity(cfs_rq, se);
        se->on_rq = 1;
  
@@ -15012,7 +15049,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/fair.c linux-3.3.1-vs2.3.3.2/kern
        if (cfs_rq->nr_running == 1) {
                list_add_leaf_cfs_rq(cfs_rq);
                check_enqueue_throttle(cfs_rq);
-@@ -1206,6 +1209,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, st
+@@ -1191,6 +1194,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, st
        if (se != cfs_rq->curr)
                __dequeue_entity(cfs_rq, se);
        se->on_rq = 0;
@@ -15021,9 +15058,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/sched/fair.c linux-3.3.1-vs2.3.3.2/kern
        update_cfs_load(cfs_rq, 0);
        account_entity_dequeue(cfs_rq, se);
  
-diff -NurpP --minimal linux-3.3.1/kernel/signal.c linux-3.3.1-vs2.3.3.2/kernel/signal.c
---- linux-3.3.1/kernel/signal.c        2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/signal.c      2012-02-24 04:10:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/signal.c linux-3.4-vs2.3.3.4/kernel/signal.c
+--- linux-3.4/kernel/signal.c  2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/signal.c        2012-05-21 18:15:05.000000000 +0200
 @@ -29,6 +29,8 @@
  #include <linux/pid_namespace.h>
  #include <linux/nsproxy.h>
@@ -15073,7 +15110,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/signal.c linux-3.3.1-vs2.3.3.2/kernel/s
        return security_task_kill(t, info, sig, 0);
  }
  
-@@ -1351,7 +1376,7 @@ int kill_pid_info(int sig, struct siginf
+@@ -1358,7 +1383,7 @@ int kill_pid_info(int sig, struct siginf
        rcu_read_lock();
  retry:
        p = pid_task(pid, PIDTYPE_PID);
@@ -15082,7 +15119,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/signal.c linux-3.3.1-vs2.3.3.2/kernel/s
                error = group_send_sig_info(sig, info, p);
                if (unlikely(error == -ESRCH))
                        /*
-@@ -1401,7 +1426,7 @@ int kill_pid_info_as_cred(int sig, struc
+@@ -1408,7 +1433,7 @@ int kill_pid_info_as_cred(int sig, struc
  
        rcu_read_lock();
        p = pid_task(pid, PIDTYPE_PID);
@@ -15091,7 +15128,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/signal.c linux-3.3.1-vs2.3.3.2/kernel/s
                ret = -ESRCH;
                goto out_unlock;
        }
-@@ -1453,8 +1478,10 @@ static int kill_something_info(int sig, 
+@@ -1460,8 +1485,10 @@ static int kill_something_info(int sig, 
                struct task_struct * p;
  
                for_each_process(p) {
@@ -15104,7 +15141,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/signal.c linux-3.3.1-vs2.3.3.2/kernel/s
                                int err = group_send_sig_info(sig, info, p);
                                ++count;
                                if (err != -EPERM)
-@@ -2290,6 +2317,11 @@ relock:
+@@ -2310,6 +2337,11 @@ relock:
                                !sig_kernel_only(signr))
                        continue;
  
@@ -15116,9 +15153,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/signal.c linux-3.3.1-vs2.3.3.2/kernel/s
                if (sig_kernel_stop(signr)) {
                        /*
                         * The default action is to stop all threads in
-diff -NurpP --minimal linux-3.3.1/kernel/softirq.c linux-3.3.1-vs2.3.3.2/kernel/softirq.c
---- linux-3.3.1/kernel/softirq.c       2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/softirq.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/softirq.c linux-3.4-vs2.3.3.4/kernel/softirq.c
+--- linux-3.4/kernel/softirq.c 2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/softirq.c       2012-05-21 18:15:05.000000000 +0200
 @@ -24,6 +24,7 @@
  #include <linux/ftrace.h>
  #include <linux/smp.h>
@@ -15127,9 +15164,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/softirq.c linux-3.3.1-vs2.3.3.2/kernel/
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/irq.h>
-diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.c
---- linux-3.3.1/kernel/sys.c   2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/sys.c 2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/sys.c linux-3.4-vs2.3.3.4/kernel/sys.c
+--- linux-3.4/kernel/sys.c     2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/sys.c   2012-05-21 18:15:05.000000000 +0200
 @@ -45,6 +45,7 @@
  #include <linux/syscalls.h>
  #include <linux/kprobes.h>
@@ -15177,7 +15214,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.
  /*
   * Reboot system call: for obvious reasons only root may call it,
   * and even root needs to set up some magic numbers in the registers
-@@ -450,6 +460,9 @@ SYSCALL_DEFINE4(reboot, int, magic1, int
+@@ -459,6 +469,9 @@ SYSCALL_DEFINE4(reboot, int, magic1, int
        if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off)
                cmd = LINUX_REBOOT_CMD_HALT;
  
@@ -15187,7 +15224,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.
        mutex_lock(&reboot_mutex);
        switch (cmd) {
        case LINUX_REBOOT_CMD_RESTART:
-@@ -1273,7 +1286,8 @@ SYSCALL_DEFINE2(sethostname, char __user
+@@ -1282,7 +1295,8 @@ SYSCALL_DEFINE2(sethostname, char __user
        int errno;
        char tmp[__NEW_UTS_LEN];
  
@@ -15197,7 +15234,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.
                return -EPERM;
  
        if (len < 0 || len > __NEW_UTS_LEN)
-@@ -1324,7 +1338,8 @@ SYSCALL_DEFINE2(setdomainname, char __us
+@@ -1333,7 +1347,8 @@ SYSCALL_DEFINE2(setdomainname, char __us
        int errno;
        char tmp[__NEW_UTS_LEN];
  
@@ -15207,7 +15244,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.
                return -EPERM;
        if (len < 0 || len > __NEW_UTS_LEN)
                return -EINVAL;
-@@ -1443,7 +1458,7 @@ int do_prlimit(struct task_struct *tsk, 
+@@ -1452,7 +1467,7 @@ int do_prlimit(struct task_struct *tsk, 
                /* Keep the capable check against init_user_ns until
                   cgroups can contain all limits */
                if (new_rlim->rlim_max > rlim->rlim_max &&
@@ -15216,7 +15253,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.
                        retval = -EPERM;
                if (!retval)
                        retval = security_task_setrlimit(tsk->group_leader,
-@@ -1497,7 +1512,8 @@ static int check_prlimit_permission(stru
+@@ -1506,7 +1521,8 @@ static int check_prlimit_permission(stru
             cred->gid == tcred->sgid &&
             cred->gid == tcred->gid))
                return 0;
@@ -15226,10 +15263,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/sys.c linux-3.3.1-vs2.3.3.2/kernel/sys.
                return 0;
  
        return -EPERM;
-diff -NurpP --minimal linux-3.3.1/kernel/sysctl.c linux-3.3.1-vs2.3.3.2/kernel/sysctl.c
---- linux-3.3.1/kernel/sysctl.c        2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/sysctl.c      2012-02-24 03:55:06.000000000 +0100
-@@ -76,6 +76,7 @@
+diff -NurpP --minimal linux-3.4/kernel/sysctl.c linux-3.4-vs2.3.3.4/kernel/sysctl.c
+--- linux-3.4/kernel/sysctl.c  2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/sysctl.c        2012-05-21 18:15:05.000000000 +0200
+@@ -81,6 +81,7 @@
  #if defined(CONFIG_PROVE_LOCKING) || defined(CONFIG_LOCK_STAT)
  #include <linux/lockdep.h>
  #endif
@@ -15237,7 +15274,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/sysctl.c linux-3.3.1-vs2.3.3.2/kernel/s
  #ifdef CONFIG_CHR_DEV_SG
  #include <scsi/sg.h>
  #endif
-@@ -572,6 +573,13 @@ static struct ctl_table kern_table[] = {
+@@ -562,6 +563,13 @@ static struct ctl_table kern_table[] = {
                .proc_handler   = proc_dostring,
        },
  #endif
@@ -15251,9 +15288,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/sysctl.c linux-3.3.1-vs2.3.3.2/kernel/s
  #ifdef CONFIG_CHR_DEV_SG
        {
                .procname       = "sg-big-buff",
-diff -NurpP --minimal linux-3.3.1/kernel/sysctl_binary.c linux-3.3.1-vs2.3.3.2/kernel/sysctl_binary.c
---- linux-3.3.1/kernel/sysctl_binary.c 2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/sysctl_binary.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/sysctl_binary.c linux-3.4-vs2.3.3.4/kernel/sysctl_binary.c
+--- linux-3.4/kernel/sysctl_binary.c   2012-01-09 16:15:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/sysctl_binary.c 2012-05-21 18:15:05.000000000 +0200
 @@ -73,6 +73,7 @@ static const struct bin_table bin_kern_t
  
        { CTL_INT,      KERN_PANIC,                     "panic" },
@@ -15262,20 +15299,20 @@ diff -NurpP --minimal linux-3.3.1/kernel/sysctl_binary.c linux-3.3.1-vs2.3.3.2/k
  
        { CTL_STR,      KERN_SPARC_REBOOT,              "reboot-cmd" },
        { CTL_INT,      KERN_CTLALTDEL,                 "ctrl-alt-del" },
-diff -NurpP --minimal linux-3.3.1/kernel/time/timekeeping.c linux-3.3.1-vs2.3.3.2/kernel/time/timekeeping.c
---- linux-3.3.1/kernel/time/timekeeping.c      2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/time/timekeeping.c    2012-02-24 03:55:06.000000000 +0100
-@@ -233,6 +233,7 @@ void getnstimeofday(struct timespec *ts)
-       } while (read_seqretry(&xtime_lock, seq));
+diff -NurpP --minimal linux-3.4/kernel/time/timekeeping.c linux-3.4-vs2.3.3.4/kernel/time/timekeeping.c
+--- linux-3.4/kernel/time/timekeeping.c        2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/time/timekeeping.c      2012-05-21 18:15:05.000000000 +0200
+@@ -239,6 +239,7 @@ void getnstimeofday(struct timespec *ts)
+       } while (read_seqretry(&timekeeper.lock, seq));
  
        timespec_add_ns(ts, nsecs);
 +      vx_adjust_timespec(ts);
  }
  
  EXPORT_SYMBOL(getnstimeofday);
-diff -NurpP --minimal linux-3.3.1/kernel/time.c linux-3.3.1-vs2.3.3.2/kernel/time.c
---- linux-3.3.1/kernel/time.c  2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/time.c        2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/time.c linux-3.4-vs2.3.3.4/kernel/time.c
+--- linux-3.4/kernel/time.c    2012-05-21 18:07:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/kernel/time.c  2012-05-21 18:15:05.000000000 +0200
 @@ -92,7 +92,7 @@ SYSCALL_DEFINE1(stime, time_t __user *, 
        if (err)
                return err;
@@ -15285,18 +15322,18 @@ diff -NurpP --minimal linux-3.3.1/kernel/time.c linux-3.3.1-vs2.3.3.2/kernel/tim
        return 0;
  }
  
-@@ -177,7 +177,7 @@ int do_sys_settimeofday(const struct tim
-               /* SMP safe, again the code in arch/foo/time.c should
-                * globally block out interrupts when it runs.
-                */
+@@ -172,7 +172,7 @@ int do_sys_settimeofday(const struct tim
+               }
+       }
+       if (tv)
 -              return do_settimeofday(tv);
 +              return vx_settimeofday(tv);
-       }
        return 0;
  }
-diff -NurpP --minimal linux-3.3.1/kernel/timer.c linux-3.3.1-vs2.3.3.2/kernel/timer.c
---- linux-3.3.1/kernel/timer.c 2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/timer.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/timer.c linux-3.4-vs2.3.3.4/kernel/timer.c
+--- linux-3.4/kernel/timer.c   2012-03-19 19:47:30.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/timer.c 2012-05-21 18:15:05.000000000 +0200
 @@ -40,6 +40,10 @@
  #include <linux/irq_work.h>
  #include <linux/sched.h>
@@ -15346,9 +15383,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/timer.c linux-3.3.1-vs2.3.3.2/kernel/ti
  SYSCALL_DEFINE0(getuid)
  {
        /* Only we change this so SMP safe */
-diff -NurpP --minimal linux-3.3.1/kernel/user_namespace.c linux-3.3.1-vs2.3.3.2/kernel/user_namespace.c
---- linux-3.3.1/kernel/user_namespace.c        2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/user_namespace.c      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/user_namespace.c linux-3.4-vs2.3.3.4/kernel/user_namespace.c
+--- linux-3.4/kernel/user_namespace.c  2012-01-09 16:15:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/user_namespace.c        2012-05-21 18:15:05.000000000 +0200
 @@ -11,6 +11,7 @@
  #include <linux/user_namespace.h>
  #include <linux/highuid.h>
@@ -15374,9 +15411,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/user_namespace.c linux-3.3.1-vs2.3.3.2/
        INIT_WORK(&ns->destroyer, free_user_ns_work);
        schedule_work(&ns->destroyer);
  }
-diff -NurpP --minimal linux-3.3.1/kernel/utsname.c linux-3.3.1-vs2.3.3.2/kernel/utsname.c
---- linux-3.3.1/kernel/utsname.c       2012-01-09 16:15:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/utsname.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/utsname.c linux-3.4-vs2.3.3.4/kernel/utsname.c
+--- linux-3.4/kernel/utsname.c 2012-01-09 16:15:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/utsname.c       2012-05-21 18:15:05.000000000 +0200
 @@ -16,14 +16,17 @@
  #include <linux/slab.h>
  #include <linux/user_namespace.h>
@@ -15445,9 +15482,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/utsname.c linux-3.3.1-vs2.3.3.2/kernel/
        kfree(ns);
  }
  
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/Kconfig linux-3.3.1-vs2.3.3.2/kernel/vserver/Kconfig
---- linux-3.3.1/kernel/vserver/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/Kconfig       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/Kconfig linux-3.4-vs2.3.3.4/kernel/vserver/Kconfig
+--- linux-3.4/kernel/vserver/Kconfig   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/Kconfig 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,224 @@
 +#
 +# Linux VServer configuration
@@ -15673,9 +15710,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/Kconfig linux-3.3.1-vs2.3.3.2/k
 +      bool
 +      default n
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/Makefile linux-3.3.1-vs2.3.3.2/kernel/vserver/Makefile
---- linux-3.3.1/kernel/vserver/Makefile        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/Makefile      2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/Makefile linux-3.4-vs2.3.3.4/kernel/vserver/Makefile
+--- linux-3.4/kernel/vserver/Makefile  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/Makefile        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,18 @@
 +#
 +# Makefile for the Linux vserver routines.
@@ -15695,9 +15732,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/Makefile linux-3.3.1-vs2.3.3.2/
 +vserver-$(CONFIG_VSERVER_MONITOR) += monitor.o
 +vserver-$(CONFIG_VSERVER_DEVICE) += device.o
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/cacct.c linux-3.3.1-vs2.3.3.2/kernel/vserver/cacct.c
---- linux-3.3.1/kernel/vserver/cacct.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/cacct.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/cacct.c linux-3.4-vs2.3.3.4/kernel/vserver/cacct.c
+--- linux-3.4/kernel/vserver/cacct.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/cacct.c 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,42 @@
 +/*
 + *  linux/kernel/vserver/cacct.c
@@ -15741,9 +15778,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cacct.c linux-3.3.1-vs2.3.3.2/k
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/cacct_init.h linux-3.3.1-vs2.3.3.2/kernel/vserver/cacct_init.h
---- linux-3.3.1/kernel/vserver/cacct_init.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/cacct_init.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/cacct_init.h linux-3.4-vs2.3.3.4/kernel/vserver/cacct_init.h
+--- linux-3.4/kernel/vserver/cacct_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/cacct_init.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,25 @@
 +
 +
@@ -15770,9 +15807,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cacct_init.h linux-3.3.1-vs2.3.
 +      return;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/cacct_proc.h linux-3.3.1-vs2.3.3.2/kernel/vserver/cacct_proc.h
---- linux-3.3.1/kernel/vserver/cacct_proc.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/cacct_proc.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/cacct_proc.h linux-3.4-vs2.3.3.4/kernel/vserver/cacct_proc.h
+--- linux-3.4/kernel/vserver/cacct_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/cacct_proc.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,53 @@
 +#ifndef _VX_CACCT_PROC_H
 +#define _VX_CACCT_PROC_H
@@ -15827,9 +15864,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cacct_proc.h linux-3.3.1-vs2.3.
 +}
 +
 +#endif        /* _VX_CACCT_PROC_H */
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/context.c linux-3.3.1-vs2.3.3.2/kernel/vserver/context.c
---- linux-3.3.1/kernel/vserver/context.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/context.c     2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/context.c linux-3.4-vs2.3.3.4/kernel/vserver/context.c
+--- linux-3.4/kernel/vserver/context.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/context.c       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,1107 @@
 +/*
 + *  linux/kernel/vserver/context.c
@@ -16394,7 +16431,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/context.c linux-3.3.1-vs2.3.3.2
 +      /* no rcu_read_lock() because of spin_lock() */
 +      spin_lock(&files->file_lock);
 +      fdt = files_fdtable(files);
-+      bptr = fdt->open_fds->fds_bits;
++      bptr = fdt->open_fds;
 +      count = fdt->max_fds / (sizeof(unsigned long) * 8);
 +      for (total = 0; count > 0; count--) {
 +              if (*bptr)
@@ -16938,10 +16975,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/context.c linux-3.3.1-vs2.3.3.2
 +
 +EXPORT_SYMBOL_GPL(free_vx_info);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt.c linux-3.3.1-vs2.3.3.2/kernel/vserver/cvirt.c
---- linux-3.3.1/kernel/vserver/cvirt.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/cvirt.c       2012-02-24 03:55:06.000000000 +0100
-@@ -0,0 +1,303 @@
+diff -NurpP --minimal linux-3.4/kernel/vserver/cvirt.c linux-3.4-vs2.3.3.4/kernel/vserver/cvirt.c
+--- linux-3.4/kernel/vserver/cvirt.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/cvirt.c 2012-05-21 18:15:05.000000000 +0200
+@@ -0,0 +1,313 @@
 +/*
 + *  linux/kernel/vserver/cvirt.c
 + *
@@ -16964,6 +17001,16 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt.c linux-3.3.1-vs2.3.3.2/k
 +#include <asm/uaccess.h>
 +
 +
++void vx_vsi_boottime(struct timespec *boottime)
++{
++      struct vx_info *vxi = current_vx_info();
++
++      set_normalized_timespec(boottime,
++              boottime->tv_sec + vxi->cvirt.bias_uptime.tv_sec,
++              boottime->tv_nsec + vxi->cvirt.bias_uptime.tv_nsec);
++      return;
++}
++
 +void vx_vsi_uptime(struct timespec *uptime, struct timespec *idle)
 +{
 +      struct vx_info *vxi = current_vx_info();
@@ -17245,9 +17292,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt.c linux-3.3.1-vs2.3.3.2/k
 +
 +#endif
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_init.h linux-3.3.1-vs2.3.3.2/kernel/vserver/cvirt_init.h
---- linux-3.3.1/kernel/vserver/cvirt_init.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/cvirt_init.h  2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/cvirt_init.h linux-3.4-vs2.3.3.4/kernel/vserver/cvirt_init.h
+--- linux-3.4/kernel/vserver/cvirt_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/cvirt_init.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,70 @@
 +
 +
@@ -17319,10 +17366,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_init.h linux-3.3.1-vs2.3.
 +      return;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_proc.h linux-3.3.1-vs2.3.3.2/kernel/vserver/cvirt_proc.h
---- linux-3.3.1/kernel/vserver/cvirt_proc.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/cvirt_proc.h  2012-02-24 17:26:10.000000000 +0100
-@@ -0,0 +1,137 @@
+diff -NurpP --minimal linux-3.4/kernel/vserver/cvirt_proc.h linux-3.4-vs2.3.3.4/kernel/vserver/cvirt_proc.h
+--- linux-3.4/kernel/vserver/cvirt_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/cvirt_proc.h    2012-05-21 18:15:05.000000000 +0200
+@@ -0,0 +1,123 @@
 +#ifndef _VX_CVIRT_PROC_H
 +#define _VX_CVIRT_PROC_H
 +
@@ -17332,6 +17379,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_proc.h linux-3.3.1-vs2.3.
 +#include <linux/utsname.h>
 +#include <linux/ipc.h>
 +
++extern int vx_info_mnt_namespace(struct mnt_namespace *, char *);
 +
 +static inline
 +int vx_info_proc_nsproxy(struct nsproxy *nsproxy, char *buffer)
@@ -17339,8 +17387,6 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_proc.h linux-3.3.1-vs2.3.
 +      struct mnt_namespace *ns;
 +      struct uts_namespace *uts;
 +      struct ipc_namespace *ipc;
-+      struct path path;
-+      char *pstr, *root;
 +      int length = 0;
 +
 +      if (!nsproxy)
@@ -17355,21 +17401,8 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_proc.h linux-3.3.1-vs2.3.
 +      if (!ns)
 +              goto skip_ns;
 +
-+/*    FIXME: move to fs?
-+
-+      pstr = kmalloc(PATH_MAX, GFP_KERNEL);
-+      if (!pstr)
-+              goto skip_ns;
++      length += vx_info_mnt_namespace(ns, buffer + length);
 +
-+      path.mnt = ns->root;
-+      path.dentry = ns->root->mnt_root;
-+      root = d_path(&path, pstr, PATH_MAX - 2);
-+      length += sprintf(buffer + length,
-+              "Namespace:\t%p [#%u]\n"
-+              "RootPath:\t%s\n",
-+              ns, atomic_read(&ns->count),
-+              root);
-+      kfree(pstr); */
 +skip_ns:
 +
 +      uts = nsproxy->uts_ns;
@@ -17460,9 +17493,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/cvirt_proc.h linux-3.3.1-vs2.3.
 +}
 +
 +#endif        /* _VX_CVIRT_PROC_H */
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/debug.c linux-3.3.1-vs2.3.3.2/kernel/vserver/debug.c
---- linux-3.3.1/kernel/vserver/debug.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/debug.c       2012-02-24 03:55:06.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/debug.c linux-3.4-vs2.3.3.4/kernel/vserver/debug.c
+--- linux-3.4/kernel/vserver/debug.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/debug.c 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,32 @@
 +/*
 + *  kernel/vserver/debug.c
@@ -17496,9 +17529,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/debug.c linux-3.3.1-vs2.3.3.2/k
 +
 +EXPORT_SYMBOL_GPL(dump_vx_info);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/device.c linux-3.3.1-vs2.3.3.2/kernel/vserver/device.c
---- linux-3.3.1/kernel/vserver/device.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/device.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/device.c linux-3.4-vs2.3.3.4/kernel/vserver/device.c
+--- linux-3.4/kernel/vserver/device.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/device.c        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,443 @@
 +/*
 + *  linux/kernel/vserver/device.c
@@ -17943,9 +17976,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/device.c linux-3.3.1-vs2.3.3.2/
 +#endif        /* CONFIG_COMPAT */
 +
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/dlimit.c linux-3.3.1-vs2.3.3.2/kernel/vserver/dlimit.c
---- linux-3.3.1/kernel/vserver/dlimit.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/dlimit.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/dlimit.c linux-3.4-vs2.3.3.4/kernel/vserver/dlimit.c
+--- linux-3.4/kernel/vserver/dlimit.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/dlimit.c        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,531 @@
 +/*
 + *  linux/kernel/vserver/dlimit.c
@@ -18478,10 +18511,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/dlimit.c linux-3.3.1-vs2.3.3.2/
 +EXPORT_SYMBOL_GPL(locate_dl_info);
 +EXPORT_SYMBOL_GPL(rcu_free_dl_info);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/helper.c linux-3.3.1-vs2.3.3.2/kernel/vserver/helper.c
---- linux-3.3.1/kernel/vserver/helper.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/helper.c      2012-02-24 03:55:07.000000000 +0100
-@@ -0,0 +1,223 @@
+diff -NurpP --minimal linux-3.4/kernel/vserver/helper.c linux-3.4-vs2.3.3.4/kernel/vserver/helper.c
+--- linux-3.4/kernel/vserver/helper.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/helper.c        2012-05-21 18:15:23.000000000 +0200
+@@ -0,0 +1,228 @@
 +/*
 + *  linux/kernel/vserver/helper.c
 + *
@@ -18502,14 +18535,19 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/helper.c linux-3.3.1-vs2.3.3.2/
 +
 +char vshelper_path[255] = "/sbin/vshelper";
 +
++static int vshelper_init(struct subprocess_info *info, struct cred *new_cred)
++{
++      current->flags &= ~PF_THREAD_BOUND;
++      return 0;
++}
 +
 +static int do_vshelper(char *name, char *argv[], char *envp[], int sync)
 +{
 +      int ret;
 +
-+      if ((ret = call_usermodehelper(name, argv, envp, sync))) {
-+              printk( KERN_WARNING
-+                      "%s: (%s %s) returned %s with %d\n",
++      if ((ret = call_usermodehelper_fns(name, argv, envp, sync,
++              vshelper_init, NULL, NULL))) {
++              printk(KERN_WARNING "%s: (%s %s) returned %s with %d\n",
 +                      name, argv[1], argv[2],
 +                      sync ? "sync" : "async", ret);
 +      }
@@ -18705,9 +18743,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/helper.c linux-3.3.1-vs2.3.3.2/
 +      return do_vshelper(vshelper_path, argv, envp, 1);
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/history.c linux-3.3.1-vs2.3.3.2/kernel/vserver/history.c
---- linux-3.3.1/kernel/vserver/history.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/history.c     2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/history.c linux-3.4-vs2.3.3.4/kernel/vserver/history.c
+--- linux-3.4/kernel/vserver/history.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/history.c       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,258 @@
 +/*
 + *  kernel/vserver/history.c
@@ -18967,9 +19005,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/history.c linux-3.3.1-vs2.3.3.2
 +
 +#endif        /* CONFIG_COMPAT */
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/inet.c linux-3.3.1-vs2.3.3.2/kernel/vserver/inet.c
---- linux-3.3.1/kernel/vserver/inet.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/inet.c        2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/inet.c linux-3.4-vs2.3.3.4/kernel/vserver/inet.c
+--- linux-3.4/kernel/vserver/inet.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/inet.c  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,226 @@
 +
 +#include <linux/in.h>
@@ -19197,9 +19235,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/inet.c linux-3.3.1-vs2.3.3.2/ke
 +
 +EXPORT_SYMBOL_GPL(ip_v4_find_src);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/init.c linux-3.3.1-vs2.3.3.2/kernel/vserver/init.c
---- linux-3.3.1/kernel/vserver/init.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/init.c        2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/init.c linux-3.4-vs2.3.3.4/kernel/vserver/init.c
+--- linux-3.4/kernel/vserver/init.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/init.c  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,45 @@
 +/*
 + *  linux/kernel/init.c
@@ -19246,9 +19284,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/init.c linux-3.3.1-vs2.3.3.2/ke
 +module_init(init_vserver);
 +module_exit(exit_vserver);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/inode.c linux-3.3.1-vs2.3.3.2/kernel/vserver/inode.c
---- linux-3.3.1/kernel/vserver/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/inode.c       2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/inode.c linux-3.4-vs2.3.3.4/kernel/vserver/inode.c
+--- linux-3.4/kernel/vserver/inode.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/inode.c 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,437 @@
 +/*
 + *  linux/kernel/vserver/inode.c
@@ -19687,9 +19725,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/inode.c linux-3.3.1-vs2.3.3.2/k
 +
 +#endif        /* CONFIG_PROPAGATE */
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/limit.c linux-3.3.1-vs2.3.3.2/kernel/vserver/limit.c
---- linux-3.3.1/kernel/vserver/limit.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/limit.c       2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/limit.c linux-3.4-vs2.3.3.4/kernel/vserver/limit.c
+--- linux-3.4/kernel/vserver/limit.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/limit.c 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,330 @@
 +/*
 + *  linux/kernel/vserver/limit.c
@@ -20021,9 +20059,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/limit.c linux-3.3.1-vs2.3.3.2/k
 +#endif
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/limit_init.h linux-3.3.1-vs2.3.3.2/kernel/vserver/limit_init.h
---- linux-3.3.1/kernel/vserver/limit_init.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/limit_init.h  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/limit_init.h linux-3.4-vs2.3.3.4/kernel/vserver/limit_init.h
+--- linux-3.4/kernel/vserver/limit_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/limit_init.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,31 @@
 +
 +
@@ -20056,9 +20094,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/limit_init.h linux-3.3.1-vs2.3.
 +      }
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/limit_proc.h linux-3.3.1-vs2.3.3.2/kernel/vserver/limit_proc.h
---- linux-3.3.1/kernel/vserver/limit_proc.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/limit_proc.h  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/limit_proc.h linux-3.4-vs2.3.3.4/kernel/vserver/limit_proc.h
+--- linux-3.4/kernel/vserver/limit_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/limit_proc.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,57 @@
 +#ifndef _VX_LIMIT_PROC_H
 +#define _VX_LIMIT_PROC_H
@@ -20117,9 +20155,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/limit_proc.h linux-3.3.1-vs2.3.
 +#endif        /* _VX_LIMIT_PROC_H */
 +
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/network.c linux-3.3.1-vs2.3.3.2/kernel/vserver/network.c
---- linux-3.3.1/kernel/vserver/network.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/network.c     2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/network.c linux-3.4-vs2.3.3.4/kernel/vserver/network.c
+--- linux-3.4/kernel/vserver/network.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/network.c       2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,912 @@
 +/*
 + *  linux/kernel/vserver/network.c
@@ -21033,9 +21071,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/network.c linux-3.3.1-vs2.3.3.2
 +EXPORT_SYMBOL_GPL(free_nx_info);
 +EXPORT_SYMBOL_GPL(unhash_nx_info);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/proc.c linux-3.3.1-vs2.3.3.2/kernel/vserver/proc.c
---- linux-3.3.1/kernel/vserver/proc.c  1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/proc.c        2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/proc.c linux-3.4-vs2.3.3.4/kernel/vserver/proc.c
+--- linux-3.4/kernel/vserver/proc.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/proc.c  2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,1103 @@
 +/*
 + *  linux/kernel/vserver/proc.c
@@ -22140,10 +22178,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/proc.c linux-3.3.1-vs2.3.3.2/ke
 +      return buffer - orig;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched.c linux-3.3.1-vs2.3.3.2/kernel/vserver/sched.c
---- linux-3.3.1/kernel/vserver/sched.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/sched.c       2012-02-24 03:55:07.000000000 +0100
-@@ -0,0 +1,82 @@
+diff -NurpP --minimal linux-3.4/kernel/vserver/sched.c linux-3.4-vs2.3.3.4/kernel/vserver/sched.c
+--- linux-3.4/kernel/vserver/sched.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/sched.c 2012-05-21 18:25:11.000000000 +0200
+@@ -0,0 +1,83 @@
 +/*
 + *  linux/kernel/vserver/sched.c
 + *
@@ -22161,6 +22199,7 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched.c linux-3.3.1-vs2.3.3.2/k
 +
 +#include <linux/vs_context.h>
 +#include <linux/vs_sched.h>
++#include <linux/cpumask.h>
 +#include <linux/vserver/sched_cmd.h>
 +
 +#include <asm/uaccess.h>
@@ -22183,10 +22222,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched.c linux-3.3.1-vs2.3.3.2/k
 +
 +      if (data->cpu_id != ~0) {
 +              vxi->sched.update = cpumask_of_cpu(data->cpu_id);
-+              cpus_and(vxi->sched.update, cpu_online_map,
-+                      vxi->sched.update);
++              cpumask_and(&vxi->sched.update, &vxi->sched.update,
++                      cpu_online_mask);
 +      } else
-+              vxi->sched.update = cpu_online_map;
++              cpumask_copy(&vxi->sched.update, cpu_online_mask);
 +
 +      for_each_cpu_mask(cpu, vxi->sched.update)
 +              vx_update_sched_param(&vxi->sched,
@@ -22226,9 +22265,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched.c linux-3.3.1-vs2.3.3.2/k
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched_init.h linux-3.3.1-vs2.3.3.2/kernel/vserver/sched_init.h
---- linux-3.3.1/kernel/vserver/sched_init.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/sched_init.h  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/sched_init.h linux-3.4-vs2.3.3.4/kernel/vserver/sched_init.h
+--- linux-3.4/kernel/vserver/sched_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/sched_init.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,27 @@
 +
 +static inline void vx_info_init_sched(struct _vx_sched *sched)
@@ -22257,9 +22296,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched_init.h linux-3.3.1-vs2.3.
 +{
 +      return;
 +}
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched_proc.h linux-3.3.1-vs2.3.3.2/kernel/vserver/sched_proc.h
---- linux-3.3.1/kernel/vserver/sched_proc.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/sched_proc.h  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/sched_proc.h linux-3.4-vs2.3.3.4/kernel/vserver/sched_proc.h
+--- linux-3.4/kernel/vserver/sched_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/sched_proc.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,32 @@
 +#ifndef _VX_SCHED_PROC_H
 +#define _VX_SCHED_PROC_H
@@ -22293,9 +22332,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/sched_proc.h linux-3.3.1-vs2.3.
 +}
 +
 +#endif        /* _VX_SCHED_PROC_H */
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/signal.c linux-3.3.1-vs2.3.3.2/kernel/vserver/signal.c
---- linux-3.3.1/kernel/vserver/signal.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/signal.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/signal.c linux-3.4-vs2.3.3.4/kernel/vserver/signal.c
+--- linux-3.4/kernel/vserver/signal.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/signal.c        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,134 @@
 +/*
 + *  linux/kernel/vserver/signal.c
@@ -22431,9 +22470,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/signal.c linux-3.3.1-vs2.3.3.2/
 +      return ret;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/space.c linux-3.3.1-vs2.3.3.2/kernel/vserver/space.c
---- linux-3.3.1/kernel/vserver/space.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/space.c       2012-02-24 17:01:40.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/space.c linux-3.4-vs2.3.3.4/kernel/vserver/space.c
+--- linux-3.4/kernel/vserver/space.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/space.c 2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,436 @@
 +/*
 + *  linux/kernel/vserver/space.c
@@ -22871,9 +22910,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/space.c linux-3.3.1-vs2.3.3.2/k
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/switch.c linux-3.3.1-vs2.3.3.2/kernel/vserver/switch.c
---- linux-3.3.1/kernel/vserver/switch.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/switch.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/switch.c linux-3.4-vs2.3.3.4/kernel/vserver/switch.c
+--- linux-3.4/kernel/vserver/switch.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/switch.c        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,556 @@
 +/*
 + *  linux/kernel/vserver/switch.c
@@ -23431,9 +23470,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/switch.c linux-3.3.1-vs2.3.3.2/
 +}
 +
 +#endif        /* CONFIG_COMPAT */
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/sysctl.c linux-3.3.1-vs2.3.3.2/kernel/vserver/sysctl.c
---- linux-3.3.1/kernel/vserver/sysctl.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/sysctl.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/sysctl.c linux-3.4-vs2.3.3.4/kernel/vserver/sysctl.c
+--- linux-3.4/kernel/vserver/sysctl.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/sysctl.c        2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,247 @@
 +/*
 + *  kernel/vserver/sysctl.c
@@ -23682,9 +23721,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/sysctl.c linux-3.3.1-vs2.3.3.2/
 +EXPORT_SYMBOL_GPL(vs_debug_perm);
 +EXPORT_SYMBOL_GPL(vs_debug_misc);
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/tag.c linux-3.3.1-vs2.3.3.2/kernel/vserver/tag.c
---- linux-3.3.1/kernel/vserver/tag.c   1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/tag.c 2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/tag.c linux-3.4-vs2.3.3.4/kernel/vserver/tag.c
+--- linux-3.4/kernel/vserver/tag.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/tag.c   2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,63 @@
 +/*
 + *  linux/kernel/vserver/tag.c
@@ -23749,9 +23788,9 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/tag.c linux-3.3.1-vs2.3.3.2/ker
 +}
 +
 +
-diff -NurpP --minimal linux-3.3.1/kernel/vserver/vci_config.h linux-3.3.1-vs2.3.3.2/kernel/vserver/vci_config.h
---- linux-3.3.1/kernel/vserver/vci_config.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/kernel/vserver/vci_config.h  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/kernel/vserver/vci_config.h linux-3.4-vs2.3.3.4/kernel/vserver/vci_config.h
+--- linux-3.4/kernel/vserver/vci_config.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/kernel/vserver/vci_config.h    2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,76 @@
 +
 +/*  interface version */
@@ -23829,10 +23868,10 @@ diff -NurpP --minimal linux-3.3.1/kernel/vserver/vci_config.h linux-3.3.1-vs2.3.
 +      0;
 +}
 +
-diff -NurpP --minimal linux-3.3.1/mm/memcontrol.c linux-3.3.1-vs2.3.3.2/mm/memcontrol.c
---- linux-3.3.1/mm/memcontrol.c        2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/mm/memcontrol.c      2012-04-03 03:02:13.000000000 +0200
-@@ -839,6 +839,31 @@ struct mem_cgroup *mem_cgroup_from_task(
+diff -NurpP --minimal linux-3.4/mm/memcontrol.c linux-3.4-vs2.3.3.4/mm/memcontrol.c
+--- linux-3.4/mm/memcontrol.c  2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/memcontrol.c        2012-05-21 18:15:05.000000000 +0200
+@@ -846,6 +846,31 @@ struct mem_cgroup *mem_cgroup_from_task(
                                struct mem_cgroup, css);
  }
  
@@ -23864,19 +23903,19 @@ diff -NurpP --minimal linux-3.3.1/mm/memcontrol.c linux-3.3.1-vs2.3.3.2/mm/memco
  struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm)
  {
        struct mem_cgroup *memcg = NULL;
-diff -NurpP --minimal linux-3.3.1/mm/oom_kill.c linux-3.3.1-vs2.3.3.2/mm/oom_kill.c
---- linux-3.3.1/mm/oom_kill.c  2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/mm/oom_kill.c        2012-02-24 04:15:27.000000000 +0100
-@@ -34,6 +34,8 @@
- #include <linux/ptrace.h>
+diff -NurpP --minimal linux-3.4/mm/oom_kill.c linux-3.4-vs2.3.3.4/mm/oom_kill.c
+--- linux-3.4/mm/oom_kill.c    2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/oom_kill.c  2012-05-21 18:15:05.000000000 +0200
+@@ -35,6 +35,8 @@
  #include <linux/freezer.h>
  #include <linux/ftrace.h>
+ #include <linux/ratelimit.h>
 +#include <linux/reboot.h>
 +#include <linux/vs_context.h>
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/oom.h>
-@@ -154,11 +156,18 @@ struct task_struct *find_lock_task_mm(st
+@@ -155,11 +157,18 @@ struct task_struct *find_lock_task_mm(st
  static bool oom_unkillable_task(struct task_struct *p,
                const struct mem_cgroup *memcg, const nodemask_t *nodemask)
  {
@@ -23896,19 +23935,8 @@ diff -NurpP --minimal linux-3.3.1/mm/oom_kill.c linux-3.3.1-vs2.3.3.2/mm/oom_kil
        /* When mem_cgroup_out_of_memory() and p is not member of the group */
        if (memcg && !task_in_mem_cgroup(p, memcg))
                return true;
-@@ -446,8 +455,8 @@ static int oom_kill_task(struct task_str
-       /* mm cannot be safely dereferenced after task_unlock(p) */
-       mm = p->mm;
--      pr_err("Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB\n",
--              task_pid_nr(p), p->comm, K(p->mm->total_vm),
-+      pr_err("Killed process %d:#%u (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB\n",
-+              task_pid_nr(p), p->xid, p->comm, K(p->mm->total_vm),
-               K(get_mm_counter(p->mm, MM_ANONPAGES)),
-               K(get_mm_counter(p->mm, MM_FILEPAGES)));
-       task_unlock(p);
-@@ -505,8 +514,8 @@ static int oom_kill_process(struct task_
-       }
+@@ -462,8 +471,8 @@ static void oom_kill_process(struct task
+               dump_header(p, gfp_mask, order, memcg, nodemask);
  
        task_lock(p);
 -      pr_err("%s: Kill process %d (%s) score %d or sacrifice child\n",
@@ -23918,7 +23946,18 @@ diff -NurpP --minimal linux-3.3.1/mm/oom_kill.c linux-3.3.1-vs2.3.3.2/mm/oom_kil
        task_unlock(p);
  
        /*
-@@ -607,6 +616,8 @@ int unregister_oom_notifier(struct notif
+@@ -496,8 +505,8 @@ static void oom_kill_process(struct task
+       /* mm cannot safely be dereferenced after task_unlock(victim) */
+       mm = victim->mm;
+-      pr_err("Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB\n",
+-              task_pid_nr(victim), victim->comm, K(victim->mm->total_vm),
++      pr_err("Killed process %d:#%u (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB\n",
++              task_pid_nr(victim), victim->xid, victim->comm, K(victim->mm->total_vm),
+               K(get_mm_counter(victim->mm, MM_ANONPAGES)),
+               K(get_mm_counter(victim->mm, MM_FILEPAGES)));
+       task_unlock(victim);
+@@ -596,6 +605,8 @@ int unregister_oom_notifier(struct notif
  }
  EXPORT_SYMBOL_GPL(unregister_oom_notifier);
  
@@ -23927,7 +23966,7 @@ diff -NurpP --minimal linux-3.3.1/mm/oom_kill.c linux-3.3.1-vs2.3.3.2/mm/oom_kil
  /*
   * Try to acquire the OOM killer lock for the zones in zonelist.  Returns zero
   * if a parallel OOM killing is already taking place that includes a zone in
-@@ -765,7 +776,12 @@ retry:
+@@ -747,7 +758,12 @@ void out_of_memory(struct zonelist *zone
        if (!p) {
                dump_header(NULL, gfp_mask, order, NULL, mpol_mask);
                read_unlock(&tasklist_lock);
@@ -23939,11 +23978,11 @@ diff -NurpP --minimal linux-3.3.1/mm/oom_kill.c linux-3.3.1-vs2.3.3.2/mm/oom_kil
 +              else
 +                      panic("Out of memory and no killable processes...\n");
        }
-       if (oom_kill_process(p, gfp_mask, order, points, totalpages, NULL,
-diff -NurpP --minimal linux-3.3.1/mm/page_alloc.c linux-3.3.1-vs2.3.3.2/mm/page_alloc.c
---- linux-3.3.1/mm/page_alloc.c        2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/mm/page_alloc.c      2012-03-19 20:52:10.000000000 +0100
+       if (PTR_ERR(p) != -1UL) {
+               oom_kill_process(p, gfp_mask, order, points, totalpages, NULL,
+diff -NurpP --minimal linux-3.4/mm/page_alloc.c linux-3.4-vs2.3.3.4/mm/page_alloc.c
+--- linux-3.4/mm/page_alloc.c  2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/page_alloc.c        2012-05-21 18:15:05.000000000 +0200
 @@ -58,6 +58,8 @@
  #include <linux/memcontrol.h>
  #include <linux/prefetch.h>
@@ -23953,7 +23992,7 @@ diff -NurpP --minimal linux-3.3.1/mm/page_alloc.c linux-3.3.1-vs2.3.3.2/mm/page_
  
  #include <asm/tlbflush.h>
  #include <asm/div64.h>
-@@ -2602,6 +2604,9 @@ void si_meminfo(struct sysinfo *val)
+@@ -2655,6 +2657,9 @@ void si_meminfo(struct sysinfo *val)
        val->totalhigh = totalhigh_pages;
        val->freehigh = nr_free_highpages();
        val->mem_unit = PAGE_SIZE;
@@ -23963,7 +24002,7 @@ diff -NurpP --minimal linux-3.3.1/mm/page_alloc.c linux-3.3.1-vs2.3.3.2/mm/page_
  }
  
  EXPORT_SYMBOL(si_meminfo);
-@@ -2622,6 +2627,9 @@ void si_meminfo_node(struct sysinfo *val
+@@ -2675,6 +2680,9 @@ void si_meminfo_node(struct sysinfo *val
        val->freehigh = 0;
  #endif
        val->mem_unit = PAGE_SIZE;
@@ -23973,9 +24012,9 @@ diff -NurpP --minimal linux-3.3.1/mm/page_alloc.c linux-3.3.1-vs2.3.3.2/mm/page_
  }
  #endif
  
-diff -NurpP --minimal linux-3.3.1/mm/pgtable-generic.c linux-3.3.1-vs2.3.3.2/mm/pgtable-generic.c
---- linux-3.3.1/mm/pgtable-generic.c   2011-03-15 18:07:42.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/mm/pgtable-generic.c 2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/mm/pgtable-generic.c linux-3.4-vs2.3.3.4/mm/pgtable-generic.c
+--- linux-3.4/mm/pgtable-generic.c     2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/pgtable-generic.c   2012-05-21 18:15:05.000000000 +0200
 @@ -6,6 +6,8 @@
   *  Copyright (C) 2010  Linus Torvalds
   */
@@ -23985,10 +24024,10 @@ diff -NurpP --minimal linux-3.3.1/mm/pgtable-generic.c linux-3.3.1-vs2.3.3.2/mm/
  #include <linux/pagemap.h>
  #include <asm/tlb.h>
  #include <asm-generic/pgtable.h>
-diff -NurpP --minimal linux-3.3.1/mm/shmem.c linux-3.3.1-vs2.3.3.2/mm/shmem.c
---- linux-3.3.1/mm/shmem.c     2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/mm/shmem.c   2012-02-24 03:55:07.000000000 +0100
-@@ -1460,7 +1460,7 @@ static int shmem_statfs(struct dentry *d
+diff -NurpP --minimal linux-3.4/mm/shmem.c linux-3.4-vs2.3.3.4/mm/shmem.c
+--- linux-3.4/mm/shmem.c       2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/shmem.c     2012-05-21 18:15:05.000000000 +0200
+@@ -1466,7 +1466,7 @@ static int shmem_statfs(struct dentry *d
  {
        struct shmem_sb_info *sbinfo = SHMEM_SB(dentry->d_sb);
  
@@ -23997,7 +24036,7 @@ diff -NurpP --minimal linux-3.3.1/mm/shmem.c linux-3.3.1-vs2.3.3.2/mm/shmem.c
        buf->f_bsize = PAGE_CACHE_SIZE;
        buf->f_namelen = NAME_MAX;
        if (sbinfo->max_blocks) {
-@@ -2217,7 +2217,7 @@ int shmem_fill_super(struct super_block 
+@@ -2272,7 +2272,7 @@ int shmem_fill_super(struct super_block 
        sb->s_maxbytes = MAX_LFS_FILESIZE;
        sb->s_blocksize = PAGE_CACHE_SIZE;
        sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
@@ -24006,9 +24045,9 @@ diff -NurpP --minimal linux-3.3.1/mm/shmem.c linux-3.3.1-vs2.3.3.2/mm/shmem.c
        sb->s_op = &shmem_ops;
        sb->s_time_gran = 1;
  #ifdef CONFIG_TMPFS_XATTR
-diff -NurpP --minimal linux-3.3.1/mm/slab.c linux-3.3.1-vs2.3.3.2/mm/slab.c
---- linux-3.3.1/mm/slab.c      2012-03-19 19:47:30.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/mm/slab.c    2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/mm/slab.c linux-3.4-vs2.3.3.4/mm/slab.c
+--- linux-3.4/mm/slab.c        2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/slab.c      2012-05-21 18:15:05.000000000 +0200
 @@ -413,6 +413,8 @@ static void kmem_list3_init(struct kmem_
  #define STATS_INC_FREEMISS(x) do { } while (0)
  #endif
@@ -24018,7 +24057,7 @@ diff -NurpP --minimal linux-3.3.1/mm/slab.c linux-3.3.1-vs2.3.3.2/mm/slab.c
  #if DEBUG
  
  /*
-@@ -3414,6 +3416,7 @@ retry:
+@@ -3466,6 +3468,7 @@ retry:
  
        obj = slab_get_obj(cachep, slabp, nodeid);
        check_slabp(cachep, slabp);
@@ -24026,7 +24065,7 @@ diff -NurpP --minimal linux-3.3.1/mm/slab.c linux-3.3.1-vs2.3.3.2/mm/slab.c
        l3->free_objects--;
        /* move slabp to correct slabp list: */
        list_del(&slabp->list);
-@@ -3491,6 +3494,7 @@ __cache_alloc_node(struct kmem_cache *ca
+@@ -3543,6 +3546,7 @@ __cache_alloc_node(struct kmem_cache *ca
        /* ___cache_alloc_node can fall back to other nodes */
        ptr = ____cache_alloc_node(cachep, flags, nodeid);
    out:
@@ -24034,7 +24073,7 @@ diff -NurpP --minimal linux-3.3.1/mm/slab.c linux-3.3.1-vs2.3.3.2/mm/slab.c
        local_irq_restore(save_flags);
        ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, caller);
        kmemleak_alloc_recursive(ptr, obj_size(cachep), 1, cachep->flags,
-@@ -3678,6 +3682,7 @@ static inline void __cache_free(struct k
+@@ -3730,6 +3734,7 @@ static inline void __cache_free(struct k
        check_irq_off();
        kmemleak_free_recursive(objp, cachep->flags);
        objp = cache_free_debugcheck(cachep, objp, caller);
@@ -24042,9 +24081,9 @@ diff -NurpP --minimal linux-3.3.1/mm/slab.c linux-3.3.1-vs2.3.3.2/mm/slab.c
  
        kmemcheck_slab_free(cachep, objp, obj_size(cachep));
  
-diff -NurpP --minimal linux-3.3.1/mm/slab_vs.h linux-3.3.1-vs2.3.3.2/mm/slab_vs.h
---- linux-3.3.1/mm/slab_vs.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/mm/slab_vs.h 2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/mm/slab_vs.h linux-3.4-vs2.3.3.4/mm/slab_vs.h
+--- linux-3.4/mm/slab_vs.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-3.4-vs2.3.3.4/mm/slab_vs.h   2012-05-21 18:15:05.000000000 +0200
 @@ -0,0 +1,29 @@
 +
 +#include <linux/vserver/context.h>
@@ -24075,9 +24114,9 @@ diff -NurpP --minimal linux-3.3.1/mm/slab_vs.h linux-3.3.1-vs2.3.3.2/mm/slab_vs.
 +      atomic_sub(cachep->buffer_size, &vxi->cacct.slab[what]);
 +}
 +
-diff -NurpP --minimal linux-3.3.1/mm/swapfile.c linux-3.3.1-vs2.3.3.2/mm/swapfile.c
---- linux-3.3.1/mm/swapfile.c  2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/mm/swapfile.c        2012-04-03 03:02:13.000000000 +0200
+diff -NurpP --minimal linux-3.4/mm/swapfile.c linux-3.4-vs2.3.3.4/mm/swapfile.c
+--- linux-3.4/mm/swapfile.c    2012-05-21 18:07:35.000000000 +0200
++++ linux-3.4-vs2.3.3.4/mm/swapfile.c  2012-05-21 18:15:05.000000000 +0200
 @@ -36,6 +36,7 @@
  #include <asm/tlbflush.h>
  #include <linux/swapops.h>
@@ -24086,7 +24125,7 @@ diff -NurpP --minimal linux-3.3.1/mm/swapfile.c linux-3.3.1-vs2.3.3.2/mm/swapfil
  
  static bool swap_count_continued(struct swap_info_struct *, pgoff_t,
                                 unsigned char);
-@@ -1752,6 +1753,16 @@ static int swap_show(struct seq_file *sw
+@@ -1754,6 +1755,16 @@ static int swap_show(struct seq_file *sw
  
        if (si == SEQ_START_TOKEN) {
                seq_puts(swap,"Filename\t\t\t\tType\t\tSize\tUsed\tPriority\n");
@@ -24103,7 +24142,7 @@ diff -NurpP --minimal linux-3.3.1/mm/swapfile.c linux-3.3.1-vs2.3.3.2/mm/swapfil
                return 0;
        }
  
-@@ -2175,6 +2186,8 @@ void si_swapinfo(struct sysinfo *val)
+@@ -2180,6 +2191,8 @@ void si_swapinfo(struct sysinfo *val)
        val->freeswap = nr_swap_pages + nr_to_be_unused;
        val->totalswap = total_swap_pages + nr_to_be_unused;
        spin_unlock(&swap_lock);
@@ -24112,10 +24151,10 @@ diff -NurpP --minimal linux-3.3.1/mm/swapfile.c linux-3.3.1-vs2.3.3.2/mm/swapfil
  }
  
  /*
-diff -NurpP --minimal linux-3.3.1/net/bridge/br_multicast.c linux-3.3.1-vs2.3.3.2/net/bridge/br_multicast.c
---- linux-3.3.1/net/bridge/br_multicast.c      2012-03-19 19:47:32.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/bridge/br_multicast.c    2012-03-19 20:53:28.000000000 +0100
-@@ -447,7 +447,7 @@ static struct sk_buff *br_ip6_multicast_
+diff -NurpP --minimal linux-3.4/net/bridge/br_multicast.c linux-3.4-vs2.3.3.4/net/bridge/br_multicast.c
+--- linux-3.4/net/bridge/br_multicast.c        2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/bridge/br_multicast.c      2012-05-21 18:15:05.000000000 +0200
+@@ -445,7 +445,7 @@ static struct sk_buff *br_ip6_multicast_
        ip6h->hop_limit = 1;
        ipv6_addr_set(&ip6h->daddr, htonl(0xff020000), 0, 0, htonl(1));
        if (ipv6_dev_get_saddr(dev_net(br->dev), br->dev, &ip6h->daddr, 0,
@@ -24124,10 +24163,10 @@ diff -NurpP --minimal linux-3.3.1/net/bridge/br_multicast.c linux-3.3.1-vs2.3.3.
                kfree_skb(skb);
                return NULL;
        }
-diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/dev.c
---- linux-3.3.1/net/core/dev.c 2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/core/dev.c       2012-04-03 03:02:13.000000000 +0200
-@@ -127,6 +127,7 @@
+diff -NurpP --minimal linux-3.4/net/core/dev.c linux-3.4-vs2.3.3.4/net/core/dev.c
+--- linux-3.4/net/core/dev.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/core/dev.c 2012-05-21 18:15:05.000000000 +0200
+@@ -126,6 +126,7 @@
  #include <linux/in.h>
  #include <linux/jhash.h>
  #include <linux/random.h>
@@ -24135,7 +24174,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
  #include <trace/events/napi.h>
  #include <trace/events/net.h>
  #include <trace/events/skb.h>
-@@ -622,7 +623,8 @@ struct net_device *__dev_get_by_name(str
+@@ -621,7 +622,8 @@ struct net_device *__dev_get_by_name(str
        struct hlist_head *head = dev_name_hash(net, name);
  
        hlist_for_each_entry(dev, p, head, name_hlist)
@@ -24145,7 +24184,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
                        return dev;
  
        return NULL;
-@@ -648,7 +650,8 @@ struct net_device *dev_get_by_name_rcu(s
+@@ -647,7 +649,8 @@ struct net_device *dev_get_by_name_rcu(s
        struct hlist_head *head = dev_name_hash(net, name);
  
        hlist_for_each_entry_rcu(dev, p, head, name_hlist)
@@ -24155,7 +24194,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
                        return dev;
  
        return NULL;
-@@ -699,7 +702,8 @@ struct net_device *__dev_get_by_index(st
+@@ -698,7 +701,8 @@ struct net_device *__dev_get_by_index(st
        struct hlist_head *head = dev_index_hash(net, ifindex);
  
        hlist_for_each_entry(dev, p, head, index_hlist)
@@ -24165,7 +24204,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
                        return dev;
  
        return NULL;
-@@ -717,7 +721,7 @@ EXPORT_SYMBOL(__dev_get_by_index);
+@@ -716,7 +720,7 @@ EXPORT_SYMBOL(__dev_get_by_index);
   *    about locking. The caller must hold RCU lock.
   */
  
@@ -24174,7 +24213,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
  {
        struct hlist_node *p;
        struct net_device *dev;
-@@ -729,6 +733,16 @@ struct net_device *dev_get_by_index_rcu(
+@@ -728,6 +732,16 @@ struct net_device *dev_get_by_index_rcu(
  
        return NULL;
  }
@@ -24191,7 +24230,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
  EXPORT_SYMBOL(dev_get_by_index_rcu);
  
  
-@@ -777,7 +791,8 @@ struct net_device *dev_getbyhwaddr_rcu(s
+@@ -776,7 +790,8 @@ struct net_device *dev_getbyhwaddr_rcu(s
  
        for_each_netdev_rcu(net, dev)
                if (dev->type == type &&
@@ -24201,7 +24240,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
                        return dev;
  
        return NULL;
-@@ -789,9 +804,11 @@ struct net_device *__dev_getfirstbyhwtyp
+@@ -788,9 +803,11 @@ struct net_device *__dev_getfirstbyhwtyp
        struct net_device *dev;
  
        ASSERT_RTNL();
@@ -24215,7 +24254,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
  
        return NULL;
  }
-@@ -909,6 +926,8 @@ static int __dev_alloc_name(struct net *
+@@ -908,6 +925,8 @@ static int __dev_alloc_name(struct net *
                                continue;
                        if (i < 0 || i >= max_netdevices)
                                continue;
@@ -24224,7 +24263,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
  
                        /*  avoid cases where sscanf is not exact inverse of printf */
                        snprintf(buf, IFNAMSIZ, name, i);
-@@ -4009,6 +4028,8 @@ static int dev_ifconf(struct net *net, c
+@@ -3994,6 +4013,8 @@ static int dev_ifconf(struct net *net, c
  
        total = 0;
        for_each_netdev(net, dev) {
@@ -24233,7 +24272,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
                for (i = 0; i < NPROTO; i++) {
                        if (gifconf_list[i]) {
                                int done;
-@@ -4137,6 +4158,10 @@ static void dev_seq_printf_stats(struct 
+@@ -4096,6 +4117,10 @@ static void dev_seq_printf_stats(struct 
        struct rtnl_link_stats64 temp;
        const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
  
@@ -24244,10 +24283,10 @@ diff -NurpP --minimal linux-3.3.1/net/core/dev.c linux-3.3.1-vs2.3.3.2/net/core/
        seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
                   "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
                   dev->name, stats->rx_bytes, stats->rx_packets,
-diff -NurpP --minimal linux-3.3.1/net/core/rtnetlink.c linux-3.3.1-vs2.3.3.2/net/core/rtnetlink.c
---- linux-3.3.1/net/core/rtnetlink.c   2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/core/rtnetlink.c 2012-04-03 03:02:13.000000000 +0200
-@@ -1073,6 +1073,8 @@ static int rtnl_dump_ifinfo(struct sk_bu
+diff -NurpP --minimal linux-3.4/net/core/rtnetlink.c linux-3.4-vs2.3.3.4/net/core/rtnetlink.c
+--- linux-3.4/net/core/rtnetlink.c     2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/core/rtnetlink.c   2012-05-21 18:15:05.000000000 +0200
+@@ -1072,6 +1072,8 @@ static int rtnl_dump_ifinfo(struct sk_bu
                hlist_for_each_entry_rcu(dev, node, head, index_hlist) {
                        if (idx < s_idx)
                                goto cont;
@@ -24256,7 +24295,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/rtnetlink.c linux-3.3.1-vs2.3.3.2/net
                        if (rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK,
                                             NETLINK_CB(cb->skb).pid,
                                             cb->nlh->nlmsg_seq, 0,
-@@ -1955,6 +1957,9 @@ void rtmsg_ifinfo(int type, struct net_d
+@@ -1954,6 +1956,9 @@ void rtmsg_ifinfo(int type, struct net_d
        int err = -ENOBUFS;
        size_t if_info_size;
  
@@ -24266,10 +24305,10 @@ diff -NurpP --minimal linux-3.3.1/net/core/rtnetlink.c linux-3.3.1-vs2.3.3.2/net
        skb = nlmsg_new((if_info_size = if_nlmsg_size(dev, 0)), GFP_KERNEL);
        if (skb == NULL)
                goto errout;
-diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core/sock.c
---- linux-3.3.1/net/core/sock.c        2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/core/sock.c      2012-02-24 03:55:07.000000000 +0100
-@@ -130,6 +130,10 @@
+diff -NurpP --minimal linux-3.4/net/core/sock.c linux-3.4-vs2.3.3.4/net/core/sock.c
+--- linux-3.4/net/core/sock.c  2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/core/sock.c        2012-05-21 18:15:05.000000000 +0200
+@@ -129,6 +129,10 @@
  #include <net/netprio_cgroup.h>
  
  #include <linux/filter.h>
@@ -24280,7 +24319,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core
  
  #include <trace/events/sock.h>
  
-@@ -1127,6 +1131,8 @@ static struct sock *sk_prot_alloc(struct
+@@ -1146,6 +1150,8 @@ static struct sock *sk_prot_alloc(struct
                        goto out_free_sec;
                sk_tx_queue_clear(sk);
        }
@@ -24289,7 +24328,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core
  
        return sk;
  
-@@ -1235,6 +1241,11 @@ static void __sk_free(struct sock *sk)
+@@ -1254,6 +1260,11 @@ static void __sk_free(struct sock *sk)
                put_cred(sk->sk_peer_cred);
        put_pid(sk->sk_peer_pid);
        put_net(sock_net(sk));
@@ -24301,7 +24340,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core
        sk_prot_free(sk->sk_prot_creator, sk);
  }
  
-@@ -1295,6 +1306,8 @@ struct sock *sk_clone_lock(const struct 
+@@ -1314,6 +1325,8 @@ struct sock *sk_clone_lock(const struct 
  
                /* SANITY */
                get_net(sock_net(newsk));
@@ -24310,7 +24349,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core
                sk_node_init(&newsk->sk_node);
                sock_lock_init(newsk);
                bh_lock_sock(newsk);
-@@ -1351,6 +1364,12 @@ struct sock *sk_clone_lock(const struct 
+@@ -1370,6 +1383,12 @@ struct sock *sk_clone_lock(const struct 
                smp_wmb();
                atomic_set(&newsk->sk_refcnt, 2);
  
@@ -24323,7 +24362,7 @@ diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core
                /*
                 * Increment the counter in the same struct proto as the master
                 * sock (sk_refcnt_debug_inc uses newsk->sk_prot->socks, that
-@@ -2102,6 +2121,12 @@ void sock_init_data(struct socket *sock,
+@@ -2122,6 +2141,12 @@ void sock_init_data(struct socket *sock,
  
        sk->sk_stamp = ktime_set(-1L, 0);
  
@@ -24336,10 +24375,10 @@ diff -NurpP --minimal linux-3.3.1/net/core/sock.c linux-3.3.1-vs2.3.3.2/net/core
        /*
         * Before updating sk_refcnt, we must commit prior changes to memory
         * (Documentation/RCU/rculist_nulls.txt for details)
-diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/ipv4/af_inet.c
---- linux-3.3.1/net/ipv4/af_inet.c     2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/af_inet.c   2012-02-24 03:55:07.000000000 +0100
-@@ -117,6 +117,7 @@
+diff -NurpP --minimal linux-3.4/net/ipv4/af_inet.c linux-3.4-vs2.3.3.4/net/ipv4/af_inet.c
+--- linux-3.4/net/ipv4/af_inet.c       2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/af_inet.c     2012-05-21 18:15:05.000000000 +0200
+@@ -118,6 +118,7 @@
  #ifdef CONFIG_IP_MROUTE
  #include <linux/mroute.h>
  #endif
@@ -24347,7 +24386,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
  
  
  /* The inetsw table contains everything that inet_create needs to
-@@ -326,9 +327,13 @@ lookup_protocol:
+@@ -327,9 +328,13 @@ lookup_protocol:
        }
  
        err = -EPERM;
@@ -24362,7 +24401,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
        err = -EAFNOSUPPORT;
        if (!inet_netns_ok(net, protocol))
                goto out_rcu_unlock;
-@@ -452,6 +457,7 @@ int inet_bind(struct socket *sock, struc
+@@ -454,6 +459,7 @@ int inet_bind(struct socket *sock, struc
        struct sockaddr_in *addr = (struct sockaddr_in *)uaddr;
        struct sock *sk = sock->sk;
        struct inet_sock *inet = inet_sk(sk);
@@ -24370,7 +24409,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
        unsigned short snum;
        int chk_addr_ret;
        int err;
-@@ -475,7 +481,11 @@ int inet_bind(struct socket *sock, struc
+@@ -477,7 +483,11 @@ int inet_bind(struct socket *sock, struc
                        goto out;
        }
  
@@ -24383,7 +24422,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
  
        /* Not specified by any standard per-se, however it breaks too
         * many applications when removed.  It is unfortunate since
-@@ -487,7 +497,7 @@ int inet_bind(struct socket *sock, struc
+@@ -489,7 +499,7 @@ int inet_bind(struct socket *sock, struc
        err = -EADDRNOTAVAIL;
        if (!sysctl_ip_nonlocal_bind &&
            !(inet->freebind || inet->transparent) &&
@@ -24392,7 +24431,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
            chk_addr_ret != RTN_LOCAL &&
            chk_addr_ret != RTN_MULTICAST &&
            chk_addr_ret != RTN_BROADCAST)
-@@ -512,7 +522,7 @@ int inet_bind(struct socket *sock, struc
+@@ -514,7 +524,7 @@ int inet_bind(struct socket *sock, struc
        if (sk->sk_state != TCP_CLOSE || inet->inet_num)
                goto out_release_sock;
  
@@ -24401,7 +24440,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
        if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
                inet->inet_saddr = 0;  /* Use device */
  
-@@ -715,11 +725,13 @@ int inet_getname(struct socket *sock, st
+@@ -717,11 +727,13 @@ int inet_getname(struct socket *sock, st
                     peer == 1))
                        return -ENOTCONN;
                sin->sin_port = inet->inet_dport;
@@ -24416,10 +24455,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/af_inet.c linux-3.3.1-vs2.3.3.2/net/i
                sin->sin_port = inet->inet_sport;
                sin->sin_addr.s_addr = addr;
        }
-diff -NurpP --minimal linux-3.3.1/net/ipv4/arp.c linux-3.3.1-vs2.3.3.2/net/ipv4/arp.c
---- linux-3.3.1/net/ipv4/arp.c 2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/arp.c       2012-02-24 03:55:07.000000000 +0100
-@@ -1329,6 +1329,7 @@ static void arp_format_neigh_entry(struc
+diff -NurpP --minimal linux-3.4/net/ipv4/arp.c linux-3.4-vs2.3.3.4/net/ipv4/arp.c
+--- linux-3.4/net/ipv4/arp.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/arp.c 2012-05-21 18:15:05.000000000 +0200
+@@ -1328,6 +1328,7 @@ static void arp_format_neigh_entry(struc
        struct net_device *dev = n->dev;
        int hatype = dev->type;
  
@@ -24427,7 +24466,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/arp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        read_lock(&n->lock);
        /* Convert hardware address to XX:XX:XX:XX ... form. */
  #if IS_ENABLED(CONFIG_AX25)
-@@ -1360,6 +1361,7 @@ static void arp_format_pneigh_entry(stru
+@@ -1359,6 +1360,7 @@ static void arp_format_pneigh_entry(stru
        int hatype = dev ? dev->type : 0;
        char tbuf[16];
  
@@ -24435,10 +24474,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/arp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        sprintf(tbuf, "%pI4", n->key);
        seq_printf(seq, "%-16s 0x%-10x0x%-10x%s     *        %s\n",
                   tbuf, hatype, ATF_PUBL | ATF_PERM, "00:00:00:00:00:00",
-diff -NurpP --minimal linux-3.3.1/net/ipv4/devinet.c linux-3.3.1-vs2.3.3.2/net/ipv4/devinet.c
---- linux-3.3.1/net/ipv4/devinet.c     2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/devinet.c   2012-02-24 03:55:07.000000000 +0100
-@@ -518,6 +518,7 @@ struct in_device *inetdev_by_index(struc
+diff -NurpP --minimal linux-3.4/net/ipv4/devinet.c linux-3.4-vs2.3.3.4/net/ipv4/devinet.c
+--- linux-3.4/net/ipv4/devinet.c       2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/devinet.c     2012-05-21 18:15:05.000000000 +0200
+@@ -517,6 +517,7 @@ struct in_device *inetdev_by_index(struc
  }
  EXPORT_SYMBOL(inetdev_by_index);
  
@@ -24446,7 +24485,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/devinet.c linux-3.3.1-vs2.3.3.2/net/i
  /* Called only from RTNL semaphored context. No locks. */
  
  struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix,
-@@ -759,6 +760,8 @@ int devinet_ioctl(struct net *net, unsig
+@@ -758,6 +759,8 @@ int devinet_ioctl(struct net *net, unsig
  
        in_dev = __in_dev_get_rtnl(dev);
        if (in_dev) {
@@ -24455,7 +24494,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/devinet.c linux-3.3.1-vs2.3.3.2/net/i
                if (tryaddrmatch) {
                        /* Matthias Andree */
                        /* compare label and address (4.4BSD style) */
-@@ -767,6 +770,8 @@ int devinet_ioctl(struct net *net, unsig
+@@ -766,6 +769,8 @@ int devinet_ioctl(struct net *net, unsig
                           This is checked above. */
                        for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;
                             ifap = &ifa->ifa_next) {
@@ -24464,7 +24503,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/devinet.c linux-3.3.1-vs2.3.3.2/net/i
                                if (!strcmp(ifr.ifr_name, ifa->ifa_label) &&
                                    sin_orig.sin_addr.s_addr ==
                                                        ifa->ifa_local) {
-@@ -779,9 +784,12 @@ int devinet_ioctl(struct net *net, unsig
+@@ -778,9 +783,12 @@ int devinet_ioctl(struct net *net, unsig
                   comparing just the label */
                if (!ifa) {
                        for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;
@@ -24478,7 +24517,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/devinet.c linux-3.3.1-vs2.3.3.2/net/i
                }
        }
  
-@@ -934,6 +942,8 @@ static int inet_gifconf(struct net_devic
+@@ -933,6 +941,8 @@ static int inet_gifconf(struct net_devic
                goto out;
  
        for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) {
@@ -24504,9 +24543,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/devinet.c linux-3.3.1-vs2.3.3.2/net/i
                                if (ip_idx < s_ip_idx)
                                        continue;
                                if (inet_fill_ifaddr(skb, ifa,
-diff -NurpP --minimal linux-3.3.1/net/ipv4/fib_trie.c linux-3.3.1-vs2.3.3.2/net/ipv4/fib_trie.c
---- linux-3.3.1/net/ipv4/fib_trie.c    2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/fib_trie.c  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/fib_trie.c linux-3.4-vs2.3.3.4/net/ipv4/fib_trie.c
+--- linux-3.4/net/ipv4/fib_trie.c      2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/fib_trie.c    2012-05-21 18:15:05.000000000 +0200
 @@ -2556,6 +2556,7 @@ static int fib_route_seq_show(struct seq
                            || fa->fa_type == RTN_MULTICAST)
                                continue;
@@ -24515,9 +24554,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/fib_trie.c linux-3.3.1-vs2.3.3.2/net/
                        if (fi)
                                seq_printf(seq,
                                         "%s\t%08X\t%08X\t%04X\t%d\t%u\t"
-diff -NurpP --minimal linux-3.3.1/net/ipv4/inet_connection_sock.c linux-3.3.1-vs2.3.3.2/net/ipv4/inet_connection_sock.c
---- linux-3.3.1/net/ipv4/inet_connection_sock.c        2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/inet_connection_sock.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/inet_connection_sock.c linux-3.4-vs2.3.3.4/net/ipv4/inet_connection_sock.c
+--- linux-3.4/net/ipv4/inet_connection_sock.c  2012-03-19 19:47:33.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/ipv4/inet_connection_sock.c        2012-05-21 18:15:05.000000000 +0200
 @@ -52,6 +52,37 @@ void inet_get_local_port_range(int *low,
  }
  EXPORT_SYMBOL(inet_get_local_port_range);
@@ -24567,9 +24606,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/inet_connection_sock.c linux-3.3.1-vs
                                        break;
                        }
                }
-diff -NurpP --minimal linux-3.3.1/net/ipv4/inet_diag.c linux-3.3.1-vs2.3.3.2/net/ipv4/inet_diag.c
---- linux-3.3.1/net/ipv4/inet_diag.c   2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/inet_diag.c 2012-02-24 04:26:38.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/inet_diag.c linux-3.4-vs2.3.3.4/net/ipv4/inet_diag.c
+--- linux-3.4/net/ipv4/inet_diag.c     2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/inet_diag.c   2012-05-21 18:15:05.000000000 +0200
 @@ -31,6 +31,8 @@
  
  #include <linux/inet.h>
@@ -24680,9 +24719,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/inet_diag.c linux-3.3.1-vs2.3.3.2/net
                                if (num < s_num)
                                        goto next_dying;
                                if (r->sdiag_family != AF_UNSPEC &&
-diff -NurpP --minimal linux-3.3.1/net/ipv4/inet_hashtables.c linux-3.3.1-vs2.3.3.2/net/ipv4/inet_hashtables.c
---- linux-3.3.1/net/ipv4/inet_hashtables.c     2011-10-24 18:45:34.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/inet_hashtables.c   2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/inet_hashtables.c linux-3.4-vs2.3.3.4/net/ipv4/inet_hashtables.c
+--- linux-3.4/net/ipv4/inet_hashtables.c       2011-10-24 18:45:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/inet_hashtables.c     2012-05-21 18:15:05.000000000 +0200
 @@ -22,6 +22,7 @@
  #include <net/inet_connection_sock.h>
  #include <net/inet_hashtables.h>
@@ -24719,9 +24758,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/inet_hashtables.c linux-3.3.1-vs2.3.3
        /*
         * if the nulls value we got at the end of this lookup is
         * not the expected one, we must restart lookup.
-diff -NurpP --minimal linux-3.3.1/net/ipv4/netfilter/nf_nat_helper.c linux-3.3.1-vs2.3.3.2/net/ipv4/netfilter/nf_nat_helper.c
---- linux-3.3.1/net/ipv4/netfilter/nf_nat_helper.c     2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/netfilter/nf_nat_helper.c   2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/netfilter/nf_nat_helper.c linux-3.4-vs2.3.3.4/net/ipv4/netfilter/nf_nat_helper.c
+--- linux-3.4/net/ipv4/netfilter/nf_nat_helper.c       2012-03-19 19:47:33.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/ipv4/netfilter/nf_nat_helper.c     2012-05-21 18:15:05.000000000 +0200
 @@ -20,6 +20,7 @@
  #include <net/route.h>
  
@@ -24730,9 +24769,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/netfilter/nf_nat_helper.c linux-3.3.1
  #include <net/netfilter/nf_conntrack.h>
  #include <net/netfilter/nf_conntrack_helper.h>
  #include <net/netfilter/nf_conntrack_ecache.h>
-diff -NurpP --minimal linux-3.3.1/net/ipv4/netfilter.c linux-3.3.1-vs2.3.3.2/net/ipv4/netfilter.c
---- linux-3.3.1/net/ipv4/netfilter.c   2012-01-09 16:15:03.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/netfilter.c 2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/netfilter.c linux-3.4-vs2.3.3.4/net/ipv4/netfilter.c
+--- linux-3.4/net/ipv4/netfilter.c     2012-01-09 16:15:03.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/ipv4/netfilter.c   2012-05-21 18:15:05.000000000 +0200
 @@ -6,7 +6,7 @@
  #include <linux/skbuff.h>
  #include <linux/gfp.h>
@@ -24742,9 +24781,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/netfilter.c linux-3.3.1-vs2.3.3.2/net
  #include <net/xfrm.h>
  #include <net/ip.h>
  #include <net/netfilter/nf_queue.h>
-diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/raw.c
---- linux-3.3.1/net/ipv4/raw.c 2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/raw.c       2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/raw.c linux-3.4-vs2.3.3.4/net/ipv4/raw.c
+--- linux-3.4/net/ipv4/raw.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/raw.c 2012-05-21 18:15:05.000000000 +0200
 @@ -118,7 +118,7 @@ static struct sock *__raw_v4_lookup(stru
  
                if (net_eq(sock_net(sk), net) && inet->inet_num == num  &&
@@ -24767,7 +24806,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        err = NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL,
                      rt->dst.dev, dst_output);
        if (err > 0)
-@@ -577,6 +583,16 @@ static int raw_sendmsg(struct kiocb *ioc
+@@ -575,6 +581,16 @@ static int raw_sendmsg(struct kiocb *ioc
                        goto done;
        }
  
@@ -24784,7 +24823,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
        rt = ip_route_output_flow(sock_net(sk), &fl4, sk);
        if (IS_ERR(rt)) {
-@@ -653,17 +669,19 @@ static int raw_bind(struct sock *sk, str
+@@ -651,17 +667,19 @@ static int raw_bind(struct sock *sk, str
  {
        struct inet_sock *inet = inet_sk(sk);
        struct sockaddr_in *addr = (struct sockaddr_in *) uaddr;
@@ -24807,7 +24846,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
                inet->inet_saddr = 0;  /* Use device */
        sk_dst_reset(sk);
-@@ -715,7 +733,8 @@ static int raw_recvmsg(struct kiocb *ioc
+@@ -713,7 +731,8 @@ static int raw_recvmsg(struct kiocb *ioc
        /* Copy the address. */
        if (sin) {
                sin->sin_family = AF_INET;
@@ -24817,7 +24856,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                sin->sin_port = 0;
                memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
        }
-@@ -911,7 +930,8 @@ static struct sock *raw_get_first(struct
+@@ -909,7 +928,8 @@ static struct sock *raw_get_first(struct
                struct hlist_node *node;
  
                sk_for_each(sk, node, &state->h->ht[state->bucket])
@@ -24827,7 +24866,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                                goto found;
        }
        sk = NULL;
-@@ -927,7 +947,8 @@ static struct sock *raw_get_next(struct 
+@@ -925,7 +945,8 @@ static struct sock *raw_get_next(struct 
                sk = sk_next(sk);
  try_again:
                ;
@@ -24837,10 +24876,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/raw.c linux-3.3.1-vs2.3.3.2/net/ipv4/
  
        if (!sk && ++state->bucket < RAW_HTABLE_SIZE) {
                sk = sk_head(&state->h->ht[state->bucket]);
-diff -NurpP --minimal linux-3.3.1/net/ipv4/route.c linux-3.3.1-vs2.3.3.2/net/ipv4/route.c
---- linux-3.3.1/net/ipv4/route.c       2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/route.c     2012-03-19 20:52:10.000000000 +0100
-@@ -2697,7 +2697,7 @@ static struct rtable *ip_route_output_sl
+diff -NurpP --minimal linux-3.4/net/ipv4/route.c linux-3.4-vs2.3.3.4/net/ipv4/route.c
+--- linux-3.4/net/ipv4/route.c 2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/route.c       2012-05-21 18:15:05.000000000 +0200
+@@ -2696,7 +2696,7 @@ static struct rtable *ip_route_output_sl
  
  
        if (fl4->flowi4_oif) {
@@ -24849,10 +24888,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/route.c linux-3.3.1-vs2.3.3.2/net/ipv
                rth = ERR_PTR(-ENODEV);
                if (dev_out == NULL)
                        goto out;
-diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp.c linux-3.3.1-vs2.3.3.2/net/ipv4/tcp.c
---- linux-3.3.1/net/ipv4/tcp.c 2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/tcp.c       2012-03-19 20:52:10.000000000 +0100
-@@ -266,6 +266,7 @@
+diff -NurpP --minimal linux-3.4/net/ipv4/tcp.c linux-3.4-vs2.3.3.4/net/ipv4/tcp.c
+--- linux-3.4/net/ipv4/tcp.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/tcp.c 2012-05-21 18:15:05.000000000 +0200
+@@ -268,6 +268,7 @@
  #include <linux/crypto.h>
  #include <linux/time.h>
  #include <linux/slab.h>
@@ -24860,10 +24899,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
  
  #include <net/icmp.h>
  #include <net/tcp.h>
-diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/ipv4/tcp_ipv4.c
---- linux-3.3.1/net/ipv4/tcp_ipv4.c    2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/tcp_ipv4.c  2012-03-19 20:52:10.000000000 +0100
-@@ -2036,6 +2036,12 @@ static void *listening_get_next(struct s
+diff -NurpP --minimal linux-3.4/net/ipv4/tcp_ipv4.c linux-3.4-vs2.3.3.4/net/ipv4/tcp_ipv4.c
+--- linux-3.4/net/ipv4/tcp_ipv4.c      2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/tcp_ipv4.c    2012-05-21 18:15:05.000000000 +0200
+@@ -2038,6 +2038,12 @@ static void *listening_get_next(struct s
                req = req->dl_next;
                while (1) {
                        while (req) {
@@ -24876,7 +24915,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                                if (req->rsk_ops->family == st->family) {
                                        cur = req;
                                        goto out;
-@@ -2060,6 +2066,10 @@ get_req:
+@@ -2062,6 +2068,10 @@ get_req:
        }
  get_sk:
        sk_nulls_for_each_from(sk, node) {
@@ -24887,7 +24926,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                if (!net_eq(sock_net(sk), net))
                        continue;
                if (sk->sk_family == st->family) {
-@@ -2136,6 +2146,11 @@ static void *established_get_first(struc
+@@ -2138,6 +2148,11 @@ static void *established_get_first(struc
  
                spin_lock_bh(lock);
                sk_nulls_for_each(sk, node, &tcp_hashinfo.ehash[st->bucket].chain) {
@@ -24899,7 +24938,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                        if (sk->sk_family != st->family ||
                            !net_eq(sock_net(sk), net)) {
                                continue;
-@@ -2146,6 +2161,11 @@ static void *established_get_first(struc
+@@ -2148,6 +2163,11 @@ static void *established_get_first(struc
                st->state = TCP_SEQ_STATE_TIME_WAIT;
                inet_twsk_for_each(tw, node,
                                   &tcp_hashinfo.ehash[st->bucket].twchain) {
@@ -24911,7 +24950,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                        if (tw->tw_family != st->family ||
                            !net_eq(twsk_net(tw), net)) {
                                continue;
-@@ -2175,7 +2195,9 @@ static void *established_get_next(struct
+@@ -2177,7 +2197,9 @@ static void *established_get_next(struct
                tw = cur;
                tw = tw_next(tw);
  get_tw:
@@ -24922,7 +24961,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                        tw = tw_next(tw);
                }
                if (tw) {
-@@ -2199,6 +2221,11 @@ get_tw:
+@@ -2201,6 +2223,11 @@ get_tw:
                sk = sk_nulls_next(sk);
  
        sk_nulls_for_each_from(sk, node) {
@@ -24934,7 +24973,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                if (sk->sk_family == st->family && net_eq(sock_net(sk), net))
                        goto found;
        }
-@@ -2404,9 +2431,9 @@ static void get_openreq4(const struct so
+@@ -2406,9 +2433,9 @@ static void get_openreq4(const struct so
        seq_printf(f, "%4d: %08X:%04X %08X:%04X"
                " %02X %08X:%08X %02X:%08lX %08X %5d %8d %u %d %pK%n",
                i,
@@ -24946,7 +24985,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
                ntohs(ireq->rmt_port),
                TCP_SYN_RECV,
                0, 0, /* could print option size, but that is af dependent. */
-@@ -2428,8 +2455,8 @@ static void get_tcp4_sock(struct sock *s
+@@ -2430,8 +2457,8 @@ static void get_tcp4_sock(struct sock *s
        const struct tcp_sock *tp = tcp_sk(sk);
        const struct inet_connection_sock *icsk = inet_csk(sk);
        const struct inet_sock *inet = inet_sk(sk);
@@ -24957,7 +24996,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
        __u16 destp = ntohs(inet->inet_dport);
        __u16 srcp = ntohs(inet->inet_sport);
        int rx_queue;
-@@ -2486,8 +2513,8 @@ static void get_timewait4_sock(const str
+@@ -2488,8 +2515,8 @@ static void get_timewait4_sock(const str
        if (ttd < 0)
                ttd = 0;
  
@@ -24968,9 +25007,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_ipv4.c linux-3.3.1-vs2.3.3.2/net/
        destp = ntohs(tw->tw_dport);
        srcp  = ntohs(tw->tw_sport);
  
-diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_minisocks.c linux-3.3.1-vs2.3.3.2/net/ipv4/tcp_minisocks.c
---- linux-3.3.1/net/ipv4/tcp_minisocks.c       2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/tcp_minisocks.c     2012-02-24 04:25:11.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv4/tcp_minisocks.c linux-3.4-vs2.3.3.4/net/ipv4/tcp_minisocks.c
+--- linux-3.4/net/ipv4/tcp_minisocks.c 2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/tcp_minisocks.c       2012-05-21 18:15:05.000000000 +0200
 @@ -23,6 +23,9 @@
  #include <linux/slab.h>
  #include <linux/sysctl.h>
@@ -24993,10 +25032,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/tcp_minisocks.c linux-3.3.1-vs2.3.3.2
  #if IS_ENABLED(CONFIG_IPV6)
                if (tw->tw_family == PF_INET6) {
                        struct ipv6_pinfo *np = inet6_sk(sk);
-diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/udp.c
---- linux-3.3.1/net/ipv4/udp.c 2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv4/udp.c       2012-02-24 03:55:07.000000000 +0100
-@@ -297,14 +297,7 @@ fail:
+diff -NurpP --minimal linux-3.4/net/ipv4/udp.c linux-3.4-vs2.3.3.4/net/ipv4/udp.c
+--- linux-3.4/net/ipv4/udp.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv4/udp.c 2012-05-21 18:15:05.000000000 +0200
+@@ -298,14 +298,7 @@ fail:
  }
  EXPORT_SYMBOL(udp_lib_get_port);
  
@@ -25012,7 +25051,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
  
  static unsigned int udp4_portaddr_hash(struct net *net, __be32 saddr,
                                       unsigned int port)
-@@ -339,6 +332,11 @@ static inline int compute_score(struct s
+@@ -340,6 +333,11 @@ static inline int compute_score(struct s
                        if (inet->inet_rcv_saddr != daddr)
                                return -1;
                        score += 2;
@@ -25024,7 +25063,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                }
                if (inet->inet_daddr) {
                        if (inet->inet_daddr != saddr)
-@@ -442,6 +440,7 @@ exact_match:
+@@ -443,6 +441,7 @@ exact_match:
        return result;
  }
  
@@ -25032,7 +25071,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
  /* UDP is nearly always wildcards out the wazoo, it makes no sense to try
   * harder than this. -DaveM
   */
-@@ -487,6 +486,11 @@ begin:
+@@ -488,6 +487,11 @@ begin:
        sk_nulls_for_each_rcu(sk, node, &hslot->head) {
                score = compute_score(sk, net, saddr, hnum, sport,
                                      daddr, dport, dif);
@@ -25044,7 +25083,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                if (score > badness) {
                        result = sk;
                        badness = score;
-@@ -500,6 +504,7 @@ begin:
+@@ -501,6 +505,7 @@ begin:
        if (get_nulls_value(node) != slot)
                goto begin;
  
@@ -25052,7 +25091,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        if (result) {
                if (unlikely(!atomic_inc_not_zero_hint(&result->sk_refcnt, 2)))
                        result = NULL;
-@@ -509,6 +514,7 @@ begin:
+@@ -510,6 +515,7 @@ begin:
                        goto begin;
                }
        }
@@ -25060,7 +25099,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
        rcu_read_unlock();
        return result;
  }
-@@ -552,8 +558,7 @@ static inline struct sock *udp_v4_mcast_
+@@ -553,8 +559,7 @@ static inline struct sock *udp_v4_mcast_
                    udp_sk(s)->udp_port_hash != hnum ||
                    (inet->inet_daddr && inet->inet_daddr != rmt_addr) ||
                    (inet->inet_dport != rmt_port && inet->inet_dport) ||
@@ -25070,7 +25109,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                    ipv6_only_sock(s) ||
                    (s->sk_bound_dev_if && s->sk_bound_dev_if != dif))
                        continue;
-@@ -931,6 +936,16 @@ int udp_sendmsg(struct kiocb *iocb, stru
+@@ -933,6 +938,16 @@ int udp_sendmsg(struct kiocb *iocb, stru
                                   inet_sk_flowi_flags(sk)|FLOWI_FLAG_CAN_SLEEP,
                                   faddr, saddr, dport, inet->inet_sport);
  
@@ -25087,7 +25126,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
                rt = ip_route_output_flow(net, fl4, sk);
                if (IS_ERR(rt)) {
-@@ -1229,7 +1244,8 @@ try_again:
+@@ -1231,7 +1246,8 @@ try_again:
        if (sin) {
                sin->sin_family = AF_INET;
                sin->sin_port = udp_hdr(skb)->source;
@@ -25097,7 +25136,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
        }
        if (inet->cmsg_flags)
-@@ -1976,6 +1992,8 @@ static struct sock *udp_get_first(struct
+@@ -1970,6 +1986,8 @@ static struct sock *udp_get_first(struct
                sk_nulls_for_each(sk, node, &hslot->head) {
                        if (!net_eq(sock_net(sk), net))
                                continue;
@@ -25106,7 +25145,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
                        if (sk->sk_family == state->family)
                                goto found;
                }
-@@ -1993,7 +2011,9 @@ static struct sock *udp_get_next(struct 
+@@ -1987,7 +2005,9 @@ static struct sock *udp_get_next(struct 
  
        do {
                sk = sk_nulls_next(sk);
@@ -25117,9 +25156,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv4/udp.c linux-3.3.1-vs2.3.3.2/net/ipv4/
  
        if (!sk) {
                if (state->bucket <= state->udp_table->mask)
-diff -NurpP --minimal linux-3.3.1/net/ipv6/Kconfig linux-3.3.1-vs2.3.3.2/net/ipv6/Kconfig
---- linux-3.3.1/net/ipv6/Kconfig       2010-08-02 16:52:59.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/Kconfig     2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/Kconfig linux-3.4-vs2.3.3.4/net/ipv6/Kconfig
+--- linux-3.4/net/ipv6/Kconfig 2010-08-02 16:52:59.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/Kconfig       2012-05-21 18:15:05.000000000 +0200
 @@ -4,8 +4,8 @@
  
  #   IPv6 as module will cause a CRASH if you try to unload it
@@ -25131,9 +25170,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/Kconfig linux-3.3.1-vs2.3.3.2/net/ipv
        ---help---
          This is complemental support for the IP version 6.
          You will still be able to do traditional IPv4 networking as well.
-diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/ipv6/addrconf.c
---- linux-3.3.1/net/ipv6/addrconf.c    2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/addrconf.c  2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/addrconf.c linux-3.4-vs2.3.3.4/net/ipv6/addrconf.c
+--- linux-3.4/net/ipv6/addrconf.c      2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/addrconf.c    2012-05-21 18:15:05.000000000 +0200
 @@ -88,6 +88,8 @@
  #include <linux/proc_fs.h>
  #include <linux/seq_file.h>
@@ -25143,7 +25182,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
  
  /* Set to 3 to get tracing... */
  #define ACONF_DEBUG 2
-@@ -1105,7 +1107,7 @@ out:
+@@ -1104,7 +1106,7 @@ out:
  
  int ipv6_dev_get_saddr(struct net *net, struct net_device *dst_dev,
                       const struct in6_addr *daddr, unsigned int prefs,
@@ -25152,7 +25191,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
  {
        struct ipv6_saddr_score scores[2],
                                *score = &scores[0], *hiscore = &scores[1];
-@@ -1177,6 +1179,8 @@ int ipv6_dev_get_saddr(struct net *net, 
+@@ -1176,6 +1178,8 @@ int ipv6_dev_get_saddr(struct net *net, 
                                               dev->name);
                                continue;
                        }
@@ -25161,7 +25200,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
  
                        score->rule = -1;
                        bitmap_zero(score->scorebits, IPV6_SADDR_RULE_MAX);
-@@ -3162,7 +3166,10 @@ static void if6_seq_stop(struct seq_file
+@@ -3159,7 +3163,10 @@ static void if6_seq_stop(struct seq_file
  static int if6_seq_show(struct seq_file *seq, void *v)
  {
        struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v;
@@ -25173,7 +25212,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
                   &ifp->addr,
                   ifp->idev->dev->ifindex,
                   ifp->prefix_len,
-@@ -3668,6 +3675,11 @@ static int in6_dump_addrs(struct inet6_d
+@@ -3665,6 +3672,11 @@ static int in6_dump_addrs(struct inet6_d
        struct ifacaddr6 *ifaca;
        int err = 1;
        int ip_idx = *p_ip_idx;
@@ -25185,7 +25224,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
  
        read_lock_bh(&idev->lock);
        switch (type) {
-@@ -3678,6 +3690,8 @@ static int in6_dump_addrs(struct inet6_d
+@@ -3675,6 +3687,8 @@ static int in6_dump_addrs(struct inet6_d
                list_for_each_entry(ifa, &idev->addr_list, if_list) {
                        if (++ip_idx < s_ip_idx)
                                continue;
@@ -25194,7 +25233,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
                        err = inet6_fill_ifaddr(skb, ifa,
                                                NETLINK_CB(cb->skb).pid,
                                                cb->nlh->nlmsg_seq,
-@@ -3694,6 +3708,8 @@ static int in6_dump_addrs(struct inet6_d
+@@ -3691,6 +3705,8 @@ static int in6_dump_addrs(struct inet6_d
                     ifmca = ifmca->next, ip_idx++) {
                        if (ip_idx < s_ip_idx)
                                continue;
@@ -25203,7 +25242,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
                        err = inet6_fill_ifmcaddr(skb, ifmca,
                                                  NETLINK_CB(cb->skb).pid,
                                                  cb->nlh->nlmsg_seq,
-@@ -3709,6 +3725,8 @@ static int in6_dump_addrs(struct inet6_d
+@@ -3706,6 +3722,8 @@ static int in6_dump_addrs(struct inet6_d
                     ifaca = ifaca->aca_next, ip_idx++) {
                        if (ip_idx < s_ip_idx)
                                continue;
@@ -25212,7 +25251,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
                        err = inet6_fill_ifacaddr(skb, ifaca,
                                                  NETLINK_CB(cb->skb).pid,
                                                  cb->nlh->nlmsg_seq,
-@@ -4094,6 +4112,11 @@ static int inet6_dump_ifinfo(struct sk_b
+@@ -4091,6 +4109,11 @@ static int inet6_dump_ifinfo(struct sk_b
        struct inet6_dev *idev;
        struct hlist_head *head;
        struct hlist_node *node;
@@ -25224,7 +25263,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
  
        s_h = cb->args[0];
        s_idx = cb->args[1];
-@@ -4105,6 +4128,8 @@ static int inet6_dump_ifinfo(struct sk_b
+@@ -4102,6 +4125,8 @@ static int inet6_dump_ifinfo(struct sk_b
                hlist_for_each_entry_rcu(dev, node, head, index_hlist) {
                        if (idx < s_idx)
                                goto cont;
@@ -25233,9 +25272,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/addrconf.c linux-3.3.1-vs2.3.3.2/net/
                        idev = __in6_dev_get(dev);
                        if (!idev)
                                goto cont;
-diff -NurpP --minimal linux-3.3.1/net/ipv6/af_inet6.c linux-3.3.1-vs2.3.3.2/net/ipv6/af_inet6.c
---- linux-3.3.1/net/ipv6/af_inet6.c    2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/af_inet6.c  2012-02-24 04:23:27.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/af_inet6.c linux-3.4-vs2.3.3.4/net/ipv6/af_inet6.c
+--- linux-3.4/net/ipv6/af_inet6.c      2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/af_inet6.c    2012-05-21 18:15:05.000000000 +0200
 @@ -42,6 +42,8 @@
  #include <linux/netdevice.h>
  #include <linux/icmpv6.h>
@@ -25245,7 +25284,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/af_inet6.c linux-3.3.1-vs2.3.3.2/net/
  
  #include <net/ip.h>
  #include <net/ipv6.h>
-@@ -160,9 +162,12 @@ lookup_protocol:
+@@ -159,9 +161,12 @@ lookup_protocol:
        }
  
        err = -EPERM;
@@ -25331,9 +25370,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/af_inet6.c linux-3.3.1-vs2.3.3.2/net/
                if (ipv6_addr_any(&np->rcv_saddr))
                        sin->sin6_addr = np->saddr;
                else
-diff -NurpP --minimal linux-3.3.1/net/ipv6/datagram.c linux-3.3.1-vs2.3.3.2/net/ipv6/datagram.c
---- linux-3.3.1/net/ipv6/datagram.c    2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/datagram.c  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/datagram.c linux-3.4-vs2.3.3.4/net/ipv6/datagram.c
+--- linux-3.4/net/ipv6/datagram.c      2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/datagram.c    2012-05-21 18:15:05.000000000 +0200
 @@ -642,7 +642,7 @@ int datagram_send_ctl(struct net *net, s
  
                        rcu_read_lock();
@@ -25343,9 +25382,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/datagram.c linux-3.3.1-vs2.3.3.2/net/
                                if (!dev) {
                                        rcu_read_unlock();
                                        return -ENODEV;
-diff -NurpP --minimal linux-3.3.1/net/ipv6/fib6_rules.c linux-3.3.1-vs2.3.3.2/net/ipv6/fib6_rules.c
---- linux-3.3.1/net/ipv6/fib6_rules.c  2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/fib6_rules.c        2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/fib6_rules.c linux-3.4-vs2.3.3.4/net/ipv6/fib6_rules.c
+--- linux-3.4/net/ipv6/fib6_rules.c    2012-03-19 19:47:33.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/ipv6/fib6_rules.c  2012-05-21 18:15:05.000000000 +0200
 @@ -91,7 +91,7 @@ static int fib6_rule_action(struct fib_r
                                               ip6_dst_idev(&rt->dst)->dev,
                                               &flp6->daddr,
@@ -25355,9 +25394,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/fib6_rules.c linux-3.3.1-vs2.3.3.2/ne
                                goto again;
                        if (!ipv6_prefix_equal(&saddr, &r->src.addr,
                                               r->src.plen))
-diff -NurpP --minimal linux-3.3.1/net/ipv6/inet6_hashtables.c linux-3.3.1-vs2.3.3.2/net/ipv6/inet6_hashtables.c
---- linux-3.3.1/net/ipv6/inet6_hashtables.c    2011-10-24 18:45:34.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/inet6_hashtables.c  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/inet6_hashtables.c linux-3.4-vs2.3.3.4/net/ipv6/inet6_hashtables.c
+--- linux-3.4/net/ipv6/inet6_hashtables.c      2011-10-24 18:45:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/inet6_hashtables.c    2012-05-21 18:15:05.000000000 +0200
 @@ -16,6 +16,7 @@
  
  #include <linux/module.h>
@@ -25393,10 +25432,10 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/inet6_hashtables.c linux-3.3.1-vs2.3.
                }
                if (sk->sk_bound_dev_if) {
                        if (sk->sk_bound_dev_if != dif)
-diff -NurpP --minimal linux-3.3.1/net/ipv6/ip6_output.c linux-3.3.1-vs2.3.3.2/net/ipv6/ip6_output.c
---- linux-3.3.1/net/ipv6/ip6_output.c  2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/ip6_output.c        2012-04-03 03:02:13.000000000 +0200
-@@ -968,7 +968,8 @@ static int ip6_dst_lookup_tail(struct so
+diff -NurpP --minimal linux-3.4/net/ipv6/ip6_output.c linux-3.4-vs2.3.3.4/net/ipv6/ip6_output.c
+--- linux-3.4/net/ipv6/ip6_output.c    2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/ip6_output.c  2012-05-21 18:15:05.000000000 +0200
+@@ -966,7 +966,8 @@ static int ip6_dst_lookup_tail(struct so
                struct rt6_info *rt = (struct rt6_info *) *dst;
                err = ip6_route_get_saddr(net, rt, &fl6->daddr,
                                          sk ? inet6_sk(sk)->srcprefs : 0,
@@ -25406,9 +25445,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/ip6_output.c linux-3.3.1-vs2.3.3.2/ne
                if (err)
                        goto out_err_release;
        }
-diff -NurpP --minimal linux-3.3.1/net/ipv6/ndisc.c linux-3.3.1-vs2.3.3.2/net/ipv6/ndisc.c
---- linux-3.3.1/net/ipv6/ndisc.c       2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/ndisc.c     2012-03-19 20:52:10.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/ndisc.c linux-3.4-vs2.3.3.4/net/ipv6/ndisc.c
+--- linux-3.4/net/ipv6/ndisc.c 2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/ndisc.c       2012-05-21 18:15:05.000000000 +0200
 @@ -575,7 +575,7 @@ static void ndisc_send_na(struct net_dev
        } else {
                if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr,
@@ -25418,9 +25457,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/ndisc.c linux-3.3.1-vs2.3.3.2/net/ipv
                        return;
                src_addr = &tmpaddr;
        }
-diff -NurpP --minimal linux-3.3.1/net/ipv6/raw.c linux-3.3.1-vs2.3.3.2/net/ipv6/raw.c
---- linux-3.3.1/net/ipv6/raw.c 2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/raw.c       2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/raw.c linux-3.4-vs2.3.3.4/net/ipv6/raw.c
+--- linux-3.4/net/ipv6/raw.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/raw.c 2012-05-21 18:15:05.000000000 +0200
 @@ -30,6 +30,7 @@
  #include <linux/icmpv6.h>
  #include <linux/netfilter.h>
@@ -25443,9 +25482,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/raw.c linux-3.3.1-vs2.3.3.2/net/ipv6/
                /* ipv4 addr of the socket is invalid.  Only the
                 * unspecified and mapped address have a v4 equivalent.
                 */
-diff -NurpP --minimal linux-3.3.1/net/ipv6/route.c linux-3.3.1-vs2.3.3.2/net/ipv6/route.c
---- linux-3.3.1/net/ipv6/route.c       2012-04-03 03:01:26.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/route.c     2012-04-03 03:02:13.000000000 +0200
+diff -NurpP --minimal linux-3.4/net/ipv6/route.c linux-3.4-vs2.3.3.4/net/ipv6/route.c
+--- linux-3.4/net/ipv6/route.c 2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/route.c       2012-05-21 18:15:05.000000000 +0200
 @@ -55,6 +55,7 @@
  #include <net/xfrm.h>
  #include <net/netevent.h>
@@ -25454,7 +25493,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/route.c linux-3.3.1-vs2.3.3.2/net/ipv
  
  #include <asm/uaccess.h>
  
-@@ -2107,15 +2108,17 @@ int ip6_route_get_saddr(struct net *net,
+@@ -2144,15 +2145,17 @@ int ip6_route_get_saddr(struct net *net,
                        struct rt6_info *rt,
                        const struct in6_addr *daddr,
                        unsigned int prefs,
@@ -25475,7 +25514,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/route.c linux-3.3.1-vs2.3.3.2/net/ipv
        return err;
  }
  
-@@ -2446,7 +2449,8 @@ static int rt6_fill_node(struct net *net
+@@ -2483,7 +2486,8 @@ static int rt6_fill_node(struct net *net
                        NLA_PUT_U32(skb, RTA_IIF, iif);
        } else if (dst) {
                struct in6_addr saddr_buf;
@@ -25485,7 +25524,7 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/route.c linux-3.3.1-vs2.3.3.2/net/ipv
                        NLA_PUT(skb, RTA_PREFSRC, 16, &saddr_buf);
        }
  
-@@ -2660,6 +2664,7 @@ static int rt6_info_route(struct rt6_inf
+@@ -2710,6 +2714,7 @@ static int rt6_info_route(struct rt6_inf
        struct seq_file *m = p_arg;
        struct neighbour *n;
  
@@ -25493,9 +25532,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/route.c linux-3.3.1-vs2.3.3.2/net/ipv
        seq_printf(m, "%pi6 %02x ", &rt->rt6i_dst.addr, rt->rt6i_dst.plen);
  
  #ifdef CONFIG_IPV6_SUBTREES
-diff -NurpP --minimal linux-3.3.1/net/ipv6/tcp_ipv6.c linux-3.3.1-vs2.3.3.2/net/ipv6/tcp_ipv6.c
---- linux-3.3.1/net/ipv6/tcp_ipv6.c    2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/tcp_ipv6.c  2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/tcp_ipv6.c linux-3.4-vs2.3.3.4/net/ipv6/tcp_ipv6.c
+--- linux-3.4/net/ipv6/tcp_ipv6.c      2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/tcp_ipv6.c    2012-05-21 18:15:05.000000000 +0200
 @@ -71,6 +71,7 @@
  
  #include <linux/crypto.h>
@@ -25522,9 +25561,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/tcp_ipv6.c linux-3.3.1-vs2.3.3.2/net/
  
        addr_type = ipv6_addr_type(&usin->sin6_addr);
  
-diff -NurpP --minimal linux-3.3.1/net/ipv6/udp.c linux-3.3.1-vs2.3.3.2/net/ipv6/udp.c
---- linux-3.3.1/net/ipv6/udp.c 2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/udp.c       2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/udp.c linux-3.4-vs2.3.3.4/net/ipv6/udp.c
+--- linux-3.4/net/ipv6/udp.c   2012-05-21 18:07:40.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/ipv6/udp.c 2012-05-21 18:15:05.000000000 +0200
 @@ -45,41 +45,67 @@
  #include <net/tcp_states.h>
  #include <net/ip6_checksum.h>
@@ -25617,9 +25656,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/udp.c linux-3.3.1-vs2.3.3.2/net/ipv6/
                }
                if (!ipv6_addr_any(&np->daddr)) {
                        if (!ipv6_addr_equal(&np->daddr, saddr))
-diff -NurpP --minimal linux-3.3.1/net/ipv6/xfrm6_policy.c linux-3.3.1-vs2.3.3.2/net/ipv6/xfrm6_policy.c
---- linux-3.3.1/net/ipv6/xfrm6_policy.c        2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/ipv6/xfrm6_policy.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/ipv6/xfrm6_policy.c linux-3.4-vs2.3.3.4/net/ipv6/xfrm6_policy.c
+--- linux-3.4/net/ipv6/xfrm6_policy.c  2012-03-19 19:47:33.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/ipv6/xfrm6_policy.c        2012-05-21 18:15:05.000000000 +0200
 @@ -63,7 +63,7 @@ static int xfrm6_get_saddr(struct net *n
        dev = ip6_dst_idev(dst)->dev;
        ipv6_dev_get_saddr(dev_net(dev), dev,
@@ -25629,9 +25668,9 @@ diff -NurpP --minimal linux-3.3.1/net/ipv6/xfrm6_policy.c linux-3.3.1-vs2.3.3.2/
        dst_release(dst);
        return 0;
  }
-diff -NurpP --minimal linux-3.3.1/net/netfilter/ipvs/ip_vs_xmit.c linux-3.3.1-vs2.3.3.2/net/netfilter/ipvs/ip_vs_xmit.c
---- linux-3.3.1/net/netfilter/ipvs/ip_vs_xmit.c        2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/netfilter/ipvs/ip_vs_xmit.c      2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/netfilter/ipvs/ip_vs_xmit.c linux-3.4-vs2.3.3.4/net/netfilter/ipvs/ip_vs_xmit.c
+--- linux-3.4/net/netfilter/ipvs/ip_vs_xmit.c  2012-03-19 19:47:33.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/netfilter/ipvs/ip_vs_xmit.c        2012-05-21 18:15:05.000000000 +0200
 @@ -226,7 +226,7 @@ __ip_vs_route_output_v6(struct net *net,
                return dst;
        if (ipv6_addr_any(&fl6.saddr) &&
@@ -25641,9 +25680,9 @@ diff -NurpP --minimal linux-3.3.1/net/netfilter/ipvs/ip_vs_xmit.c linux-3.3.1-vs
                goto out_err;
        if (do_xfrm) {
                dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), NULL, 0);
-diff -NurpP --minimal linux-3.3.1/net/netlink/af_netlink.c linux-3.3.1-vs2.3.3.2/net/netlink/af_netlink.c
---- linux-3.3.1/net/netlink/af_netlink.c       2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/netlink/af_netlink.c     2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/netlink/af_netlink.c linux-3.4-vs2.3.3.4/net/netlink/af_netlink.c
+--- linux-3.4/net/netlink/af_netlink.c 2012-05-21 18:07:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/netlink/af_netlink.c       2012-05-21 18:15:05.000000000 +0200
 @@ -55,6 +55,9 @@
  #include <linux/types.h>
  #include <linux/audit.h>
@@ -25654,7 +25693,7 @@ diff -NurpP --minimal linux-3.3.1/net/netlink/af_netlink.c linux-3.3.1-vs2.3.3.2
  
  #include <net/net_namespace.h>
  #include <net/sock.h>
-@@ -1908,6 +1911,8 @@ static struct sock *netlink_seq_socket_i
+@@ -1926,6 +1929,8 @@ static struct sock *netlink_seq_socket_i
                        sk_for_each(s, node, &hash->table[j]) {
                                if (sock_net(s) != seq_file_net(seq))
                                        continue;
@@ -25663,7 +25702,7 @@ diff -NurpP --minimal linux-3.3.1/net/netlink/af_netlink.c linux-3.3.1-vs2.3.3.2
                                if (off == pos) {
                                        iter->link = i;
                                        iter->hash_idx = j;
-@@ -1942,7 +1947,8 @@ static void *netlink_seq_next(struct seq
+@@ -1960,7 +1965,8 @@ static void *netlink_seq_next(struct seq
        s = v;
        do {
                s = sk_next(s);
@@ -25673,7 +25712,7 @@ diff -NurpP --minimal linux-3.3.1/net/netlink/af_netlink.c linux-3.3.1-vs2.3.3.2
        if (s)
                return s;
  
-@@ -1954,7 +1960,8 @@ static void *netlink_seq_next(struct seq
+@@ -1972,7 +1978,8 @@ static void *netlink_seq_next(struct seq
  
                for (; j <= hash->mask; j++) {
                        s = sk_head(&hash->table[j]);
@@ -25683,9 +25722,9 @@ diff -NurpP --minimal linux-3.3.1/net/netlink/af_netlink.c linux-3.3.1-vs2.3.3.2
                                s = sk_next(s);
                        if (s) {
                                iter->link = i;
-diff -NurpP --minimal linux-3.3.1/net/socket.c linux-3.3.1-vs2.3.3.2/net/socket.c
---- linux-3.3.1/net/socket.c   2012-03-19 19:47:33.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/socket.c 2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/socket.c linux-3.4-vs2.3.3.4/net/socket.c
+--- linux-3.4/net/socket.c     2012-05-21 18:07:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/socket.c   2012-05-21 18:15:05.000000000 +0200
 @@ -98,6 +98,10 @@
  
  #include <net/sock.h>
@@ -25792,9 +25831,9 @@ diff -NurpP --minimal linux-3.3.1/net/socket.c linux-3.3.1-vs2.3.3.2/net/socket.
  
        err = sock1->ops->socketpair(sock1, sock2);
        if (err < 0)
-diff -NurpP --minimal linux-3.3.1/net/sunrpc/auth.c linux-3.3.1-vs2.3.3.2/net/sunrpc/auth.c
---- linux-3.3.1/net/sunrpc/auth.c      2011-10-24 18:45:34.000000000 +0200
-+++ linux-3.3.1-vs2.3.3.2/net/sunrpc/auth.c    2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/sunrpc/auth.c linux-3.4-vs2.3.3.4/net/sunrpc/auth.c
+--- linux-3.4/net/sunrpc/auth.c        2011-10-24 18:45:34.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/sunrpc/auth.c      2012-05-21 18:15:05.000000000 +0200
 @@ -14,6 +14,7 @@
  #include <linux/hash.h>
  #include <linux/sunrpc/clnt.h>
@@ -25819,9 +25858,9 @@ diff -NurpP --minimal linux-3.3.1/net/sunrpc/auth.c linux-3.3.1-vs2.3.3.2/net/su
        };
  
        dprintk("RPC: %5u looking up %s cred\n",
-diff -NurpP --minimal linux-3.3.1/net/sunrpc/auth_unix.c linux-3.3.1-vs2.3.3.2/net/sunrpc/auth_unix.c
---- linux-3.3.1/net/sunrpc/auth_unix.c 2012-01-09 16:15:04.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/sunrpc/auth_unix.c       2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/sunrpc/auth_unix.c linux-3.4-vs2.3.3.4/net/sunrpc/auth_unix.c
+--- linux-3.4/net/sunrpc/auth_unix.c   2012-01-09 16:15:04.000000000 +0100
++++ linux-3.4-vs2.3.3.4/net/sunrpc/auth_unix.c 2012-05-21 18:15:05.000000000 +0200
 @@ -12,12 +12,14 @@
  #include <linux/module.h>
  #include <linux/sunrpc/clnt.h>
@@ -25880,18 +25919,18 @@ diff -NurpP --minimal linux-3.3.1/net/sunrpc/auth_unix.c linux-3.3.1-vs2.3.3.2/n
        hold = p++;
        for (i = 0; i < 16 && cred->uc_gids[i] != (gid_t) NOGROUP; i++)
                *p++ = htonl((u32) cred->uc_gids[i]);
-diff -NurpP --minimal linux-3.3.1/net/sunrpc/clnt.c linux-3.3.1-vs2.3.3.2/net/sunrpc/clnt.c
---- linux-3.3.1/net/sunrpc/clnt.c      2012-01-09 16:15:04.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/sunrpc/clnt.c    2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/sunrpc/clnt.c linux-3.4-vs2.3.3.4/net/sunrpc/clnt.c
+--- linux-3.4/net/sunrpc/clnt.c        2012-05-21 18:07:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/sunrpc/clnt.c      2012-05-21 18:15:05.000000000 +0200
 @@ -31,6 +31,7 @@
- #include <linux/in.h>
  #include <linux/in6.h>
  #include <linux/un.h>
+ #include <linux/rcupdate.h>
 +#include <linux/vs_cvirt.h>
  
  #include <linux/sunrpc/clnt.h>
  #include <linux/sunrpc/rpc_pipe_fs.h>
-@@ -361,6 +362,9 @@ struct rpc_clnt *rpc_create(struct rpc_c
+@@ -483,6 +484,9 @@ struct rpc_clnt *rpc_create(struct rpc_c
        if (!(args->flags & RPC_CLNT_CREATE_QUIET))
                clnt->cl_chatty = 1;
  
@@ -25901,9 +25940,9 @@ diff -NurpP --minimal linux-3.3.1/net/sunrpc/clnt.c linux-3.3.1-vs2.3.3.2/net/su
        return clnt;
  }
  EXPORT_SYMBOL_GPL(rpc_create);
-diff -NurpP --minimal linux-3.3.1/net/unix/af_unix.c linux-3.3.1-vs2.3.3.2/net/unix/af_unix.c
---- linux-3.3.1/net/unix/af_unix.c     2012-03-19 19:47:34.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/net/unix/af_unix.c   2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/net/unix/af_unix.c linux-3.4-vs2.3.3.4/net/unix/af_unix.c
+--- linux-3.4/net/unix/af_unix.c       2012-05-21 18:07:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/net/unix/af_unix.c     2012-05-21 18:15:05.000000000 +0200
 @@ -114,6 +114,8 @@
  #include <linux/mount.h>
  #include <net/checksum.h>
@@ -25922,7 +25961,7 @@ diff -NurpP --minimal linux-3.3.1/net/unix/af_unix.c linux-3.3.1-vs2.3.3.2/net/u
                if (u->addr->len == len &&
                    !memcmp(u->addr->name, sunname, len))
                        goto found;
-@@ -2235,6 +2239,8 @@ static struct sock *unix_seq_idx(struct 
+@@ -2266,6 +2270,8 @@ static struct sock *unix_seq_idx(struct 
        for (s = first_unix_socket(&iter->i); s; s = next_unix_socket(&iter->i, s)) {
                if (sock_net(s) != seq_file_net(seq))
                        continue;
@@ -25931,7 +25970,7 @@ diff -NurpP --minimal linux-3.3.1/net/unix/af_unix.c linux-3.3.1-vs2.3.3.2/net/u
                if (off == pos)
                        return s;
                ++off;
-@@ -2259,7 +2265,8 @@ static void *unix_seq_next(struct seq_fi
+@@ -2290,7 +2296,8 @@ static void *unix_seq_next(struct seq_fi
                sk = first_unix_socket(&iter->i);
        else
                sk = next_unix_socket(&iter->i, sk);
@@ -25941,9 +25980,9 @@ diff -NurpP --minimal linux-3.3.1/net/unix/af_unix.c linux-3.3.1-vs2.3.3.2/net/u
                sk = next_unix_socket(&iter->i, sk);
        return sk;
  }
-diff -NurpP --minimal linux-3.3.1/scripts/checksyscalls.sh linux-3.3.1-vs2.3.3.2/scripts/checksyscalls.sh
---- linux-3.3.1/scripts/checksyscalls.sh       2012-03-19 19:47:34.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/scripts/checksyscalls.sh     2012-02-24 03:55:07.000000000 +0100
+diff -NurpP --minimal linux-3.4/scripts/checksyscalls.sh linux-3.4-vs2.3.3.4/scripts/checksyscalls.sh
+--- linux-3.4/scripts/checksyscalls.sh 2012-03-19 19:47:34.000000000 +0100
++++ linux-3.4-vs2.3.3.4/scripts/checksyscalls.sh       2012-05-21 18:15:05.000000000 +0200
 @@ -193,7 +193,6 @@ cat << EOF
  #define __IGNORE_afs_syscall
  #define __IGNORE_getpmsg
@@ -25952,10 +25991,10 @@ diff -NurpP --minimal linux-3.3.1/scripts/checksyscalls.sh linux-3.3.1-vs2.3.3.2
  EOF
  }
  
-diff -NurpP --minimal linux-3.3.1/security/commoncap.c linux-3.3.1-vs2.3.3.2/security/commoncap.c
---- linux-3.3.1/security/commoncap.c   2012-03-19 19:47:34.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/security/commoncap.c 2012-02-24 18:08:52.000000000 +0100
-@@ -74,14 +74,20 @@ int cap_netlink_send(struct sock *sk, st
+diff -NurpP --minimal linux-3.4/security/commoncap.c linux-3.4-vs2.3.3.4/security/commoncap.c
+--- linux-3.4/security/commoncap.c     2012-05-21 18:07:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/security/commoncap.c   2012-05-21 18:15:05.000000000 +0200
+@@ -76,14 +76,20 @@ int cap_netlink_send(struct sock *sk, st
  int cap_capable(const struct cred *cred, struct user_namespace *targ_ns,
                int cap, int audit)
  {
@@ -25978,7 +26017,7 @@ diff -NurpP --minimal linux-3.3.1/security/commoncap.c linux-3.3.1-vs2.3.3.2/sec
  
                /* Have we tried all of the parent namespaces? */
                if (targ_ns == &init_user_ns)
-@@ -605,7 +611,7 @@ int cap_inode_setxattr(struct dentry *de
+@@ -612,7 +618,7 @@ int cap_inode_setxattr(struct dentry *de
  
        if (!strncmp(name, XATTR_SECURITY_PREFIX,
                     sizeof(XATTR_SECURITY_PREFIX) - 1) &&
@@ -25987,7 +26026,7 @@ diff -NurpP --minimal linux-3.3.1/security/commoncap.c linux-3.3.1-vs2.3.3.2/sec
                return -EPERM;
        return 0;
  }
-@@ -631,7 +637,7 @@ int cap_inode_removexattr(struct dentry 
+@@ -638,7 +644,7 @@ int cap_inode_removexattr(struct dentry 
  
        if (!strncmp(name, XATTR_SECURITY_PREFIX,
                     sizeof(XATTR_SECURITY_PREFIX) - 1) &&
@@ -25996,10 +26035,10 @@ diff -NurpP --minimal linux-3.3.1/security/commoncap.c linux-3.3.1-vs2.3.3.2/sec
                return -EPERM;
        return 0;
  }
-diff -NurpP --minimal linux-3.3.1/security/selinux/hooks.c linux-3.3.1-vs2.3.3.2/security/selinux/hooks.c
---- linux-3.3.1/security/selinux/hooks.c       2012-03-19 19:47:34.000000000 +0100
-+++ linux-3.3.1-vs2.3.3.2/security/selinux/hooks.c     2012-02-24 03:55:07.000000000 +0100
-@@ -67,7 +67,6 @@
+diff -NurpP --minimal linux-3.4/security/selinux/hooks.c linux-3.4-vs2.3.3.4/security/selinux/hooks.c
+--- linux-3.4/security/selinux/hooks.c 2012-05-21 18:07:41.000000000 +0200
++++ linux-3.4-vs2.3.3.4/security/selinux/hooks.c       2012-05-21 18:15:05.000000000 +0200
+@@ -66,7 +66,6 @@
  #include <linux/dccp.h>
  #include <linux/quota.h>
  #include <linux/un.h>         /* for Unix socket types */
index e7ca7db1a8829ab781d60bdae284aab2f0615542..afa86be2ae7d18f668886f52dd4e99558025e9b7 100644 (file)
@@ -212,7 +212,7 @@ Patch59:    kernel-rndis_host-wm5.patch
 # http://patches.aircrack-ng.org/hostap-kernel-2.6.18.patch
 Patch85:       kernel-hostap.patch
 
-# http://vserver.13thfloor.at/Experimental/patch-3.3.1-vs2.3.3.2.diff
+# http://vserver.13thfloor.at/Experimental/patch-3.4-vs2.3.3.4.diff
 Patch100:      kernel-vserver-2.3.patch
 Patch101:      kernel-vserver-fixes.patch
 
@@ -244,9 +244,7 @@ Patch2000:  kernel-small_fixes.patch
 Patch2001:     kernel-pwc-uncompress.patch
 Patch2003:     kernel-regressions.patch
 
-# 0001-AppArmor-compatibility-patch-for-v5-network-controll.patch
-# 0002-AppArmor-compatibility-patch-for-v5-interface.patch
-# from http://kernel.org/pub/linux/security/apparmor/apparmor-2.6.36-patches.tgz
+# http://git.kernel.org/?p=linux/kernel/git/jj/linux-apparmor.git;a=shortlog;h=refs/heads/v3.4-aa2.8
 Patch5000:     kernel-apparmor.patch
 
 # for rescuecd
This page took 3.612079 seconds and 4 git commands to generate.