]> 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>
 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>
 ---
 
 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
 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
 --- 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
 +              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
  
  
  # 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 "};" >> $@
  
        echo "};" >> $@
  
-+# Build a lower case string table of address family names.
++# Build a lower case string table of address family names
 +# Transform lines from
 +# 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
 +# 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[] = {" > $@ ;\
 +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 "};" >> $@
 +      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)/capability.o : $(obj)/capability_names.h
++$(obj)/net.o : $(obj)/net_names.h
  $(obj)/resource.o : $(obj)/rlim_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)
        $(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)
 +      $(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
 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
 --- /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
 +/*
 + * 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
 + *
 + * 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 <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
 +/* 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];
 +};
 +
 +      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);
 +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
 +
 +#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 @@
 --- 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"
  
 +#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
   * @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;
        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
  };
  
 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 @@
 --- 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"
  #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;
  }
  
        return error;
  }
  
@@ -264,9 +573,10 @@ index ae3a698..05c018b 100644
 +      return aa_revalidate_sk(OP_SOCK_SHUTDOWN, sk);
 +}
 +
 +      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,
  
        .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
        .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
 --- /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
 +/*
 + * 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
 + *
 + * 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 "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 */
 +};
 +
 +/* audit callback for net specific fields */
@@ -334,20 +635,18 @@ index 0000000..1765901
 +      struct common_audit_data *sa = va;
 +
 +      audit_log_format(ab, " family=");
 +      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 {
 +      } 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=");
 +      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 {
 +      } 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;
 +{
 +      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 */
 +      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) &&
 +              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 {
 +                      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 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;
 +
 +              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)
 +              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);
 +      }
 +
 +      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
 +      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)
 --- 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
  
        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
 --- a/security/apparmor/policy_unpack.c
 +++ b/security/apparmor/policy_unpack.c
-@@ -190,6 +190,19 @@ fail:
+@@ -193,6 +193,19 @@ fail:
        return 0;
  }
  
        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)) {
  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;
  {
        struct aa_profile *profile = NULL;
        const char *name = NULL;
--      int error = -EPROTO;
 +      size_t size = 0;
 +      size_t size = 0;
-+      int i, error = -EPROTO;
+       int i, error = -EPROTO;
        kernel_cap_t tmpcap;
        u32 tmp;
        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;
  
        if (!unpack_rlimits(e, profile))
                goto fail;
  
@@ -536,476 +836,956 @@ index e33aaf7..fa3f1b4 100644
 +              }
 +              if (!unpack_nameX(e, AA_ARRAYEND, NULL))
 +                      goto fail;
 +              }
 +              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;
 +
 +      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>
 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>
 
 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
 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
 --- 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 \
  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
 new file mode 100644
-index 0000000..dc8c744
+index 0000000..bc17a53
 --- /dev/null
 --- /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
 + *
 +/*
 + * 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 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;
 +}
 +
 +
 +      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)
 +      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)
 +      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)
 +      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:
 @@ -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"
 + 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
 @@ -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"
  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
 @@ -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
  
        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>
 @@ -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>
  
  #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
 @@ -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 */
        .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
  #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));
        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"
  
  
  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"
  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)
 @@ -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)
                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");
  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();
  }
        __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);
  
        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,
  
        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"
 @@ -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"
  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
 @@ -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]
        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"
 @@ -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"
  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"
 @@ -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"
  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
 @@ -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
        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();
        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);
        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>
 @@ -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>
  
  #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) {
        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);
                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
                        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);
        }
        } 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
  
        /*
         * 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"
  
  
  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"
  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"
  
  
  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"
  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>
 @@ -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>
  
  #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;
  
        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. */
        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 */
 @@ -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 */
        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
 @@ -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
        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
 @@ -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
        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 */
 @@ -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 */
        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();
  
        __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;
  
        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"
 @@ -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"
  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)
 @@ -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)
        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 */
  
                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);
  #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)
                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) {
  
        /* 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
 @@ -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);
                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"
  
  
  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
  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
 @@ -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
  #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
  #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());
  
  #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)
  {
  
  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());
  }
  
               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"
  
  
  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"
  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>
 @@ -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>
  #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)
 @@ -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
  #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>
 @@ -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>
  #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)
 @@ -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)
  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"
  
  
  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"
  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>
 @@ -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>
  #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"
  
  
  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"
  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
 @@ -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
  #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
 @@ -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
  /*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
 @@ -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
  /*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"
 @@ -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"
  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"
 @@ -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.
 @@ -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   # */
 +
 +#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"
  
  
  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"
  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
 @@ -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
  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 @@
 @@ -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
 -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"
 @@ -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
  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
 @@ -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/
  
  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>
 @@ -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);
        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
 @@ -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
 +
 +
 +#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
 @@ -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"
        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,
  
        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;
  
                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>
 @@ -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);
                        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;
  
        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)
                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>
 @@ -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
  /*-----------------------------------------------------------------
   * 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);
  
        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;
        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;
 @@ -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.
   *---------------------------------------------------------------*/
  /*-----------------------------------------------------------------
   * 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>
 @@ -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>
  #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;
        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;
  
        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;
  
        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;
  
        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))) &&
  
                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)
                        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;
  
                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)
                        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;
  
  
                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;
                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;
  
                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) {
        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>
 @@ -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>
  
  #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,
  };
  
        .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);
  
  /* 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 */
        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 */
        /* 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';
                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;
        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>
  
  #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
  
  
  #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;
  
        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;
                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;
                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();
        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>
 @@ -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;
        }
                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>
  #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"
  
  #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;
                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);
                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;
  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;
  
        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);
  
        }
        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) {
        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;
  
        /* 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;
        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_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 & \
  
 +#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);
  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);
  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);
  
  
  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);
  
  
  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);
  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);
  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;
        }
  
                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) {
        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>
 @@ -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"
  #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;
        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;
  
        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));
                                    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);
        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)
  {
                            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);
        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,
        .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,
  };
  
        .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;
 @@ -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
        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_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 = {
 -      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_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},
  };
  
 +      {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");
 +#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);
                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",
  
 +      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;
  
        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>
 @@ -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);
                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>
 @@ -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"
  
  #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);
        }
  
                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?
         *
        /*
         * 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++;
  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)
  }
  
  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;
  
        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;
        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;
  
        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;
        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++;
                }
  
                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;
                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>
 @@ -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
  /*
  
  #define DEVPTS_DEFAULT_MODE 0600
  /*
-@@ -36,6 +37,20 @@
+@@ -36,6 +37,21 @@
  #define DEVPTS_DEFAULT_PTMX_MODE 0000
  #define PTMX_MINOR    2
  
  #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,
 +};
 +
 +      .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;
  }
  
        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,
  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;
        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();
  
 +      /* 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)
        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);
        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;
  
        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);
 @@ -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:
        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);
  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);
  
  /* 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,
  };
 @@ -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>
 @@ -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);
  
        } 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>
 @@ -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;
                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>
  
 @@ -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;
  
                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>
 @@ -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);
  }
        }
        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,
        .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,
  };
  
        .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,
 @@ -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);
  
        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,
  };
  
  #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/random.h>
- #include <linux/bitops.h>
 +#include <linux/vs_tag.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;
                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);
  
        } 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 <linux/namei.h>
 +#include <linux/vs_tag.h>
- #include <trace/events/ext3.h>
++
+ #include "ext3.h"
  #include "xattr.h"
  #include "acl.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;
  
  {
        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)
  }
  
  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;
        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)
  
        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);
        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);
        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;
        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:
        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))) {
        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);
        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) ||
        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,
                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;
                        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);
        }
                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 <asm/uaccess.h>
+ #include "ext3.h"
  
 +
 +int ext3_sync_flags(struct inode *inode, int flags, int vflags)
  
 +
 +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;
  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);
  
  
                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 */
                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
                 */
                 *
                 * 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;
                }
                        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;
  
                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;
  
                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/quotaops.h>
- #include <linux/buffer_head.h>
- #include <linux/bio.h>
 +#include <linux/vs_tag.h>
 +#include <linux/vs_tag.h>
- #include <trace/events/ext3.h>
++
+ #include "ext3.h"
  #include "namei.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);
                                }
                                        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)
                        }
                }
                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
        .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,
  };
  
        .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,
        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 = {
  };
  
  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"},
        {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},
  };
  
        {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;
                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;
                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;
  
                            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);
  
        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");
  
        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);
  
        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 */
  #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 */
  
  #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] */
                        __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 */
                } 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
  #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__)
  #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 */
  #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 */
  #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);
                           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,
  /* 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,
 @@ -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,
  };
  
 +      .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>
 @@ -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"
  #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;
                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);
  
        } 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>
 @@ -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"
  
  #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;
  
  {
        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);
  }
  
        } 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;
        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)
  
        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);
                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 */
        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;
        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,
        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))) {
        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);
        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) ||
        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,
                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;
                        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);
        }
                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>
 @@ -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;
                }
                        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>
 @@ -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 = {
  };
  
  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,
        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 = {
  };
  
  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},
  };
  
 +      {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
 +#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
 +#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
 +#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);
  
        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");
  
        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);
  
        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>
 @@ -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)) {
  
        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>
 @@ -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;
  
  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);
                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
                } else {
                        /*
                         * The fd may be claimed in the fd bitmap but not yet
-@@ -466,6 +469,7 @@ repeat:
+@@ -464,6 +467,7 @@ repeat:
        else
        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) {
        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>
 @@ -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:
        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);
        }
        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);
        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);
  {
        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);
        }
                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>
 @@ -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)
  #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);
  {
        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);
  }
  
        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);
                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;
  }
        }
        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,
        [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] = {
  };
  
  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,
        [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)
  };
  
  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;
  {
        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)
        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;
        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 */
  }
  
  /* 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);
  }
  
        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) {
  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;
  
 @@ -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;
   
  #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"
  
  /*
  #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;
        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);
        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;
        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))
        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);
  
  }
  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
  /**
   *    __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;
        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))
        } 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;
        } 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);
  
  }
  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>
 @@ -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>
  
  
  #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>
 @@ -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;
                                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);
 @@ -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 = {
  };
  
  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>
 @@ -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;
  
                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 */
 @@ -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 */
  #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
 @@ -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)
  
  /*
   *    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>
 @@ -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.
        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>
 @@ -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);
 @@ -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 *);
  
  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>
 @@ -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"
  #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);
        }
  
                        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);
  }
  
        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
  #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 = {
  };
  
  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,
 @@ -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
        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
  #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");
  
        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.
   */
 @@ -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;
  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);
  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);
  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>
 @@ -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);
        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();
        }
  
                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;
  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);
                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;
  
        new_fl = NULL;
        error = 0;
  
-@@ -802,7 +826,8 @@ out:
+@@ -803,7 +827,8 @@ out:
        return error;
  }
  
        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;
  {
        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;
  
        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.
        /*
         * 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();
            (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();
        }
  
        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)
  {
  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);
  
  }
  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 (;;) {
        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);
                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);
                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:
        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;
  
        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.
         */
        /*
         * 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;
  
        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.
         */
        /*
         * 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), "");
  
  
        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;
  }
  
        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;
 @@ -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)
  };
  
  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>
 @@ -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()... */
                }
                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)))
 +
 +              /* 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 */
 +
 +      /* FIXME: check dx permission */
 +
+ done:
        path->mnt = mnt;
        path->dentry = dentry;
        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)||
        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))
                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);
  
  {
        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;
  }
  
        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;
        }
  
                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;
        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);
        }
  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);
        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;
  
        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);
        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);
        }
                        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);
  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;
                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);
        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.
         */
        /*
         * 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;
                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);
  }
  
        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);
 +}
 +
 +      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;
 +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 = 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;
 +
 +      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]",
 +      }
 +      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
 +      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)
  {
 +
  /* 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 */
 @@ -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);
  }
  
        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;
  
        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;
  }
  
        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;
        }
  
                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;
        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>
 @@ -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) {
  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/compat.h>
  #include <linux/freezer.h>
+ #include <linux/crc32.h>
 +#include <linux/vs_tag.h>
  
 +#include <linux/vs_tag.h>
  
- #include <asm/system.h>
  #include <asm/uaccess.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;
        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) */
  
                /* 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);
                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));
  
                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)
                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
                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);
                }
                         */
                        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;
                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;
                        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);
        }
                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;
        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? */
  
  
        /* 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;
        }
  
                        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)
  
        /* 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;
        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;
  
 +      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,
                        __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);
  
                                | 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));
  
        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) {
                                | 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
                }
        } 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) {
                                | 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
                }
        } 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);
  
                                | 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;
        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>
 @@ -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/parser.h>
+ #include <linux/nsproxy.h>
+ #include <linux/rcupdate.h>
 +#include <linux/vs_tag.h>
  
 +#include <linux/vs_tag.h>
  
- #include <asm/system.h>
  #include <asm/uaccess.h>
  #include <asm/uaccess.h>
 @@ -86,6 +87,7 @@ enum {
        Opt_sharecache, Opt_nosharecache,
        Opt_resvport, Opt_noresvport,
 @@ -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,
  
        /* Mount options that take integer arguments */
        Opt_port,
-@@ -99,6 +101,7 @@ enum {
+@@ -98,6 +100,7 @@ enum {
+       Opt_mountport,
        Opt_mountvers,
        Opt_mountvers,
-       Opt_nfsvers,
        Opt_minorversion,
 +      Opt_tagid,
  
        /* Mount options that take string arguments */
        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" },
  
 +      { 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 }
  };
  
        { 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", "" },
                { 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;
                { 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;
                        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
  
                /*
                 * 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;
                                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
  
                /*
                 * 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> */
  
 @@ -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;
  
  
        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 @@
   */
  
 @@ -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 {
        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>
 @@ -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"
  
  #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) {
                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)
                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"
 @@ -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);
  
        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);
 @@ -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,
        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;
 @@ -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
  };
  
  #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;
  
 @@ -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;
  
        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>
 @@ -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)
  
        /* 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);
 @@ -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)
  {
  
  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;
  }
  
        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);
                                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;
  
        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);
        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;
  }
  
        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;
  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>
 @@ -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));
        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 */
 @@ -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
  };
  
  #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 */
 @@ -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 */
  
  #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,
 @@ -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
        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;
                            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\" "
                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>
 @@ -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
        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)
        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>
 @@ -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;
 +      }
 +
 +                      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>
 @@ -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.
        /*
         * 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();
        }
                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:
        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 */
  
  
  /* 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
  /*
   *    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) {
        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();
                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;
        }
                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;
  }
        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;
  
        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.
        /*
         * 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;
  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);
        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;
  
  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),
  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
  #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),
        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
  #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,
  };
  
  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) {
        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
                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];
        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);
  }
        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;
  
                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;
  
        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;
                        __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;
                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;
        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();
  
        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>
 @@ -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;
                } 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;
                }
                        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)
                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>
   */
  
  #include <linux/proc_fs.h>
 +#include <linux/vs_pid.h>
++
+ struct  ctl_table_header;
  
  extern struct proc_dir_entry proc_root;
  
  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);
                                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 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;
  }
  
        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;
  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)
 @@ -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;
  }
                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;
 @@ -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;
                        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>
 @@ -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;
  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();
  #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
  }
  
  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,
        .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",
  };
  
        .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>
 @@ -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)),
        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" },
 @@ -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);
        /* 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 reserve = flags & DQUOT_SPACE_RESERVE;
-       int nofail = flags & DQUOT_SPACE_NOFAIL;
  
 +      if ((ret = dl_alloc_space(inode, number)))
 +              return ret;
  
 +      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
        /*
         * 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;
  
 +      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))
        /* 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);
        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)) {
        /* 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))
  
 +      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>
 @@ -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;
        }
  
                        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)
  {
  /* 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);
        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
        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,
 @@ -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,
  };
 +      .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>
 @@ -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)
                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>
 @@ -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;
                        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 @@
 @@ -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>
  
  #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);
  }
  
        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},
 @@ -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,
        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>
 @@ -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>
  #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;
 @@ -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;
        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>
 @@ -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;
  }
  
        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/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"
  
  
 +#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;
  
        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;
        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;
 @@ -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;
  
        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>
 @@ -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;
        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/fsnotify.h>
  #include <linux/audit.h>
+ #include <linux/vmalloc.h>
 +#include <linux/mount.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)) {
         * 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;
        }
                        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 */
 @@ -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__ */
 +#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 */
 @@ -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  */
        __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"
 @@ -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.
   */
  /*
   * 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;
  }
 @@ -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:
        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;
        }
        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;
        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.
         */
         * 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)
  
        /* 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 */
 @@ -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 */
        __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 *,
  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);
  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"
 @@ -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"
  #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;
                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
        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;
  
        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)
        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;
        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)
        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;
                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
        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:
        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: {
                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);
 @@ -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,
  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"
 @@ -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>
  
  #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;
        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;
        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,
        .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 = {
  };
  
  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,
        .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 = {
  };
  
  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;
                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
        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;
                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;
        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:
  
        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;
        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())
 @@ -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))
  #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(
        }
  
 @@ -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)) {
  
        /* 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 */
  
                                                   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.
  
  /*
   * 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 */
 @@ -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}
        {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.");
                } 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;
                } 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;
                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
                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;
  
        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.
        /*
         * 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;
  }
 @@ -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,
  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/
  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
  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 */
 @@ -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)
  
  /*
   * 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 *);
 @@ -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
  /**
   * 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 */
 @@ -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 */
  #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)
  #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 */
  #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
  
  /*
   * 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)
  #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)
  #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)
  
  #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. */
  
  /* 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 */
  #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
  
  #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)
  #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
  
  /*
   * 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;
        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;
        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;
  };
  
        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.
   */
  /*
   * 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;
        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;
  
  #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;
                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;
        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)
  {
  
  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);
  }
  
  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;
        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;
        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;
        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: */
  
        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 *);
        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);
        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 *);
                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);
  
  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);
  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 *);
  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,
        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,
        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 */
  #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
  #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)
 @@ -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
  
  /* 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_TRACE_RECURSION                                            \
        INIT_TASK_RCU_PREEMPT(tsk)                                      \
+       INIT_CPUSET_SEQ                                                 \
 +      .xid            = 0,                                            \
 +      .vx_info        = NULL,                                         \
 +      .nid            = 0,                                            \
 +      .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;
 @@ -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; 
        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)
 @@ -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)
  }
  
  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];
 @@ -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); 
  
        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
 @@ -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 */
  #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
 @@ -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
  #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);
  
  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)
  {
  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 */
 @@ -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 */
        /*
  
        /* 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;\
  })
  
        __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;
  #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
 @@ -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 */
  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
 @@ -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
  /**
  
  #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);
  
  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
  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 */
 @@ -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
  
  /* 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>
 @@ -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
  }
  
  #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,
 @@ -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)                             \
  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;
 @@ -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;
        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_
  
 @@ -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)
  }
  
  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
 @@ -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__
  
  
  #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;
  
  #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;
  /* 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);
  
  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;
  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)
  {
  
  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)
  {
  
  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 */
 @@ -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;
  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;
 @@ -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;
        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;
 @@ -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;
        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() */
        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 */
  
        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) */
 @@ -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 */
  
        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>
 @@ -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;
  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;
  }
        a->tv_nsec = ns;
  }
-+
 +#include <linux/vs_time.h>
 +
  #endif /* __KERNEL__ */
  
  #define NFDBITS                       __NFDBITS
 +#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;
 @@ -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;
  
  
  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
  }
  
 @@ -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
  
  }
  #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 @@
 +
 +/*
 @@ -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 */
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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
 @@ -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
 +#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 \
 @@ -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
 +
 +
 +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
 @@ -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
 +#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
 @@ -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 */
 +};
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +#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
 +
 +#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;
 +
 +
 +struct timespec;
 +
++void vx_vsi_boottime(struct timespec *);
++
 +void vx_vsi_uptime(struct timespec *, 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 */
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +};
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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
 +}
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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
 @@ -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 */
 +
 +
 +#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
 @@ -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 */
 +#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
 @@ -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 */
 +
 +#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,
 @@ -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);
  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>
 @@ -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);
  #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
 @@ -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;
        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,
 @@ -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,
  
  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);
  }
 @@ -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;
                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
  #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()
        /*
         * 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
  #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;
        /*
        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
  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
        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
  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
        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>
 @@ -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>
  
  #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>
 @@ -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 */
        } 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) {
            + 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
                /*
                 * 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);
                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)
                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>
 @@ -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);
  
        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>
 @@ -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>
 @@ -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);
  }
        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>
 @@ -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:
        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/
 @@ -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-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;
 @@ -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 */
  
                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>
 @@ -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
  /**
   * 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;
  
        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;
  }
  
        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
  };
  
  #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
   */
  /*
   * 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.
   */
   *
   * 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);
        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;
  }
        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);
  
  /*
  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>
 @@ -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>
  #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();
                                }
                                        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);
  
        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 (;;)
        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>
  #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>
  
  #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);
        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);
  }
        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);
        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;
        }
  
                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);
 +      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));
                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 */
        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()
         */
         * 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;
        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;
        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);
  
        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
        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) &&
        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);
  
        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);
        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>
 @@ -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);
  #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>
 @@ -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,
                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>
 @@ -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);
  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/slab.h>
  #include <linux/proc_fs.h>
+ #include <linux/reboot.h>
 +#include <linux/vserver/global.h>
  
  #define BITS_PER_PAGE         (PAGE_SIZE*8)
  
 +#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);
                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);
  
        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);
  
        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);
  }
  
        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>
 @@ -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;
  }
        /* 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>
 @@ -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>
  
  
  #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)) {
                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)) {
                        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;
  
        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;
                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;
                }
                        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)
                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:
                /* 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;
                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>
 @@ -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);
  }
  
        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/slab.h>
  #include <linux/init_task.h>
+ #include <linux/binfmts.h>
 +#include <linux/vs_sched.h>
 +#include <linux/vs_cvirt.h>
  
 +#include <linux/vs_sched.h>
 +#include <linux/vs_cvirt.h>
  
+ #include <asm/switch_to.h>
  #include <asm/tlb.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)
  {
   */
  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)
  {
  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);
  
        /* 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)
  {
  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. */
        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))
                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)
  
        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>
 @@ -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>
  
  
  #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;
  
                __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);
        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;
        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);
  
        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>
 @@ -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);
  }
  
        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);
        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))
                        /*
                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);
  
        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;
        }
                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) {
                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)
                                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;
  
                                !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
                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>
 @@ -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>
  
  #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>
 @@ -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
  /*
   * 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;
  
        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:
        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];
  
        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)
                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];
  
        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;
                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 &&
                /* 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,
                        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;
             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;
                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
  #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
  #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
                .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",
  #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" },
 @@ -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" },
  
        { 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);
  
        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;
 @@ -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;
  }
  
        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 do_settimeofday(tv);
 +              return vx_settimeofday(tv);
-       }
        return 0;
  }
        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>
 @@ -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 */
  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>
 @@ -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);
  }
        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>
 @@ -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);
  }
  
        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
 @@ -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
 +
 +      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.
 @@ -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
 +
 +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
 @@ -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;
 +}
 +
 +      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 @@
 +
 +
 @@ -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;
 +}
 +
 +      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
 @@ -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 */
 +}
 +
 +#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
 @@ -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);
 +      /* 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)
 +      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);
 +
 +
 +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
 + *
 +/*
 + *  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>
 +
 +
 +#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();
 +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
 +
 +
 +#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 @@
 +
 +
 @@ -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;
 +}
 +
 +      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
 +
 +#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>
 +
 +#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)
 +
 +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 mnt_namespace *ns;
 +      struct uts_namespace *uts;
 +      struct ipc_namespace *ipc;
-+      struct path path;
-+      char *pstr, *root;
 +      int length = 0;
 +
 +      if (!nsproxy)
 +      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;
 +
 +      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;
 +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 */
 +}
 +
 +#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
 @@ -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);
 +
 +
 +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
 @@ -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 */
 +
 +
 +#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
 @@ -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);
 +
 +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
 + *
 +/*
 + *  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";
 +
 +
 +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;
 +
 +
 +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);
 +      }
 +                      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);
 +}
 +
 +      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
 @@ -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 */
 +
 +
 +#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>
 @@ -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);
 +
 +
 +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
 @@ -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);
 +
 +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
 @@ -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 */
 +
 +
 +#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
 @@ -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
 +}
 +
 +#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 @@
 +
 +
 @@ -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
 @@ -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 */
 +
 +
 +#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
 @@ -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);
 +
 +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
 @@ -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;
 +}
 +
 +      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
 + *
 +/*
 + *  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/vs_context.h>
 +#include <linux/vs_sched.h>
++#include <linux/cpumask.h>
 +#include <linux/vserver/sched_cmd.h>
 +
 +#include <asm/uaccess.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);
 +
 +      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
 +      } 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,
 +
 +      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;
 +}
 +
 +      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)
 @@ -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;
 +}
 +{
 +      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
 @@ -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 */
 +}
 +
 +#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
 @@ -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;
 +}
 +
 +      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
 @@ -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;
 +}
 +
 +      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
 @@ -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 */
 +}
 +
 +#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
 @@ -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);
 +
 +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
 @@ -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 */
 @@ -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;
 +}
 +
 +      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);
  }
  
                                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;
  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/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>
 +#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)
  {
  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;
        /* 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",
  
        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);
  
        /*
        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);
  
  }
  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
  /*
   * 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);
        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");
        }
 +              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>
 @@ -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>
  
  #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;
        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);
  }
  
  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;
        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
  
  }
  #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
   */
 @@ -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>
  #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);
  
  {
        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) {
        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;
        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
        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
 @@ -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
  
  /*
  #if DEBUG
  
  /*
-@@ -3414,6 +3416,7 @@ retry:
+@@ -3466,6 +3468,7 @@ retry:
  
        obj = slab_get_obj(cachep, slabp, nodeid);
        check_slabp(cachep, slabp);
  
        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);
        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:
        /* ___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,
        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);
        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));
  
  
        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>
 @@ -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]);
 +}
 +
 +      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>
 @@ -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);
  
  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");
  
        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;
        }
  
                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);
        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,
        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;
        }
                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>
  #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>
  #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)
        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;
                        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)
        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;
                        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)
        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;
                        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.
   */
  
   *    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;
  {
        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;
  }
  
        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);
  
  
  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 &&
  
        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;
                        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();
        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;
  }
  
        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;
                                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);
  
                        /*  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) {
  
        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;
                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);
  
        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,
        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;
                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,
                        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;
  
        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;
        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>
  #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>
  
  
  #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);
        }
                        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;
  
  
        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));
                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);
  }
  
        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));
  
                /* 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);
                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);
  
                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
                /*
                 * 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);
  
  
        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)
        /*
         * 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
  #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
  
  
  /* The inetsw table contains everything that inet_create needs to
-@@ -326,9 +327,13 @@ lookup_protocol:
+@@ -327,9 +328,13 @@ lookup_protocol:
        }
  
        err = -EPERM;
        }
  
        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;
        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);
        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;
        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;
        }
  
                        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
  
        /* 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) &&
        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)
            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;
  
        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 */
  
        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;
                     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;
        }
                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;
  
        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)
        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];
  
        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",
        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);
  
  }
  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,
  /* 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) {
  
        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) */
                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) {
                           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) {
                                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;
                   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) {
                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,
                                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;
 @@ -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"
                        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);
 @@ -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;
                        }
                }
                                        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>
 @@ -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 &&
                                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>
 @@ -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.
        /*
         * 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>
  
 @@ -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>
  #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>
 @@ -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>
  #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  &&
 @@ -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)
        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;
        }
  
                        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)) {
        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;
  {
        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);
        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;
        /* 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));
        }
                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])
                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;
                                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:
                ;
                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]);
  
        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) {
  
  
        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;
                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>
  #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>
  
  #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) {
                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;
                                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) {
        }
  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) {
                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) {
  
                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;
                        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) {
                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;
                        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:
                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) {
                        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) {
                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;
        }
                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,
        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. */
                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);
        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;
        __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;
  
        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);
  
        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>
 @@ -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);
  #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);
  
  }
  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)
  
  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;
                        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)
                }
                if (inet->inet_daddr) {
                        if (inet->inet_daddr != saddr)
-@@ -442,6 +440,7 @@ exact_match:
+@@ -443,6 +441,7 @@ exact_match:
        return result;
  }
  
        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
   */
  /* 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);
        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;
                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;
  
        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;
        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;
                }
        }
                        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;
  }
        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) ||
                    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;
                    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);
  
                                   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)) {
                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;
        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)
                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;
                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;
                }
                        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);
  
        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)
  
        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
 @@ -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.
        ---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>
 @@ -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
  
  /* 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,
  
  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];
  {
        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;
                        }
                                               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);
  
                        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;
  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,
                   &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;
        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) {
  
        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;
                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,
                        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;
                     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,
                        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;
                     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,
                        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;
        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];
  
        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;
                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;
                        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>
 @@ -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>
  
  #include <net/ip.h>
  #include <net/ipv6.h>
-@@ -160,9 +162,12 @@ lookup_protocol:
+@@ -159,9 +161,12 @@ lookup_protocol:
        }
  
        err = -EPERM;
        }
  
        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
                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();
 @@ -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;
                                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,
 @@ -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))
                                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>
 @@ -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)
                }
                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,
                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;
        }
                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,
 @@ -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;
        }
                        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>
 @@ -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.
                 */
                /* 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>
 @@ -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>
  
  
  #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,
                        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;
  }
  
        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;
                        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);
        }
  
                        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;
  
        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
        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>
 @@ -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);
  
  
        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>
 @@ -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))
                }
                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,
 @@ -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;
  }
        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) &&
 @@ -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);
                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>
 @@ -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>
  
  #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;
                        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;
                                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);
        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;
  
        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]);
  
                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;
                                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>
 @@ -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)
  
        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>
 @@ -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",
        };
  
        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>
 @@ -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]);
        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 @@
 @@ -31,6 +31,7 @@
- #include <linux/in.h>
  #include <linux/in6.h>
  #include <linux/un.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>
 +#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;
  
        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);
        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>
 @@ -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;
                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;
        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;
                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);
                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;
  }
                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
 @@ -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
  }
  
  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)
  {
  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)
  
                /* 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) &&
  
        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;
  }
                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) &&
  
        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;
  }
                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 */
  #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://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
 
 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
 
 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
 Patch5000:     kernel-apparmor.patch
 
 # for rescuecd
This page took 0.675214 seconds and 4 git commands to generate.