]> git.pld-linux.org Git - packages/kernel.git/blobdiff - kernel-vserver-2.3.patch
Up to 4.9.296.
[packages/kernel.git] / kernel-vserver-2.3.patch
index 5ca43d916cfa29bc6c9619bc4dda225762c07904..559a6938ab6a6b381795f169550fdd7e94ae2a44 100644 (file)
@@ -1,6 +1,6 @@
-diff -NurpP --minimal linux-4.9.76/Documentation/vserver/debug.txt linux-4.9.76-vs2.3.9.5/Documentation/vserver/debug.txt
---- linux-4.9.76/Documentation/vserver/debug.txt       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/Documentation/vserver/debug.txt     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/Documentation/vserver/debug.txt linux-4.9/Documentation/vserver/debug.txt
+--- linux-4.9/Documentation/vserver/debug.txt  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/Documentation/vserver/debug.txt  2021-02-24 15:47:45.047741532 +0100
 @@ -0,0 +1,154 @@
 +
 +debug_cvirt:
@@ -156,9 +156,9 @@ diff -NurpP --minimal linux-4.9.76/Documentation/vserver/debug.txt linux-4.9.76-
 + 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-4.9.76/arch/alpha/Kconfig linux-4.9.76-vs2.3.9.5/arch/alpha/Kconfig
---- linux-4.9.76/arch/alpha/Kconfig    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/alpha/Kconfig  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/alpha/Kconfig linux-4.9/arch/alpha/Kconfig
+--- linux-4.9/arch/alpha/Kconfig       2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/alpha/Kconfig       2021-02-24 15:47:45.037741219 +0100
 @@ -743,6 +743,8 @@ config DUMMY_CONSOLE
        depends on VGA_HOSE
        default y
@@ -168,9 +168,9 @@ diff -NurpP --minimal linux-4.9.76/arch/alpha/Kconfig linux-4.9.76-vs2.3.9.5/arc
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/alpha/kernel/systbls.S linux-4.9.76-vs2.3.9.5/arch/alpha/kernel/systbls.S
---- linux-4.9.76/arch/alpha/kernel/systbls.S   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/alpha/kernel/systbls.S 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/alpha/kernel/systbls.S linux-4.9/arch/alpha/kernel/systbls.S
+--- linux-4.9/arch/alpha/kernel/systbls.S      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/alpha/kernel/systbls.S      2021-02-24 15:47:45.037741219 +0100
 @@ -446,7 +446,7 @@ sys_call_table:
        .quad sys_stat64                        /* 425 */
        .quad sys_lstat64
@@ -180,10 +180,10 @@ diff -NurpP --minimal linux-4.9.76/arch/alpha/kernel/systbls.S linux-4.9.76-vs2.
        .quad sys_ni_syscall                    /* sys_mbind */
        .quad sys_ni_syscall                    /* sys_get_mempolicy */
        .quad sys_ni_syscall                    /* sys_set_mempolicy */
-diff -NurpP --minimal linux-4.9.76/arch/alpha/kernel/traps.c linux-4.9.76-vs2.3.9.5/arch/alpha/kernel/traps.c
---- linux-4.9.76/arch/alpha/kernel/traps.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/alpha/kernel/traps.c   2018-01-10 02:50:49.000000000 +0000
-@@ -174,7 +174,8 @@ die_if_kernel(char * str, struct pt_regs
+diff -urNp -x '*.orig' linux-4.9/arch/alpha/kernel/traps.c linux-4.9/arch/alpha/kernel/traps.c
+--- linux-4.9/arch/alpha/kernel/traps.c        2021-02-24 15:47:30.747294162 +0100
++++ linux-4.9/arch/alpha/kernel/traps.c        2021-02-24 15:47:45.037741219 +0100
+@@ -179,7 +179,8 @@ die_if_kernel(char * str, struct pt_regs
  #ifdef CONFIG_SMP
        printk("CPU %d ", hard_smp_processor_id());
  #endif
@@ -193,10 +193,10 @@ diff -NurpP --minimal linux-4.9.76/arch/alpha/kernel/traps.c linux-4.9.76-vs2.3.
        dik_show_regs(regs, r9_15);
        add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
        dik_show_trace((unsigned long *)(regs+1));
-diff -NurpP --minimal linux-4.9.76/arch/arm/Kconfig linux-4.9.76-vs2.3.9.5/arch/arm/Kconfig
---- linux-4.9.76/arch/arm/Kconfig      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/arm/Kconfig    2018-01-10 02:50:49.000000000 +0000
-@@ -2199,6 +2199,8 @@ source "fs/Kconfig"
+diff -urNp -x '*.orig' linux-4.9/arch/arm/Kconfig linux-4.9/arch/arm/Kconfig
+--- linux-4.9/arch/arm/Kconfig 2021-02-24 15:47:30.757294474 +0100
++++ linux-4.9/arch/arm/Kconfig 2021-02-24 15:47:45.041074656 +0100
+@@ -2202,6 +2202,8 @@ source "fs/Kconfig"
  
  source "arch/arm/Kconfig.debug"
  
@@ -205,9 +205,9 @@ diff -NurpP --minimal linux-4.9.76/arch/arm/Kconfig linux-4.9.76-vs2.3.9.5/arch/
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/arm/kernel/calls.S linux-4.9.76-vs2.3.9.5/arch/arm/kernel/calls.S
---- linux-4.9.76/arch/arm/kernel/calls.S       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/arm/kernel/calls.S     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/arm/kernel/calls.S linux-4.9/arch/arm/kernel/calls.S
+--- linux-4.9/arch/arm/kernel/calls.S  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/arm/kernel/calls.S  2021-02-24 15:47:45.041074656 +0100
 @@ -322,7 +322,7 @@
  /* 310 */     CALL(sys_request_key)
                CALL(sys_keyctl)
@@ -217,10 +217,10 @@ diff -NurpP --minimal linux-4.9.76/arch/arm/kernel/calls.S linux-4.9.76-vs2.3.9.
                CALL(sys_ioprio_set)
  /* 315 */     CALL(sys_ioprio_get)
                CALL(sys_inotify_init)
-diff -NurpP --minimal linux-4.9.76/arch/arm/kernel/traps.c linux-4.9.76-vs2.3.9.5/arch/arm/kernel/traps.c
---- linux-4.9.76/arch/arm/kernel/traps.c       2018-01-13 21:28:37.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/arm/kernel/traps.c     2018-01-10 02:50:49.000000000 +0000
-@@ -278,8 +278,8 @@ static int __die(const char *str, int er
+diff -urNp -x '*.orig' linux-4.9/arch/arm/kernel/traps.c linux-4.9/arch/arm/kernel/traps.c
+--- linux-4.9/arch/arm/kernel/traps.c  2021-02-24 15:47:30.797295726 +0100
++++ linux-4.9/arch/arm/kernel/traps.c  2021-02-24 15:47:45.041074656 +0100
+@@ -279,8 +279,8 @@ static int __die(const char *str, int er
  
        print_modules();
        __show_regs(regs);
@@ -231,9 +231,9 @@ diff -NurpP --minimal linux-4.9.76/arch/arm/kernel/traps.c linux-4.9.76-vs2.3.9.
  
        if (!user_mode(regs) || in_interrupt()) {
                dump_mem(KERN_EMERG, "Stack: ", regs->ARM_sp,
-diff -NurpP --minimal linux-4.9.76/arch/cris/Kconfig linux-4.9.76-vs2.3.9.5/arch/cris/Kconfig
---- linux-4.9.76/arch/cris/Kconfig     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/cris/Kconfig   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/cris/Kconfig linux-4.9/arch/cris/Kconfig
+--- linux-4.9/arch/cris/Kconfig        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/cris/Kconfig        2021-02-24 15:47:45.041074656 +0100
 @@ -583,6 +583,8 @@ source "fs/Kconfig"
  
  source "arch/cris/Kconfig.debug"
@@ -243,9 +243,9 @@ diff -NurpP --minimal linux-4.9.76/arch/cris/Kconfig linux-4.9.76-vs2.3.9.5/arch
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/ia64/Kconfig linux-4.9.76-vs2.3.9.5/arch/ia64/Kconfig
---- linux-4.9.76/arch/ia64/Kconfig     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/ia64/Kconfig   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/ia64/Kconfig linux-4.9/arch/ia64/Kconfig
+--- linux-4.9/arch/ia64/Kconfig        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/ia64/Kconfig        2021-02-24 15:47:45.041074656 +0100
 @@ -602,6 +602,8 @@ source "fs/Kconfig"
  
  source "arch/ia64/Kconfig.debug"
@@ -255,9 +255,9 @@ diff -NurpP --minimal linux-4.9.76/arch/ia64/Kconfig linux-4.9.76-vs2.3.9.5/arch
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/ia64/kernel/entry.S linux-4.9.76-vs2.3.9.5/arch/ia64/kernel/entry.S
---- linux-4.9.76/arch/ia64/kernel/entry.S      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/ia64/kernel/entry.S    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/ia64/kernel/entry.S linux-4.9/arch/ia64/kernel/entry.S
+--- linux-4.9/arch/ia64/kernel/entry.S 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/ia64/kernel/entry.S 2021-02-24 15:47:45.041074656 +0100
 @@ -1697,7 +1697,7 @@ sys_call_table:
        data8 sys_mq_notify
        data8 sys_mq_getsetattr
@@ -267,9 +267,9 @@ diff -NurpP --minimal linux-4.9.76/arch/ia64/kernel/entry.S linux-4.9.76-vs2.3.9
        data8 sys_waitid                        // 1270
        data8 sys_add_key
        data8 sys_request_key
-diff -NurpP --minimal linux-4.9.76/arch/ia64/kernel/ptrace.c linux-4.9.76-vs2.3.9.5/arch/ia64/kernel/ptrace.c
---- linux-4.9.76/arch/ia64/kernel/ptrace.c     2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/ia64/kernel/ptrace.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/ia64/kernel/ptrace.c linux-4.9/arch/ia64/kernel/ptrace.c
+--- linux-4.9/arch/ia64/kernel/ptrace.c        2021-02-24 15:47:30.857297603 +0100
++++ linux-4.9/arch/ia64/kernel/ptrace.c        2021-02-24 15:47:45.041074656 +0100
 @@ -21,6 +21,7 @@
  #include <linux/regset.h>
  #include <linux/elf.h>
@@ -278,9 +278,9 @@ diff -NurpP --minimal linux-4.9.76/arch/ia64/kernel/ptrace.c linux-4.9.76-vs2.3.
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
-diff -NurpP --minimal linux-4.9.76/arch/ia64/kernel/traps.c linux-4.9.76-vs2.3.9.5/arch/ia64/kernel/traps.c
---- linux-4.9.76/arch/ia64/kernel/traps.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/ia64/kernel/traps.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/ia64/kernel/traps.c linux-4.9/arch/ia64/kernel/traps.c
+--- linux-4.9/arch/ia64/kernel/traps.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/ia64/kernel/traps.c 2021-02-24 15:47:45.041074656 +0100
 @@ -60,8 +60,9 @@ die (const char *str, struct pt_regs *re
        put_cpu();
  
@@ -305,9 +305,9 @@ diff -NurpP --minimal linux-4.9.76/arch/ia64/kernel/traps.c linux-4.9.76-vs2.3.9
                        }
                }
        }
-diff -NurpP --minimal linux-4.9.76/arch/m32r/kernel/traps.c linux-4.9.76-vs2.3.9.5/arch/m32r/kernel/traps.c
---- linux-4.9.76/arch/m32r/kernel/traps.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/m32r/kernel/traps.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/m32r/kernel/traps.c linux-4.9/arch/m32r/kernel/traps.c
+--- linux-4.9/arch/m32r/kernel/traps.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/m32r/kernel/traps.c 2021-02-24 15:47:45.041074656 +0100
 @@ -184,8 +184,9 @@ static void show_registers(struct pt_reg
        } else {
                printk("SPI: %08lx\n", sp);
@@ -320,9 +320,9 @@ diff -NurpP --minimal linux-4.9.76/arch/m32r/kernel/traps.c linux-4.9.76-vs2.3.9
  
        /*
         * When in-kernel, we also print out the stack and code at the
-diff -NurpP --minimal linux-4.9.76/arch/m68k/Kconfig linux-4.9.76-vs2.3.9.5/arch/m68k/Kconfig
---- linux-4.9.76/arch/m68k/Kconfig     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/m68k/Kconfig   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/m68k/Kconfig linux-4.9/arch/m68k/Kconfig
+--- linux-4.9/arch/m68k/Kconfig        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/m68k/Kconfig        2021-02-24 15:47:45.041074656 +0100
 @@ -163,6 +163,8 @@ source "fs/Kconfig"
  
  source "arch/m68k/Kconfig.debug"
@@ -332,10 +332,10 @@ diff -NurpP --minimal linux-4.9.76/arch/m68k/Kconfig linux-4.9.76-vs2.3.9.5/arch
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/mips/Kconfig linux-4.9.76-vs2.3.9.5/arch/mips/Kconfig
---- linux-4.9.76/arch/mips/Kconfig     2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/Kconfig   2018-01-10 02:50:49.000000000 +0000
-@@ -3189,6 +3189,8 @@ source "fs/Kconfig"
+diff -urNp -x '*.orig' linux-4.9/arch/mips/Kconfig linux-4.9/arch/mips/Kconfig
+--- linux-4.9/arch/mips/Kconfig        2021-02-24 15:47:30.863964478 +0100
++++ linux-4.9/arch/mips/Kconfig        2021-02-24 15:47:45.044408094 +0100
+@@ -3194,6 +3194,8 @@ source "fs/Kconfig"
  
  source "arch/mips/Kconfig.debug"
  
@@ -344,9 +344,9 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/Kconfig linux-4.9.76-vs2.3.9.5/arch
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/ptrace.c linux-4.9.76-vs2.3.9.5/arch/mips/kernel/ptrace.c
---- linux-4.9.76/arch/mips/kernel/ptrace.c     2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/kernel/ptrace.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/mips/kernel/ptrace.c linux-4.9/arch/mips/kernel/ptrace.c
+--- linux-4.9/arch/mips/kernel/ptrace.c        2021-02-24 15:47:30.880631666 +0100
++++ linux-4.9/arch/mips/kernel/ptrace.c        2021-02-24 15:47:45.044408094 +0100
 @@ -30,6 +30,7 @@
  #include <linux/audit.h>
  #include <linux/seccomp.h>
@@ -355,7 +355,7 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/ptrace.c linux-4.9.76-vs2.3.
  
  #include <asm/byteorder.h>
  #include <asm/cpu.h>
-@@ -687,6 +688,9 @@ long arch_ptrace(struct task_struct *chi
+@@ -798,6 +799,9 @@ long arch_ptrace(struct task_struct *chi
        void __user *datavp = (void __user *) data;
        unsigned long __user *datalp = (void __user *) data;
  
@@ -365,9 +365,9 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/ptrace.c linux-4.9.76-vs2.3.
        switch (request) {
        /* when I and D space are separate, these will need to be fixed. */
        case PTRACE_PEEKTEXT: /* read word at location addr. */
-diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall32-o32.S linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall32-o32.S
---- linux-4.9.76/arch/mips/kernel/scall32-o32.S        2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall32-o32.S      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/mips/kernel/scall32-o32.S linux-4.9/arch/mips/kernel/scall32-o32.S
+--- linux-4.9/arch/mips/kernel/scall32-o32.S   2021-02-24 15:47:30.880631666 +0100
++++ linux-4.9/arch/mips/kernel/scall32-o32.S   2021-02-24 15:47:45.044408094 +0100
 @@ -511,7 +511,7 @@ EXPORT(sys_call_table)
        PTR     sys_mq_timedreceive
        PTR     sys_mq_notify                   /* 4275 */
@@ -377,9 +377,9 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall32-o32.S linux-4.9.76-v
        PTR     sys_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key                     /* 4280 */
-diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall64-64.S linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall64-64.S
---- linux-4.9.76/arch/mips/kernel/scall64-64.S 2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall64-64.S       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/mips/kernel/scall64-64.S linux-4.9/arch/mips/kernel/scall64-64.S
+--- linux-4.9/arch/mips/kernel/scall64-64.S    2021-02-24 15:47:30.880631666 +0100
++++ linux-4.9/arch/mips/kernel/scall64-64.S    2021-02-24 15:47:45.044408094 +0100
 @@ -348,7 +348,7 @@ EXPORT(sys_call_table)
        PTR     sys_mq_timedreceive
        PTR     sys_mq_notify
@@ -389,9 +389,9 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall64-64.S linux-4.9.76-vs
        PTR     sys_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key
-diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall64-n32.S linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall64-n32.S
---- linux-4.9.76/arch/mips/kernel/scall64-n32.S        2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall64-n32.S      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/mips/kernel/scall64-n32.S linux-4.9/arch/mips/kernel/scall64-n32.S
+--- linux-4.9/arch/mips/kernel/scall64-n32.S   2021-02-24 15:47:30.880631666 +0100
++++ linux-4.9/arch/mips/kernel/scall64-n32.S   2021-02-24 15:47:45.044408094 +0100
 @@ -343,7 +343,7 @@ EXPORT(sysn32_call_table)
        PTR     compat_sys_mq_timedreceive
        PTR     compat_sys_mq_notify
@@ -401,9 +401,9 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall64-n32.S linux-4.9.76-v
        PTR     compat_sys_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key
-diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall64-o32.S linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall64-o32.S
---- linux-4.9.76/arch/mips/kernel/scall64-o32.S        2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/kernel/scall64-o32.S      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/mips/kernel/scall64-o32.S linux-4.9/arch/mips/kernel/scall64-o32.S
+--- linux-4.9/arch/mips/kernel/scall64-o32.S   2021-02-24 15:47:30.880631666 +0100
++++ linux-4.9/arch/mips/kernel/scall64-o32.S   2021-02-24 15:47:45.044408094 +0100
 @@ -499,7 +499,7 @@ EXPORT(sys32_call_table)
        PTR     compat_sys_mq_timedreceive
        PTR     compat_sys_mq_notify            /* 4275 */
@@ -413,10 +413,10 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/scall64-o32.S linux-4.9.76-v
        PTR     compat_sys_waitid
        PTR     sys_ni_syscall                  /* available, was setaltroot */
        PTR     sys_add_key                     /* 4280 */
-diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/traps.c linux-4.9.76-vs2.3.9.5/arch/mips/kernel/traps.c
---- linux-4.9.76/arch/mips/kernel/traps.c      2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/mips/kernel/traps.c    2018-01-10 02:50:49.000000000 +0000
-@@ -360,9 +360,10 @@ void show_registers(struct pt_regs *regs
+diff -urNp -x '*.orig' linux-4.9/arch/mips/kernel/traps.c linux-4.9/arch/mips/kernel/traps.c
+--- linux-4.9/arch/mips/kernel/traps.c 2021-02-24 15:47:30.880631666 +0100
++++ linux-4.9/arch/mips/kernel/traps.c 2021-02-24 15:47:45.044408094 +0100
+@@ -361,9 +361,10 @@ void show_registers(struct pt_regs *regs
  
        __show_regs(regs);
        print_modules();
@@ -430,9 +430,9 @@ diff -NurpP --minimal linux-4.9.76/arch/mips/kernel/traps.c linux-4.9.76-vs2.3.9
        if (cpu_has_userlocal) {
                unsigned long tls;
  
-diff -NurpP --minimal linux-4.9.76/arch/parisc/Kconfig linux-4.9.76-vs2.3.9.5/arch/parisc/Kconfig
---- linux-4.9.76/arch/parisc/Kconfig   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/parisc/Kconfig 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/parisc/Kconfig linux-4.9/arch/parisc/Kconfig
+--- linux-4.9/arch/parisc/Kconfig      2021-02-24 15:47:30.893965417 +0100
++++ linux-4.9/arch/parisc/Kconfig      2021-02-24 15:47:45.044408094 +0100
 @@ -348,6 +348,8 @@ config SECCOMP
  
          If unsure, say Y. Only embedded should say N here.
@@ -442,9 +442,9 @@ diff -NurpP --minimal linux-4.9.76/arch/parisc/Kconfig linux-4.9.76-vs2.3.9.5/ar
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/parisc/kernel/syscall_table.S linux-4.9.76-vs2.3.9.5/arch/parisc/kernel/syscall_table.S
---- linux-4.9.76/arch/parisc/kernel/syscall_table.S    2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/parisc/kernel/syscall_table.S  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/parisc/kernel/syscall_table.S linux-4.9/arch/parisc/kernel/syscall_table.S
+--- linux-4.9/arch/parisc/kernel/syscall_table.S       2021-02-24 15:47:30.897298854 +0100
++++ linux-4.9/arch/parisc/kernel/syscall_table.S       2021-02-24 15:47:45.044408094 +0100
 @@ -358,7 +358,7 @@
        ENTRY_COMP(mbind)               /* 260 */
        ENTRY_COMP(get_mempolicy)
@@ -454,9 +454,9 @@ diff -NurpP --minimal linux-4.9.76/arch/parisc/kernel/syscall_table.S linux-4.9.
        ENTRY_SAME(add_key)
        ENTRY_SAME(request_key)         /* 265 */
        ENTRY_COMP(keyctl)
-diff -NurpP --minimal linux-4.9.76/arch/parisc/kernel/traps.c linux-4.9.76-vs2.3.9.5/arch/parisc/kernel/traps.c
---- linux-4.9.76/arch/parisc/kernel/traps.c    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/parisc/kernel/traps.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/parisc/kernel/traps.c linux-4.9/arch/parisc/kernel/traps.c
+--- linux-4.9/arch/parisc/kernel/traps.c       2021-02-24 15:47:30.897298854 +0100
++++ linux-4.9/arch/parisc/kernel/traps.c       2021-02-24 15:47:45.044408094 +0100
 @@ -235,8 +235,9 @@ void die_if_kernel(char *str, struct pt_
                        return; /* STFU */
  
@@ -480,10 +480,10 @@ diff -NurpP --minimal linux-4.9.76/arch/parisc/kernel/traps.c linux-4.9.76-vs2.3
  
        /* Wot's wrong wif bein' racy? */
        if (current->thread.flags & PARISC_KERNEL_DEATH) {
-diff -NurpP --minimal linux-4.9.76/arch/powerpc/Kconfig linux-4.9.76-vs2.3.9.5/arch/powerpc/Kconfig
---- linux-4.9.76/arch/powerpc/Kconfig  2018-01-13 21:28:38.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/powerpc/Kconfig        2018-01-10 02:50:49.000000000 +0000
-@@ -1085,6 +1085,8 @@ source "lib/Kconfig"
+diff -urNp -x '*.orig' linux-4.9/arch/powerpc/Kconfig linux-4.9/arch/powerpc/Kconfig
+--- linux-4.9/arch/powerpc/Kconfig     2021-02-24 15:47:30.900632291 +0100
++++ linux-4.9/arch/powerpc/Kconfig     2021-02-24 15:47:45.044408094 +0100
+@@ -1092,6 +1092,8 @@ source "lib/Kconfig"
  
  source "arch/powerpc/Kconfig.debug"
  
@@ -492,9 +492,9 @@ diff -NurpP --minimal linux-4.9.76/arch/powerpc/Kconfig linux-4.9.76-vs2.3.9.5/a
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/powerpc/include/uapi/asm/unistd.h linux-4.9.76-vs2.3.9.5/arch/powerpc/include/uapi/asm/unistd.h
---- linux-4.9.76/arch/powerpc/include/uapi/asm/unistd.h        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/powerpc/include/uapi/asm/unistd.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/powerpc/include/uapi/asm/unistd.h linux-4.9/arch/powerpc/include/uapi/asm/unistd.h
+--- linux-4.9/arch/powerpc/include/uapi/asm/unistd.h   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/powerpc/include/uapi/asm/unistd.h   2021-02-24 15:47:45.044408094 +0100
 @@ -275,7 +275,7 @@
  #endif
  #define __NR_rtas             255
@@ -504,10 +504,10 @@ diff -NurpP --minimal linux-4.9.76/arch/powerpc/include/uapi/asm/unistd.h linux-
  #define __NR_migrate_pages    258
  #define __NR_mbind            259
  #define __NR_get_mempolicy    260
-diff -NurpP --minimal linux-4.9.76/arch/s390/Kconfig linux-4.9.76-vs2.3.9.5/arch/s390/Kconfig
---- linux-4.9.76/arch/s390/Kconfig     2018-01-13 21:28:39.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/s390/Kconfig   2018-01-10 02:50:49.000000000 +0000
-@@ -729,6 +729,8 @@ source "fs/Kconfig"
+diff -urNp -x '*.orig' linux-4.9/arch/s390/Kconfig linux-4.9/arch/s390/Kconfig
+--- linux-4.9/arch/s390/Kconfig        2021-02-24 15:47:30.947300418 +0100
++++ linux-4.9/arch/s390/Kconfig        2021-02-24 15:47:45.044408094 +0100
+@@ -775,6 +775,8 @@ source "fs/Kconfig"
  
  source "arch/s390/Kconfig.debug"
  
@@ -516,9 +516,9 @@ diff -NurpP --minimal linux-4.9.76/arch/s390/Kconfig linux-4.9.76-vs2.3.9.5/arch
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/s390/include/asm/tlb.h linux-4.9.76-vs2.3.9.5/arch/s390/include/asm/tlb.h
---- linux-4.9.76/arch/s390/include/asm/tlb.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/s390/include/asm/tlb.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/s390/include/asm/tlb.h linux-4.9/arch/s390/include/asm/tlb.h
+--- linux-4.9/arch/s390/include/asm/tlb.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/s390/include/asm/tlb.h      2021-02-24 15:47:45.044408094 +0100
 @@ -24,6 +24,7 @@
  #include <linux/mm.h>
  #include <linux/pagemap.h>
@@ -527,9 +527,9 @@ diff -NurpP --minimal linux-4.9.76/arch/s390/include/asm/tlb.h linux-4.9.76-vs2.
  #include <asm/processor.h>
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
-diff -NurpP --minimal linux-4.9.76/arch/s390/include/uapi/asm/unistd.h linux-4.9.76-vs2.3.9.5/arch/s390/include/uapi/asm/unistd.h
---- linux-4.9.76/arch/s390/include/uapi/asm/unistd.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/s390/include/uapi/asm/unistd.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/s390/include/uapi/asm/unistd.h linux-4.9/arch/s390/include/uapi/asm/unistd.h
+--- linux-4.9/arch/s390/include/uapi/asm/unistd.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/s390/include/uapi/asm/unistd.h      2021-02-24 15:47:45.044408094 +0100
 @@ -200,7 +200,7 @@
  #define __NR_clock_gettime    260
  #define __NR_clock_getres     261
@@ -539,9 +539,9 @@ diff -NurpP --minimal linux-4.9.76/arch/s390/include/uapi/asm/unistd.h linux-4.9
  #define __NR_statfs64         265
  #define __NR_fstatfs64                266
  #define __NR_remap_file_pages 267
-diff -NurpP --minimal linux-4.9.76/arch/s390/kernel/ptrace.c linux-4.9.76-vs2.3.9.5/arch/s390/kernel/ptrace.c
---- linux-4.9.76/arch/s390/kernel/ptrace.c     2018-01-13 21:28:39.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/s390/kernel/ptrace.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/s390/kernel/ptrace.c linux-4.9/arch/s390/kernel/ptrace.c
+--- linux-4.9/arch/s390/kernel/ptrace.c        2021-02-24 15:47:30.957300731 +0100
++++ linux-4.9/arch/s390/kernel/ptrace.c        2021-02-24 15:47:45.047741532 +0100
 @@ -21,6 +21,7 @@
  #include <linux/tracehook.h>
  #include <linux/seccomp.h>
@@ -550,9 +550,9 @@ diff -NurpP --minimal linux-4.9.76/arch/s390/kernel/ptrace.c linux-4.9.76-vs2.3.
  #include <trace/syscall.h>
  #include <asm/segment.h>
  #include <asm/page.h>
-diff -NurpP --minimal linux-4.9.76/arch/s390/kernel/syscalls.S linux-4.9.76-vs2.3.9.5/arch/s390/kernel/syscalls.S
---- linux-4.9.76/arch/s390/kernel/syscalls.S   2018-01-13 21:28:39.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/s390/kernel/syscalls.S 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/s390/kernel/syscalls.S linux-4.9/arch/s390/kernel/syscalls.S
+--- linux-4.9/arch/s390/kernel/syscalls.S      2021-02-24 15:47:30.960634169 +0100
++++ linux-4.9/arch/s390/kernel/syscalls.S      2021-02-24 15:47:45.047741532 +0100
 @@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,compat_sys_clo
  SYSCALL(sys_clock_gettime,compat_sys_clock_gettime)   /* 260 */
  SYSCALL(sys_clock_getres,compat_sys_clock_getres)
@@ -562,9 +562,9 @@ diff -NurpP --minimal linux-4.9.76/arch/s390/kernel/syscalls.S linux-4.9.76-vs2.
  SYSCALL(sys_ni_syscall,compat_sys_s390_fadvise64_64)
  SYSCALL(sys_statfs64,compat_sys_statfs64)
  SYSCALL(sys_fstatfs64,compat_sys_fstatfs64)
-diff -NurpP --minimal linux-4.9.76/arch/sh/Kconfig linux-4.9.76-vs2.3.9.5/arch/sh/Kconfig
---- linux-4.9.76/arch/sh/Kconfig       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/sh/Kconfig     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/sh/Kconfig linux-4.9/arch/sh/Kconfig
+--- linux-4.9/arch/sh/Kconfig  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/sh/Kconfig  2021-02-24 15:47:45.047741532 +0100
 @@ -904,6 +904,8 @@ source "fs/Kconfig"
  
  source "arch/sh/Kconfig.debug"
@@ -574,9 +574,9 @@ diff -NurpP --minimal linux-4.9.76/arch/sh/Kconfig linux-4.9.76-vs2.3.9.5/arch/s
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/sh/kernel/irq.c linux-4.9.76-vs2.3.9.5/arch/sh/kernel/irq.c
---- linux-4.9.76/arch/sh/kernel/irq.c  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/sh/kernel/irq.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/sh/kernel/irq.c linux-4.9/arch/sh/kernel/irq.c
+--- linux-4.9/arch/sh/kernel/irq.c     2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/sh/kernel/irq.c     2021-02-24 15:47:45.047741532 +0100
 @@ -14,6 +14,7 @@
  #include <linux/ftrace.h>
  #include <linux/delay.h>
@@ -585,10 +585,10 @@ diff -NurpP --minimal linux-4.9.76/arch/sh/kernel/irq.c linux-4.9.76-vs2.3.9.5/a
  #include <asm/processor.h>
  #include <asm/machvec.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-4.9.76/arch/sparc/Kconfig linux-4.9.76-vs2.3.9.5/arch/sparc/Kconfig
---- linux-4.9.76/arch/sparc/Kconfig    2018-01-13 21:28:39.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/sparc/Kconfig  2018-01-10 02:50:49.000000000 +0000
-@@ -580,6 +580,8 @@ source "fs/Kconfig"
+diff -urNp -x '*.orig' linux-4.9/arch/sparc/Kconfig linux-4.9/arch/sparc/Kconfig
+--- linux-4.9/arch/sparc/Kconfig       2021-02-24 15:47:30.967301044 +0100
++++ linux-4.9/arch/sparc/Kconfig       2021-02-24 15:47:45.047741532 +0100
+@@ -584,6 +584,8 @@ source "fs/Kconfig"
  
  source "arch/sparc/Kconfig.debug"
  
@@ -597,9 +597,9 @@ diff -NurpP --minimal linux-4.9.76/arch/sparc/Kconfig linux-4.9.76-vs2.3.9.5/arc
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/sparc/include/uapi/asm/unistd.h linux-4.9.76-vs2.3.9.5/arch/sparc/include/uapi/asm/unistd.h
---- linux-4.9.76/arch/sparc/include/uapi/asm/unistd.h  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/sparc/include/uapi/asm/unistd.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/sparc/include/uapi/asm/unistd.h linux-4.9/arch/sparc/include/uapi/asm/unistd.h
+--- linux-4.9/arch/sparc/include/uapi/asm/unistd.h     2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/sparc/include/uapi/asm/unistd.h     2021-02-24 15:47:45.047741532 +0100
 @@ -332,7 +332,7 @@
  #define __NR_timer_getoverrun 264
  #define __NR_timer_delete     265
@@ -609,9 +609,9 @@ diff -NurpP --minimal linux-4.9.76/arch/sparc/include/uapi/asm/unistd.h linux-4.
  #define __NR_io_setup         268
  #define __NR_io_destroy               269
  #define __NR_io_submit                270
-diff -NurpP --minimal linux-4.9.76/arch/sparc/kernel/systbls_32.S linux-4.9.76-vs2.3.9.5/arch/sparc/kernel/systbls_32.S
---- linux-4.9.76/arch/sparc/kernel/systbls_32.S        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/sparc/kernel/systbls_32.S      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/sparc/kernel/systbls_32.S linux-4.9/arch/sparc/kernel/systbls_32.S
+--- linux-4.9/arch/sparc/kernel/systbls_32.S   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/sparc/kernel/systbls_32.S   2021-02-24 15:47:45.047741532 +0100
 @@ -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
@@ -621,9 +621,9 @@ diff -NurpP --minimal linux-4.9.76/arch/sparc/kernel/systbls_32.S linux-4.9.76-v
  /*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-4.9.76/arch/sparc/kernel/systbls_64.S linux-4.9.76-vs2.3.9.5/arch/sparc/kernel/systbls_64.S
---- linux-4.9.76/arch/sparc/kernel/systbls_64.S        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/sparc/kernel/systbls_64.S      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/sparc/kernel/systbls_64.S linux-4.9/arch/sparc/kernel/systbls_64.S
+--- linux-4.9/arch/sparc/kernel/systbls_64.S   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/sparc/kernel/systbls_64.S   2021-02-24 15:47:45.047741532 +0100
 @@ -71,7 +71,7 @@ sys_call_table32:
  /*250*/       .word sys_mremap, compat_sys_sysctl, sys_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
@@ -642,9 +642,9 @@ diff -NurpP --minimal linux-4.9.76/arch/sparc/kernel/systbls_64.S linux-4.9.76-v
  /*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-4.9.76/arch/um/Kconfig.rest linux-4.9.76-vs2.3.9.5/arch/um/Kconfig.rest
---- linux-4.9.76/arch/um/Kconfig.rest  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/um/Kconfig.rest        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/um/Kconfig.rest linux-4.9/arch/um/Kconfig.rest
+--- linux-4.9/arch/um/Kconfig.rest     2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/um/Kconfig.rest     2021-02-24 15:47:45.047741532 +0100
 @@ -12,6 +12,8 @@ source "arch/um/Kconfig.net"
  
  source "fs/Kconfig"
@@ -654,10 +654,10 @@ diff -NurpP --minimal linux-4.9.76/arch/um/Kconfig.rest linux-4.9.76-vs2.3.9.5/a
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/x86/Kconfig linux-4.9.76-vs2.3.9.5/arch/x86/Kconfig
---- linux-4.9.76/arch/x86/Kconfig      2018-01-13 21:28:39.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/x86/Kconfig    2018-01-10 02:50:49.000000000 +0000
-@@ -2763,6 +2763,8 @@ source "fs/Kconfig"
+diff -urNp -x '*.orig' linux-4.9/arch/x86/Kconfig linux-4.9/arch/x86/Kconfig
+--- linux-4.9/arch/x86/Kconfig 2021-02-24 15:47:30.980634795 +0100
++++ linux-4.9/arch/x86/Kconfig 2021-02-24 15:47:45.047741532 +0100
+@@ -2810,6 +2810,8 @@ source "fs/Kconfig"
  
  source "arch/x86/Kconfig.debug"
  
@@ -666,9 +666,9 @@ diff -NurpP --minimal linux-4.9.76/arch/x86/Kconfig linux-4.9.76-vs2.3.9.5/arch/
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-4.9.76/arch/x86/entry/syscalls/syscall_32.tbl linux-4.9.76-vs2.3.9.5/arch/x86/entry/syscalls/syscall_32.tbl
---- linux-4.9.76/arch/x86/entry/syscalls/syscall_32.tbl        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/x86/entry/syscalls/syscall_32.tbl      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/x86/entry/syscalls/syscall_32.tbl linux-4.9/arch/x86/entry/syscalls/syscall_32.tbl
+--- linux-4.9/arch/x86/entry/syscalls/syscall_32.tbl   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/x86/entry/syscalls/syscall_32.tbl   2021-02-24 15:47:45.047741532 +0100
 @@ -279,7 +279,7 @@
  270   i386    tgkill                  sys_tgkill
  271   i386    utimes                  sys_utimes                      compat_sys_utimes
@@ -678,9 +678,9 @@ diff -NurpP --minimal linux-4.9.76/arch/x86/entry/syscalls/syscall_32.tbl linux-
  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-4.9.76/arch/x86/entry/syscalls/syscall_64.tbl linux-4.9.76-vs2.3.9.5/arch/x86/entry/syscalls/syscall_64.tbl
---- linux-4.9.76/arch/x86/entry/syscalls/syscall_64.tbl        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/arch/x86/entry/syscalls/syscall_64.tbl      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/arch/x86/entry/syscalls/syscall_64.tbl linux-4.9/arch/x86/entry/syscalls/syscall_64.tbl
+--- linux-4.9/arch/x86/entry/syscalls/syscall_64.tbl   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/arch/x86/entry/syscalls/syscall_64.tbl   2021-02-24 15:47:45.047741532 +0100
 @@ -242,7 +242,7 @@
  233   common  epoll_ctl               sys_epoll_ctl
  234   common  tgkill                  sys_tgkill
@@ -690,9 +690,9 @@ diff -NurpP --minimal linux-4.9.76/arch/x86/entry/syscalls/syscall_64.tbl linux-
  237   common  mbind                   sys_mbind
  238   common  set_mempolicy           sys_set_mempolicy
  239   common  get_mempolicy           sys_get_mempolicy
-diff -NurpP --minimal linux-4.9.76/block/ioprio.c linux-4.9.76-vs2.3.9.5/block/ioprio.c
---- linux-4.9.76/block/ioprio.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/block/ioprio.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/block/ioprio.c linux-4.9/block/ioprio.c
+--- linux-4.9/block/ioprio.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/block/ioprio.c   2021-02-24 15:47:45.047741532 +0100
 @@ -28,6 +28,7 @@
  #include <linux/syscalls.h>
  #include <linux/security.h>
@@ -711,17 +711,17 @@ diff -NurpP --minimal linux-4.9.76/block/ioprio.c linux-4.9.76-vs2.3.9.5/block/i
                                if (ret)
                                        break;
 @@ -203,6 +206,8 @@ SYSCALL_DEFINE2(ioprio_get, int, which,
-                       else
                                pgrp = find_vpid(who);
+                       read_lock(&tasklist_lock);
                        do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
 +                              if (!vx_check(p->xid, VS_ADMIN_P | VS_IDENT))
 +                                      continue;
                                tmpio = get_task_ioprio(p);
                                if (tmpio < 0)
                                        continue;
-diff -NurpP --minimal linux-4.9.76/drivers/block/Kconfig linux-4.9.76-vs2.3.9.5/drivers/block/Kconfig
---- linux-4.9.76/drivers/block/Kconfig 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/block/Kconfig       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/block/Kconfig linux-4.9/drivers/block/Kconfig
+--- linux-4.9/drivers/block/Kconfig    2021-02-24 15:47:31.113972298 +0100
++++ linux-4.9/drivers/block/Kconfig    2021-02-24 15:47:45.047741532 +0100
 @@ -273,6 +273,13 @@ config BLK_DEV_CRYPTOLOOP
  
  source "drivers/block/drbd/Kconfig"
@@ -736,9 +736,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/Kconfig linux-4.9.76-vs2.3.9.5/
  config BLK_DEV_NBD
        tristate "Network block device support"
        depends on NET
-diff -NurpP --minimal linux-4.9.76/drivers/block/Makefile linux-4.9.76-vs2.3.9.5/drivers/block/Makefile
---- linux-4.9.76/drivers/block/Makefile        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/block/Makefile      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/block/Makefile linux-4.9/drivers/block/Makefile
+--- linux-4.9/drivers/block/Makefile   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/drivers/block/Makefile   2021-02-24 15:47:45.051074969 +0100
 @@ -31,6 +31,7 @@ obj-$(CONFIG_VIRTIO_BLK)     += virtio_blk.o
  
  obj-$(CONFIG_BLK_DEV_SX8)     += sx8.o
@@ -747,9 +747,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/Makefile linux-4.9.76-vs2.3.9.5
  
  obj-$(CONFIG_XEN_BLKDEV_FRONTEND)     += xen-blkfront.o
  obj-$(CONFIG_XEN_BLKDEV_BACKEND)      += xen-blkback/
-diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/drivers/block/loop.c
---- linux-4.9.76/drivers/block/loop.c  2018-01-13 21:28:40.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/block/loop.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/block/loop.c linux-4.9/drivers/block/loop.c
+--- linux-4.9/drivers/block/loop.c     2021-02-24 15:47:31.117305737 +0100
++++ linux-4.9/drivers/block/loop.c     2021-02-24 15:47:45.051074969 +0100
 @@ -76,6 +76,7 @@
  #include <linux/miscdevice.h>
  #include <linux/falloc.h>
@@ -758,7 +758,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/d
  #include "loop.h"
  
  #include <asm/uaccess.h>
-@@ -924,6 +925,7 @@ static int loop_set_fd(struct loop_devic
+@@ -936,6 +937,7 @@ static int loop_set_fd(struct loop_devic
        lo->lo_blocksize = lo_blocksize;
        lo->lo_device = bdev;
        lo->lo_flags = lo_flags;
@@ -766,7 +766,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/d
        lo->lo_backing_file = file;
        lo->transfer = NULL;
        lo->ioctl = NULL;
-@@ -1044,6 +1046,7 @@ static int loop_clr_fd(struct loop_devic
+@@ -1056,6 +1058,7 @@ static int loop_clr_fd(struct loop_devic
        lo->lo_offset = 0;
        lo->lo_sizelimit = 0;
        lo->lo_encrypt_key_size = 0;
@@ -774,7 +774,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/d
        memset(lo->lo_encrypt_key, 0, LO_KEY_SIZE);
        memset(lo->lo_crypt_name, 0, LO_NAME_SIZE);
        memset(lo->lo_file_name, 0, LO_NAME_SIZE);
-@@ -1090,7 +1093,7 @@ loop_set_status(struct loop_device *lo,
+@@ -1102,7 +1105,7 @@ loop_set_status(struct loop_device *lo,
  
        if (lo->lo_encrypt_key_size &&
            !uid_eq(lo->lo_key_owner, uid) &&
@@ -783,7 +783,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/d
                return -EPERM;
        if (lo->lo_state != Lo_bound)
                return -ENXIO;
-@@ -1191,7 +1194,8 @@ loop_get_status(struct loop_device *lo,
+@@ -1207,7 +1210,8 @@ loop_get_status(struct loop_device *lo,
        memcpy(info->lo_crypt_name, lo->lo_crypt_name, LO_NAME_SIZE);
        info->lo_encrypt_type =
                lo->lo_encryption ? lo->lo_encryption->number : 0;
@@ -793,7 +793,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/d
                info->lo_encrypt_key_size = lo->lo_encrypt_key_size;
                memcpy(info->lo_encrypt_key, lo->lo_encrypt_key,
                       lo->lo_encrypt_key_size);
-@@ -1552,6 +1556,11 @@ static int lo_open(struct block_device *
+@@ -1569,6 +1573,11 @@ static int lo_open(struct block_device *
                goto out;
        }
  
@@ -805,9 +805,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.c linux-4.9.76-vs2.3.9.5/d
        atomic_inc(&lo->lo_refcnt);
  out:
        mutex_unlock(&loop_index_mutex);
-diff -NurpP --minimal linux-4.9.76/drivers/block/loop.h linux-4.9.76-vs2.3.9.5/drivers/block/loop.h
---- linux-4.9.76/drivers/block/loop.h  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/block/loop.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/block/loop.h linux-4.9/drivers/block/loop.h
+--- linux-4.9/drivers/block/loop.h     2021-02-24 15:47:31.117305737 +0100
++++ linux-4.9/drivers/block/loop.h     2021-02-24 15:47:45.051074969 +0100
 @@ -43,6 +43,7 @@ struct loop_device {
        struct loop_func_table *lo_encryption;
        __u32           lo_init[2];
@@ -816,9 +816,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/loop.h linux-4.9.76-vs2.3.9.5/d
        int             (*ioctl)(struct loop_device *, int cmd, 
                                 unsigned long arg); 
  
-diff -NurpP --minimal linux-4.9.76/drivers/block/vroot.c linux-4.9.76-vs2.3.9.5/drivers/block/vroot.c
---- linux-4.9.76/drivers/block/vroot.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/block/vroot.c       2018-01-13 22:00:41.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/block/vroot.c linux-4.9/drivers/block/vroot.c
+--- linux-4.9/drivers/block/vroot.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/drivers/block/vroot.c    2021-02-24 15:47:45.051074969 +0100
 @@ -0,0 +1,291 @@
 +/*
 + *  linux/drivers/block/vroot.c
@@ -1111,9 +1111,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/block/vroot.c linux-4.9.76-vs2.3.9.5/
 +
 +#endif
 +
-diff -NurpP --minimal linux-4.9.76/drivers/md/dm-core.h linux-4.9.76-vs2.3.9.5/drivers/md/dm-core.h
---- linux-4.9.76/drivers/md/dm-core.h  2018-01-13 21:28:44.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/md/dm-core.h        2018-01-10 08:35:10.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/md/dm-core.h linux-4.9/drivers/md/dm-core.h
+--- linux-4.9/drivers/md/dm-core.h     2021-02-24 15:47:31.450649498 +0100
++++ linux-4.9/drivers/md/dm-core.h     2021-02-24 15:47:45.051074969 +0100
 @@ -52,6 +52,7 @@ struct mapped_device {
  
        atomic_t holders;
@@ -1122,9 +1122,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/md/dm-core.h linux-4.9.76-vs2.3.9.5/d
  
        struct dm_target *immutable_target;
        struct target_type *immutable_target_type;
-diff -NurpP --minimal linux-4.9.76/drivers/md/dm-ioctl.c linux-4.9.76-vs2.3.9.5/drivers/md/dm-ioctl.c
---- linux-4.9.76/drivers/md/dm-ioctl.c 2018-01-13 21:28:44.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/md/dm-ioctl.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/md/dm-ioctl.c linux-4.9/drivers/md/dm-ioctl.c
+--- linux-4.9/drivers/md/dm-ioctl.c    2021-02-24 15:47:31.450649498 +0100
++++ linux-4.9/drivers/md/dm-ioctl.c    2021-02-24 15:47:45.051074969 +0100
 @@ -16,6 +16,7 @@
  #include <linux/dm-ioctl.h>
  #include <linux/hdreg.h>
@@ -1199,7 +1199,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/md/dm-ioctl.c linux-4.9.76-vs2.3.9.5/
                        if (old_nl)
                                old_nl->next = (uint32_t) ((void *) nl -
                                                           (void *) old_nl);
-@@ -1805,8 +1817,8 @@ static int ctl_ioctl(uint command, struc
+@@ -1800,8 +1812,8 @@ static int ctl_ioctl(uint command, struc
        size_t input_param_size;
        struct dm_ioctl param_kernel;
  
@@ -1210,9 +1210,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/md/dm-ioctl.c linux-4.9.76-vs2.3.9.5/
                return -EACCES;
  
        if (_IOC_TYPE(command) != DM_IOCTL)
-diff -NurpP --minimal linux-4.9.76/drivers/md/dm.c linux-4.9.76-vs2.3.9.5/drivers/md/dm.c
---- linux-4.9.76/drivers/md/dm.c       2018-01-13 21:28:45.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/md/dm.c     2018-01-10 08:32:35.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/md/dm.c linux-4.9/drivers/md/dm.c
+--- linux-4.9/drivers/md/dm.c  2021-02-24 15:47:31.457316373 +0100
++++ linux-4.9/drivers/md/dm.c  2021-02-24 15:47:45.051074969 +0100
 @@ -22,6 +22,7 @@
  #include <linux/wait.h>
  #include <linux/pr.h>
@@ -1269,7 +1269,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/md/dm.c linux-4.9.76-vs2.3.9.5/driver
  /*-----------------------------------------------------------------
   * CRUD START:
   *   A more elegant soln is in the works that uses the queue
-@@ -1548,6 +1560,7 @@ static struct mapped_device *alloc_dev(i
+@@ -1549,6 +1561,7 @@ static struct mapped_device *alloc_dev(i
        INIT_LIST_HEAD(&md->uevent_list);
        INIT_LIST_HEAD(&md->table_devices);
        spin_lock_init(&md->uevent_lock);
@@ -1277,9 +1277,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/md/dm.c linux-4.9.76-vs2.3.9.5/driver
  
        md->queue = blk_alloc_queue_node(GFP_KERNEL, numa_node_id);
        if (!md->queue)
-diff -NurpP --minimal linux-4.9.76/drivers/md/dm.h linux-4.9.76-vs2.3.9.5/drivers/md/dm.h
---- linux-4.9.76/drivers/md/dm.h       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/md/dm.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/md/dm.h linux-4.9/drivers/md/dm.h
+--- linux-4.9/drivers/md/dm.h  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/drivers/md/dm.h  2021-02-24 15:47:45.051074969 +0100
 @@ -45,6 +45,8 @@ struct dm_dev_internal {
  struct dm_table;
  struct dm_md_mempools;
@@ -1289,9 +1289,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/md/dm.h linux-4.9.76-vs2.3.9.5/driver
  /*-----------------------------------------------------------------
   * Internal table functions.
   *---------------------------------------------------------------*/
-diff -NurpP --minimal linux-4.9.76/drivers/net/tun.c linux-4.9.76-vs2.3.9.5/drivers/net/tun.c
---- linux-4.9.76/drivers/net/tun.c     2018-01-13 21:28:50.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/net/tun.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/net/tun.c linux-4.9/drivers/net/tun.c
+--- linux-4.9/drivers/net/tun.c        2021-02-24 15:47:31.743992008 +0100
++++ linux-4.9/drivers/net/tun.c        2021-02-24 15:47:45.051074969 +0100
 @@ -65,6 +65,7 @@
  #include <linux/nsproxy.h>
  #include <linux/virtio_net.h>
@@ -1316,7 +1316,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/net/tun.c linux-4.9.76-vs2.3.9.5/driv
  }
  
  static void tun_set_real_num_queues(struct tun_struct *tun)
-@@ -1549,6 +1552,7 @@ static void tun_setup(struct net_device
+@@ -1569,6 +1572,7 @@ static void tun_setup(struct net_device
  
        tun->owner = INVALID_UID;
        tun->group = INVALID_GID;
@@ -1324,7 +1324,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/net/tun.c linux-4.9.76-vs2.3.9.5/driv
  
        dev->ethtool_ops = &tun_ethtool_ops;
        dev->destructor = tun_free_netdev;
-@@ -1760,7 +1764,7 @@ static int tun_set_iff(struct net *net,
+@@ -1782,7 +1786,7 @@ static int tun_set_iff(struct net *net,
                int queues = ifr->ifr_flags & IFF_MULTI_QUEUE ?
                             MAX_TAP_QUEUES : 1;
  
@@ -1333,7 +1333,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/net/tun.c linux-4.9.76-vs2.3.9.5/driv
                        return -EPERM;
                err = security_tun_dev_create();
                if (err < 0)
-@@ -2125,6 +2129,16 @@ static long __tun_chr_ioctl(struct file
+@@ -2151,6 +2155,16 @@ static long __tun_chr_ioctl(struct file
                          from_kgid(&init_user_ns, tun->group));
                break;
  
@@ -1350,10 +1350,10 @@ diff -NurpP --minimal linux-4.9.76/drivers/net/tun.c linux-4.9.76-vs2.3.9.5/driv
        case TUNSETLINK:
                /* Only allow setting the type when the interface is down */
                if (tun->dev->flags & IFF_UP) {
-diff -NurpP --minimal linux-4.9.76/drivers/scsi/cxgbi/libcxgbi.c linux-4.9.76-vs2.3.9.5/drivers/scsi/cxgbi/libcxgbi.c
---- linux-4.9.76/drivers/scsi/cxgbi/libcxgbi.c 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/scsi/cxgbi/libcxgbi.c       2018-01-10 02:50:49.000000000 +0000
-@@ -772,7 +772,8 @@ static struct cxgbi_sock *cxgbi_check_ro
+diff -urNp -x '*.orig' linux-4.9/drivers/scsi/cxgbi/libcxgbi.c linux-4.9/drivers/scsi/cxgbi/libcxgbi.c
+--- linux-4.9/drivers/scsi/cxgbi/libcxgbi.c    2021-02-24 15:47:31.947331702 +0100
++++ linux-4.9/drivers/scsi/cxgbi/libcxgbi.c    2021-02-24 15:47:45.051074969 +0100
+@@ -777,7 +777,8 @@ static struct cxgbi_sock *cxgbi_check_ro
                struct inet6_dev *idev = ip6_dst_idev((struct dst_entry *)rt);
  
                err = ipv6_dev_get_saddr(&init_net, idev ? idev->dev : NULL,
@@ -1363,9 +1363,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/scsi/cxgbi/libcxgbi.c linux-4.9.76-vs
                if (err) {
                        pr_info("failed to get source address to reach %pI6\n",
                                &daddr6->sin6_addr);
-diff -NurpP --minimal linux-4.9.76/drivers/tty/sysrq.c linux-4.9.76-vs2.3.9.5/drivers/tty/sysrq.c
---- linux-4.9.76/drivers/tty/sysrq.c   2018-01-13 21:28:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/tty/sysrq.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/tty/sysrq.c linux-4.9/drivers/tty/sysrq.c
+--- linux-4.9/drivers/tty/sysrq.c      2021-02-24 15:47:32.084002644 +0100
++++ linux-4.9/drivers/tty/sysrq.c      2021-02-24 15:47:45.051074969 +0100
 @@ -47,6 +47,7 @@
  #include <linux/syscalls.h>
  #include <linux/of.h>
@@ -1417,9 +1417,9 @@ diff -NurpP --minimal linux-4.9.76/drivers/tty/sysrq.c linux-4.9.76-vs2.3.9.5/dr
        else
                retval = -1;
        return retval;
-diff -NurpP --minimal linux-4.9.76/drivers/tty/tty_io.c linux-4.9.76-vs2.3.9.5/drivers/tty/tty_io.c
---- linux-4.9.76/drivers/tty/tty_io.c  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/drivers/tty/tty_io.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/drivers/tty/tty_io.c linux-4.9/drivers/tty/tty_io.c
+--- linux-4.9/drivers/tty/tty_io.c     2021-02-24 15:47:32.084002644 +0100
++++ linux-4.9/drivers/tty/tty_io.c     2021-02-24 15:47:45.054408406 +0100
 @@ -104,6 +104,7 @@
  
  #include <linux/kmod.h>
@@ -1428,7 +1428,7 @@ diff -NurpP --minimal linux-4.9.76/drivers/tty/tty_io.c linux-4.9.76-vs2.3.9.5/d
  
  #undef TTY_DEBUG_HANGUP
  #ifdef TTY_DEBUG_HANGUP
-@@ -2286,7 +2287,8 @@ static int tiocsti(struct tty_struct *tt
+@@ -2321,7 +2322,8 @@ static int tiocsti(struct tty_struct *tt
        char ch, mbz = 0;
        struct tty_ldisc *ld;
  
@@ -1438,17 +1438,17 @@ diff -NurpP --minimal linux-4.9.76/drivers/tty/tty_io.c linux-4.9.76-vs2.3.9.5/d
                return -EPERM;
        if (get_user(ch, p))
                return -EFAULT;
-@@ -2601,6 +2603,7 @@ static int tiocspgrp(struct tty_struct *
-               return -ENOTTY;
+@@ -2634,6 +2636,7 @@ static int tiocspgrp(struct tty_struct *
        if (get_user(pgrp_nr, p))
                return -EFAULT;
 +      pgrp_nr = vx_rmap_pid(pgrp_nr);
        if (pgrp_nr < 0)
                return -EINVAL;
-       rcu_read_lock();
-diff -NurpP --minimal linux-4.9.76/fs/attr.c linux-4.9.76-vs2.3.9.5/fs/attr.c
---- linux-4.9.76/fs/attr.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/attr.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/attr.c linux-4.9/fs/attr.c
+--- linux-4.9/fs/attr.c        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/attr.c        2021-02-24 15:47:45.054408406 +0100
 @@ -15,6 +15,9 @@
  #include <linux/security.h>
  #include <linux/evm.h>
@@ -1489,9 +1489,9 @@ diff -NurpP --minimal linux-4.9.76/fs/attr.c linux-4.9.76-vs2.3.9.5/fs/attr.c
                if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
                        return -EPERM;
        }
-diff -NurpP --minimal linux-4.9.76/fs/block_dev.c linux-4.9.76-vs2.3.9.5/fs/block_dev.c
---- linux-4.9.76/fs/block_dev.c        2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/block_dev.c      2018-01-13 00:48:31.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/block_dev.c linux-4.9/fs/block_dev.c
+--- linux-4.9/fs/block_dev.c   2021-02-24 15:47:32.207339836 +0100
++++ linux-4.9/fs/block_dev.c   2021-02-24 15:47:45.054408406 +0100
 @@ -31,6 +31,7 @@
  #include <linux/dax.h>
  #include <linux/badblocks.h>
@@ -1500,7 +1500,7 @@ diff -NurpP --minimal linux-4.9.76/fs/block_dev.c linux-4.9.76-vs2.3.9.5/fs/bloc
  #include <asm/uaccess.h>
  #include "internal.h"
  
-@@ -720,6 +721,7 @@ struct block_device *bdget(dev_t dev)
+@@ -734,6 +735,7 @@ struct block_device *bdget(dev_t dev)
                bdev->bd_invalidated = 0;
                inode->i_mode = S_IFBLK;
                inode->i_rdev = dev;
@@ -1508,7 +1508,7 @@ diff -NurpP --minimal linux-4.9.76/fs/block_dev.c linux-4.9.76-vs2.3.9.5/fs/bloc
                inode->i_bdev = bdev;
                inode->i_data.a_ops = &def_blk_aops;
                mapping_set_gfp_mask(&inode->i_data, GFP_USER);
-@@ -766,6 +768,11 @@ EXPORT_SYMBOL(bdput);
+@@ -780,6 +782,11 @@ EXPORT_SYMBOL(bdput);
  static struct block_device *bd_acquire(struct inode *inode)
  {
        struct block_device *bdev;
@@ -1520,7 +1520,7 @@ diff -NurpP --minimal linux-4.9.76/fs/block_dev.c linux-4.9.76-vs2.3.9.5/fs/bloc
  
        spin_lock(&bdev_lock);
        bdev = inode->i_bdev;
-@@ -776,7 +783,7 @@ static struct block_device *bd_acquire(s
+@@ -790,7 +797,7 @@ static struct block_device *bd_acquire(s
        }
        spin_unlock(&bdev_lock);
  
@@ -1529,10 +1529,10 @@ diff -NurpP --minimal linux-4.9.76/fs/block_dev.c linux-4.9.76-vs2.3.9.5/fs/bloc
        if (bdev) {
                spin_lock(&bdev_lock);
                if (!inode->i_bdev) {
-diff -NurpP --minimal linux-4.9.76/fs/btrfs/ctree.h linux-4.9.76-vs2.3.9.5/fs/btrfs/ctree.h
---- linux-4.9.76/fs/btrfs/ctree.h      2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/btrfs/ctree.h    2018-01-10 02:50:49.000000000 +0000
-@@ -1321,6 +1321,8 @@ static inline u32 BTRFS_MAX_XATTR_SIZE(c
+diff -urNp -x '*.orig' linux-4.9/fs/btrfs/ctree.h linux-4.9/fs/btrfs/ctree.h
+--- linux-4.9/fs/btrfs/ctree.h 2021-02-24 15:47:32.210673274 +0100
++++ linux-4.9/fs/btrfs/ctree.h 2021-02-24 15:47:45.054408406 +0100
+@@ -1319,6 +1319,8 @@ static inline u32 BTRFS_MAX_XATTR_SIZE(c
  #define BTRFS_DEFAULT_COMMIT_INTERVAL (30)
  #define BTRFS_DEFAULT_MAX_INLINE      (2048)
  
@@ -1541,7 +1541,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/ctree.h linux-4.9.76-vs2.3.9.5/fs/bt
  #define btrfs_clear_opt(o, opt)               ((o) &= ~BTRFS_MOUNT_##opt)
  #define btrfs_set_opt(o, opt)         ((o) |= BTRFS_MOUNT_##opt)
  #define btrfs_raw_test_opt(o, opt)    ((o) & BTRFS_MOUNT_##opt)
-@@ -1668,6 +1670,7 @@ BTRFS_SETGET_FUNCS(inode_block_group, st
+@@ -1669,6 +1671,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);
@@ -1549,7 +1549,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/ctree.h linux-4.9.76-vs2.3.9.5/fs/bt
  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);
-@@ -1715,6 +1718,10 @@ BTRFS_SETGET_FUNCS(extent_flags, struct
+@@ -1716,6 +1719,10 @@ BTRFS_SETGET_FUNCS(extent_flags, struct
  
  BTRFS_SETGET_FUNCS(extent_refs_v0, struct btrfs_extent_item_v0, refs, 32);
  
@@ -1560,7 +1560,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/ctree.h linux-4.9.76-vs2.3.9.5/fs/bt
  
  BTRFS_SETGET_FUNCS(tree_block_level, struct btrfs_tree_block_info, level, 8);
  
-@@ -3197,6 +3204,7 @@ int btrfs_ioctl_get_supported_features(v
+@@ -3199,6 +3206,7 @@ int btrfs_ioctl_get_supported_features(v
  void btrfs_update_iflags(struct inode *inode);
  void btrfs_inherit_iflags(struct inode *inode, struct inode *dir);
  int btrfs_is_empty_uuid(u8 *uuid);
@@ -1568,10 +1568,10 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/ctree.h linux-4.9.76-vs2.3.9.5/fs/bt
  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-4.9.76/fs/btrfs/disk-io.c linux-4.9.76-vs2.3.9.5/fs/btrfs/disk-io.c
---- linux-4.9.76/fs/btrfs/disk-io.c    2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/btrfs/disk-io.c  2018-01-13 05:55:56.000000000 +0000
-@@ -2850,6 +2850,9 @@ int open_ctree(struct super_block *sb,
+diff -urNp -x '*.orig' linux-4.9/fs/btrfs/disk-io.c linux-4.9/fs/btrfs/disk-io.c
+--- linux-4.9/fs/btrfs/disk-io.c       2021-02-24 15:47:32.210673274 +0100
++++ linux-4.9/fs/btrfs/disk-io.c       2021-02-24 15:47:45.054408406 +0100
+@@ -2712,6 +2712,9 @@ int open_ctree(struct super_block *sb,
                goto fail_alloc;
        }
  
@@ -1581,9 +1581,9 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/disk-io.c linux-4.9.76-vs2.3.9.5/fs/
        features = btrfs_super_incompat_flags(disk_super) &
                ~BTRFS_FEATURE_INCOMPAT_SUPP;
        if (features) {
-diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/btrfs/inode.c
---- linux-4.9.76/fs/btrfs/inode.c      2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/btrfs/inode.c    2018-01-13 01:41:05.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/btrfs/inode.c linux-4.9/fs/btrfs/inode.c
+--- linux-4.9/fs/btrfs/inode.c 2021-02-24 15:47:32.217340149 +0100
++++ linux-4.9/fs/btrfs/inode.c 2021-02-24 15:47:45.057741845 +0100
 @@ -43,6 +43,7 @@
  #include <linux/blkdev.h>
  #include <linux/posix_acl_xattr.h>
@@ -1592,7 +1592,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
  #include "ctree.h"
  #include "disk-io.h"
  #include "transaction.h"
-@@ -3662,6 +3663,9 @@ static int btrfs_read_locked_inode(struc
+@@ -3717,6 +3718,9 @@ static int btrfs_read_locked_inode(struc
        unsigned long ptr;
        int maybe_acls;
        u32 rdev;
@@ -1602,7 +1602,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
        int ret;
        bool filled = false;
        int first_xattr_slot;
-@@ -3694,8 +3698,14 @@ static int btrfs_read_locked_inode(struc
+@@ -3749,8 +3753,14 @@ static int btrfs_read_locked_inode(struc
                                    struct btrfs_inode_item);
        inode->i_mode = btrfs_inode_mode(leaf, inode_item);
        set_nlink(inode, btrfs_inode_nlink(leaf, inode_item));
@@ -1619,7 +1619,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
        btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item));
  
        inode->i_atime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->atime);
-@@ -3850,11 +3860,18 @@ static void fill_inode_item(struct btrfs
+@@ -3905,11 +3915,18 @@ static void fill_inode_item(struct btrfs
                            struct inode *inode)
  {
        struct btrfs_map_token token;
@@ -1640,7 +1640,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
        btrfs_set_token_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size,
                                   &token);
        btrfs_set_token_inode_mode(leaf, item, inode->i_mode, &token);
-@@ -10613,6 +10630,7 @@ static const struct inode_operations btr
+@@ -10687,6 +10704,7 @@ static const struct inode_operations btr
        .mknod          = btrfs_mknod,
        .listxattr      = btrfs_listxattr,
        .permission     = btrfs_permission,
@@ -1648,7 +1648,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
        .get_acl        = btrfs_get_acl,
        .set_acl        = btrfs_set_acl,
        .update_time    = btrfs_update_time,
-@@ -10621,6 +10639,7 @@ static const struct inode_operations btr
+@@ -10695,6 +10713,7 @@ static const struct inode_operations btr
  static const struct inode_operations btrfs_dir_ro_inode_operations = {
        .lookup         = btrfs_lookup,
        .permission     = btrfs_permission,
@@ -1656,7 +1656,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
        .update_time    = btrfs_update_time,
  };
  
-@@ -10686,6 +10705,7 @@ static const struct inode_operations btr
+@@ -10760,6 +10779,7 @@ static const struct inode_operations btr
        .listxattr      = btrfs_listxattr,
        .permission     = btrfs_permission,
        .fiemap         = btrfs_fiemap,
@@ -1664,9 +1664,9 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/inode.c linux-4.9.76-vs2.3.9.5/fs/bt
        .get_acl        = btrfs_get_acl,
        .set_acl        = btrfs_set_acl,
        .update_time    = btrfs_update_time,
-diff -NurpP --minimal linux-4.9.76/fs/btrfs/ioctl.c linux-4.9.76-vs2.3.9.5/fs/btrfs/ioctl.c
---- linux-4.9.76/fs/btrfs/ioctl.c      2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/btrfs/ioctl.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/btrfs/ioctl.c linux-4.9/fs/btrfs/ioctl.c
+--- linux-4.9/fs/btrfs/ioctl.c 2021-02-24 15:47:32.217340149 +0100
++++ linux-4.9/fs/btrfs/ioctl.c 2021-02-24 15:47:45.057741845 +0100
 @@ -110,10 +110,13 @@ static unsigned int btrfs_flags_to_ioctl
  {
        unsigned int iflags = 0;
@@ -1845,9 +1845,9 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/ioctl.c linux-4.9.76-vs2.3.9.5/fs/bt
        if (flags & FS_APPEND_FL)
                ip->flags |= BTRFS_INODE_APPEND;
        else
-diff -NurpP --minimal linux-4.9.76/fs/btrfs/super.c linux-4.9.76-vs2.3.9.5/fs/btrfs/super.c
---- linux-4.9.76/fs/btrfs/super.c      2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/btrfs/super.c    2018-01-13 05:51:52.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/btrfs/super.c linux-4.9/fs/btrfs/super.c
+--- linux-4.9/fs/btrfs/super.c 2021-02-24 15:47:32.224007024 +0100
++++ linux-4.9/fs/btrfs/super.c 2021-02-24 15:47:45.057741845 +0100
 @@ -327,7 +327,7 @@ enum {
  #ifdef CONFIG_BTRFS_DEBUG
        Opt_fragment_data, Opt_fragment_metadata, Opt_fragment_all,
@@ -1890,7 +1890,7 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/super.c linux-4.9.76-vs2.3.9.5/fs/bt
                case Opt_err:
                        btrfs_info(root->fs_info,
                                   "unrecognized mount option '%s'", p);
-@@ -1754,6 +1773,12 @@ static int btrfs_remount(struct super_bl
+@@ -1760,6 +1779,12 @@ static int btrfs_remount(struct super_bl
        btrfs_resize_thread_pool(fs_info,
                fs_info->thread_pool_size, old_thread_pool_size);
  
@@ -1903,9 +1903,9 @@ diff -NurpP --minimal linux-4.9.76/fs/btrfs/super.c linux-4.9.76-vs2.3.9.5/fs/bt
        if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
                goto out;
  
-diff -NurpP --minimal linux-4.9.76/fs/char_dev.c linux-4.9.76-vs2.3.9.5/fs/char_dev.c
---- linux-4.9.76/fs/char_dev.c 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/char_dev.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/char_dev.c linux-4.9/fs/char_dev.c
+--- linux-4.9/fs/char_dev.c    2021-02-24 15:47:32.230673899 +0100
++++ linux-4.9/fs/char_dev.c    2021-02-24 15:47:45.057741845 +0100
 @@ -21,6 +21,8 @@
  #include <linux/mutex.h>
  #include <linux/backing-dev.h>
@@ -1915,7 +1915,7 @@ diff -NurpP --minimal linux-4.9.76/fs/char_dev.c linux-4.9.76-vs2.3.9.5/fs/char_
  
  #include "internal.h"
  
-@@ -354,14 +356,21 @@ static int chrdev_open(struct inode *ino
+@@ -360,14 +362,21 @@ static int chrdev_open(struct inode *ino
        struct cdev *p;
        struct cdev *new = NULL;
        int ret = 0;
@@ -1938,9 +1938,9 @@ diff -NurpP --minimal linux-4.9.76/fs/char_dev.c linux-4.9.76-vs2.3.9.5/fs/char_
                if (!kobj)
                        return -ENXIO;
                new = container_of(kobj, struct cdev, kobj);
-diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.c
---- linux-4.9.76/fs/dcache.c   2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/dcache.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/dcache.c linux-4.9/fs/dcache.c
+--- linux-4.9/fs/dcache.c      2021-02-24 15:47:32.247341088 +0100
++++ linux-4.9/fs/dcache.c      2021-02-24 15:47:45.061075282 +0100
 @@ -39,6 +39,7 @@
  #include <linux/ratelimit.h>
  #include <linux/list_lru.h>
@@ -1949,7 +1949,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
  
  #include "internal.h"
  #include "mount.h"
-@@ -680,6 +681,7 @@ static inline bool fast_dput(struct dent
+@@ -690,6 +691,7 @@ static inline bool fast_dput(struct dent
                spin_lock(&dentry->d_lock);
                if (dentry->d_lockref.count > 1) {
                        dentry->d_lockref.count--;
@@ -1957,7 +1957,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
                        spin_unlock(&dentry->d_lock);
                        return 1;
                }
-@@ -811,6 +813,7 @@ repeat:
+@@ -821,6 +823,7 @@ repeat:
        dentry_lru_add(dentry);
  
        dentry->d_lockref.count--;
@@ -1965,7 +1965,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
        spin_unlock(&dentry->d_lock);
        return;
  
-@@ -828,6 +831,7 @@ EXPORT_SYMBOL(dput);
+@@ -838,6 +841,7 @@ EXPORT_SYMBOL(dput);
  static inline void __dget_dlock(struct dentry *dentry)
  {
        dentry->d_lockref.count++;
@@ -1973,7 +1973,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
  }
  
  static inline void __dget(struct dentry *dentry)
-@@ -840,6 +844,8 @@ struct dentry *dget_parent(struct dentry
+@@ -850,6 +854,8 @@ struct dentry *dget_parent(struct dentry
        int gotref;
        struct dentry *ret;
  
@@ -1982,7 +1982,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
        /*
         * Do optimistic parent lookup without any
         * locking.
-@@ -870,6 +876,7 @@ repeat:
+@@ -880,6 +886,7 @@ repeat:
        rcu_read_unlock();
        BUG_ON(!ret->d_lockref.count);
        ret->d_lockref.count++;
@@ -1990,7 +1990,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
        spin_unlock(&ret->d_lock);
        return ret;
  }
-@@ -1024,6 +1031,7 @@ static void shrink_dentry_list(struct li
+@@ -1034,6 +1041,7 @@ static void shrink_dentry_list(struct li
                        parent = lock_parent(dentry);
                        if (dentry->d_lockref.count != 1) {
                                dentry->d_lockref.count--;
@@ -1998,7 +1998,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
                                spin_unlock(&dentry->d_lock);
                                if (parent)
                                        spin_unlock(&parent->d_lock);
-@@ -1590,6 +1598,9 @@ struct dentry *__d_alloc(struct super_bl
+@@ -1594,6 +1602,9 @@ struct dentry *__d_alloc(struct super_bl
        char *dname;
        int err;
  
@@ -2008,7 +2008,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
        dentry = kmem_cache_alloc(dentry_cache, GFP_KERNEL);
        if (!dentry)
                return NULL;
-@@ -1633,6 +1644,7 @@ struct dentry *__d_alloc(struct super_bl
+@@ -1637,6 +1648,7 @@ struct dentry *__d_alloc(struct super_bl
  
        dentry->d_lockref.count = 1;
        dentry->d_flags = 0;
@@ -2016,7 +2016,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
        spin_lock_init(&dentry->d_lock);
        seqcount_init(&dentry->d_seq);
        dentry->d_inode = NULL;
-@@ -2282,6 +2294,7 @@ struct dentry *__d_lookup(const struct d
+@@ -2310,6 +2322,7 @@ struct dentry *__d_lookup(const struct d
                        goto next;
  
                dentry->d_lockref.count++;
@@ -2024,7 +2024,7 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
                found = dentry;
                spin_unlock(&dentry->d_lock);
                break;
-@@ -3532,6 +3545,7 @@ static enum d_walk_ret d_genocide_kill(v
+@@ -3568,6 +3581,7 @@ static enum d_walk_ret d_genocide_kill(v
                if (!(dentry->d_flags & DCACHE_GENOCIDE)) {
                        dentry->d_flags |= DCACHE_GENOCIDE;
                        dentry->d_lockref.count--;
@@ -2032,9 +2032,9 @@ diff -NurpP --minimal linux-4.9.76/fs/dcache.c linux-4.9.76-vs2.3.9.5/fs/dcache.
                }
        }
        return D_WALK_CONTINUE;
-diff -NurpP --minimal linux-4.9.76/fs/devpts/inode.c linux-4.9.76-vs2.3.9.5/fs/devpts/inode.c
---- linux-4.9.76/fs/devpts/inode.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/devpts/inode.c   2018-01-13 01:06:29.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/devpts/inode.c linux-4.9/fs/devpts/inode.c
+--- linux-4.9/fs/devpts/inode.c        2021-02-24 15:47:32.247341088 +0100
++++ linux-4.9/fs/devpts/inode.c        2021-02-24 15:47:45.061075282 +0100
 @@ -27,6 +27,7 @@
  #include <linux/parser.h>
  #include <linux/fsnotify.h>
@@ -2100,7 +2100,7 @@ diff -NurpP --minimal linux-4.9.76/fs/devpts/inode.c linux-4.9.76-vs2.3.9.5/fs/d
  static const struct super_operations devpts_sops = {
        .statfs         = simple_statfs,
        .remount_fs     = devpts_remount,
-@@ -415,8 +459,10 @@ devpts_fill_super(struct super_block *s,
+@@ -416,8 +460,10 @@ devpts_fill_super(struct super_block *s,
        inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
        inode->i_mode = S_IFDIR | S_IRUGO | S_IXUGO | S_IWUSR;
        inode->i_op = &simple_dir_inode_operations;
@@ -2112,7 +2112,7 @@ diff -NurpP --minimal linux-4.9.76/fs/devpts/inode.c linux-4.9.76-vs2.3.9.5/fs/d
  
        s->s_root = d_make_root(inode);
        if (!s->s_root) {
-@@ -542,6 +588,9 @@ struct dentry *devpts_pty_new(struct pts
+@@ -543,6 +589,9 @@ struct dentry *devpts_pty_new(struct pts
        inode->i_gid = opts->setgid ? opts->gid : current_fsgid();
        inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
        init_special_inode(inode, S_IFCHR|opts->mode, MKDEV(UNIX98_PTY_SLAVE_MAJOR, index));
@@ -2122,9 +2122,9 @@ diff -NurpP --minimal linux-4.9.76/fs/devpts/inode.c linux-4.9.76-vs2.3.9.5/fs/d
  
        sprintf(s, "%d", index);
  
-diff -NurpP --minimal linux-4.9.76/fs/ext2/balloc.c linux-4.9.76-vs2.3.9.5/fs/ext2/balloc.c
---- linux-4.9.76/fs/ext2/balloc.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/balloc.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/balloc.c linux-4.9/fs/ext2/balloc.c
+--- linux-4.9/fs/ext2/balloc.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ext2/balloc.c 2021-02-24 15:47:45.061075282 +0100
 @@ -693,7 +693,6 @@ ext2_try_to_allocate(struct super_block
                        start = 0;
                end = EXT2_BLOCKS_PER_GROUP(sb);
@@ -2133,9 +2133,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/balloc.c linux-4.9.76-vs2.3.9.5/fs/ex
        BUG_ON(start > EXT2_BLOCKS_PER_GROUP(sb));
  
  repeat:
-diff -NurpP --minimal linux-4.9.76/fs/ext2/ext2.h linux-4.9.76-vs2.3.9.5/fs/ext2/ext2.h
---- linux-4.9.76/fs/ext2/ext2.h        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/ext2.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/ext2.h linux-4.9/fs/ext2/ext2.h
+--- linux-4.9/fs/ext2/ext2.h   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ext2/ext2.h   2021-02-24 15:47:45.061075282 +0100
 @@ -247,8 +247,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) */
@@ -2183,18 +2183,18 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/ext2.h linux-4.9.76-vs2.3.9.5/fs/ext2
  
  /* ioctl.c */
  extern long ext2_ioctl(struct file *, unsigned int, unsigned long);
-diff -NurpP --minimal linux-4.9.76/fs/ext2/file.c linux-4.9.76-vs2.3.9.5/fs/ext2/file.c
---- linux-4.9.76/fs/ext2/file.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/file.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/file.c linux-4.9/fs/ext2/file.c
+--- linux-4.9/fs/ext2/file.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ext2/file.c   2021-02-24 15:47:45.061075282 +0100
 @@ -247,4 +247,5 @@ const struct inode_operations ext2_file_
        .get_acl        = ext2_get_acl,
        .set_acl        = ext2_set_acl,
        .fiemap         = ext2_fiemap,
 +      .sync_flags     = ext2_sync_flags,
  };
-diff -NurpP --minimal linux-4.9.76/fs/ext2/ialloc.c linux-4.9.76-vs2.3.9.5/fs/ext2/ialloc.c
---- linux-4.9.76/fs/ext2/ialloc.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/ialloc.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/ialloc.c linux-4.9/fs/ext2/ialloc.c
+--- linux-4.9/fs/ext2/ialloc.c 2021-02-24 15:47:32.254007963 +0100
++++ linux-4.9/fs/ext2/ialloc.c 2021-02-24 15:47:45.061075282 +0100
 @@ -17,6 +17,7 @@
  #include <linux/backing-dev.h>
  #include <linux/buffer_head.h>
@@ -2203,7 +2203,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/ialloc.c linux-4.9.76-vs2.3.9.5/fs/ex
  #include "ext2.h"
  #include "xattr.h"
  #include "acl.h"
-@@ -551,6 +552,7 @@ got:
+@@ -552,6 +553,7 @@ got:
                inode->i_mode = mode;
                inode->i_uid = current_fsuid();
                inode->i_gid = dir->i_gid;
@@ -2211,9 +2211,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/ialloc.c linux-4.9.76-vs2.3.9.5/fs/ex
        } else
                inode_init_owner(inode, dir, mode);
  
-diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext2/inode.c
---- linux-4.9.76/fs/ext2/inode.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/inode.c     2018-01-13 01:19:54.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/inode.c linux-4.9/fs/ext2/inode.c
+--- linux-4.9/fs/ext2/inode.c  2021-02-24 15:47:32.254007963 +0100
++++ linux-4.9/fs/ext2/inode.c  2021-02-24 15:47:45.061075282 +0100
 @@ -35,6 +35,7 @@
  #include <linux/iomap.h>
  #include <linux/namei.h>
@@ -2222,16 +2222,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
  #include "ext2.h"
  #include "acl.h"
  #include "xattr.h"
-@@ -1271,7 +1272,7 @@ static void ext2_truncate_blocks(struct
-               return;
-       if (ext2_inode_is_fast_symlink(inode))
-               return;
--      if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
-+      if (IS_APPEND(inode) || IS_IXORUNLINK(inode))
-               return;
-       dax_sem_down_write(EXT2_I(inode));
-@@ -1367,39 +1368,61 @@ void ext2_set_inode_flags(struct inode *
+@@ -1360,39 +1361,61 @@ void ext2_set_inode_flags(struct inode *
  {
        unsigned int flags = EXT2_I(inode)->i_flags;
  
@@ -2301,7 +2292,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
  }
  
  struct inode *ext2_iget (struct super_block *sb, unsigned long ino)
-@@ -1435,8 +1458,10 @@ struct inode *ext2_iget (struct super_bl
+@@ -1428,8 +1451,10 @@ struct inode *ext2_iget (struct super_bl
                i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
                i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
        }
@@ -2314,7 +2305,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        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);
-@@ -1543,8 +1568,10 @@ static int __ext2_write_inode(struct ino
+@@ -1536,8 +1561,10 @@ static int __ext2_write_inode(struct ino
        struct ext2_inode_info *ei = EXT2_I(inode);
        struct super_block *sb = inode->i_sb;
        ino_t ino = inode->i_ino;
@@ -2327,7 +2318,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        struct buffer_head * bh;
        struct ext2_inode * raw_inode = ext2_get_inode(sb, ino, &bh);
        int n;
-@@ -1580,6 +1607,9 @@ static int __ext2_write_inode(struct ino
+@@ -1573,6 +1600,9 @@ static int __ext2_write_inode(struct ino
                raw_inode->i_uid_high = 0;
                raw_inode->i_gid_high = 0;
        }
@@ -2337,7 +2328,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
        raw_inode->i_size = cpu_to_le32(inode->i_size);
        raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
-@@ -1663,7 +1693,8 @@ int ext2_setattr(struct dentry *dentry,
+@@ -1656,7 +1686,8 @@ int ext2_setattr(struct dentry *dentry,
                        return error;
        }
        if ((iattr->ia_valid & ATTR_UID && !uid_eq(iattr->ia_uid, inode->i_uid)) ||
@@ -2347,9 +2338,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
                error = dquot_transfer(inode, iattr);
                if (error)
                        return error;
-diff -NurpP --minimal linux-4.9.76/fs/ext2/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ext2/ioctl.c
---- linux-4.9.76/fs/ext2/ioctl.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/ioctl.c     2018-01-13 01:20:40.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/ioctl.c linux-4.9/fs/ext2/ioctl.c
+--- linux-4.9/fs/ext2/ioctl.c  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ext2/ioctl.c  2021-02-24 15:47:45.061075282 +0100
 @@ -17,6 +17,16 @@
  #include <asm/uaccess.h>
  
@@ -2399,9 +2390,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ext
                flags |= oldflags & ~EXT2_FL_USER_MODIFIABLE;
                ei->i_flags = flags;
  
-diff -NurpP --minimal linux-4.9.76/fs/ext2/namei.c linux-4.9.76-vs2.3.9.5/fs/ext2/namei.c
---- linux-4.9.76/fs/ext2/namei.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/namei.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/namei.c linux-4.9/fs/ext2/namei.c
+--- linux-4.9/fs/ext2/namei.c  2021-02-24 15:47:32.254007963 +0100
++++ linux-4.9/fs/ext2/namei.c  2021-02-24 15:47:45.061075282 +0100
 @@ -32,6 +32,7 @@
  
  #include <linux/pagemap.h>
@@ -2410,7 +2401,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/namei.c linux-4.9.76-vs2.3.9.5/fs/ext
  #include "ext2.h"
  #include "xattr.h"
  #include "acl.h"
-@@ -72,6 +73,7 @@ static struct dentry *ext2_lookup(struct
+@@ -71,6 +72,7 @@ static struct dentry *ext2_lookup(struct
                                        (unsigned long) ino);
                        return ERR_PTR(-EIO);
                }
@@ -2418,7 +2409,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/namei.c linux-4.9.76-vs2.3.9.5/fs/ext
        }
        return d_splice_alias(inode, dentry);
  }
-@@ -445,6 +447,7 @@ const struct inode_operations ext2_speci
+@@ -443,6 +445,7 @@ const struct inode_operations ext2_speci
        .listxattr      = ext2_listxattr,
  #endif
        .setattr        = ext2_setattr,
@@ -2426,9 +2417,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/namei.c linux-4.9.76-vs2.3.9.5/fs/ext
        .get_acl        = ext2_get_acl,
        .set_acl        = ext2_set_acl,
  };
-diff -NurpP --minimal linux-4.9.76/fs/ext2/super.c linux-4.9.76-vs2.3.9.5/fs/ext2/super.c
---- linux-4.9.76/fs/ext2/super.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext2/super.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext2/super.c linux-4.9/fs/ext2/super.c
+--- linux-4.9/fs/ext2/super.c  2021-02-24 15:47:32.254007963 +0100
++++ linux-4.9/fs/ext2/super.c  2021-02-24 15:47:45.061075282 +0100
 @@ -411,7 +411,8 @@ enum {
        Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
        Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
@@ -2470,7 +2461,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/super.c linux-4.9.76-vs2.3.9.5/fs/ext
                case Opt_nocheck:
                        clear_opt (sbi->s_mount_opt, CHECK);
                        break;
-@@ -887,6 +905,8 @@ static int ext2_fill_super(struct super_
+@@ -898,6 +916,8 @@ static int ext2_fill_super(struct super_
        if (!parse_options((char *) data, sb))
                goto failed_mount;
  
@@ -2479,7 +2470,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/super.c linux-4.9.76-vs2.3.9.5/fs/ext
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                ((EXT2_SB(sb)->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ?
                 MS_POSIXACL : 0);
-@@ -1300,6 +1320,14 @@ static int ext2_remount (struct super_bl
+@@ -1311,6 +1331,14 @@ static int ext2_remount (struct super_bl
                err = -EINVAL;
                goto restore_opts;
        }
@@ -2494,9 +2485,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext2/super.c linux-4.9.76-vs2.3.9.5/fs/ext
  
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                ((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
-diff -NurpP --minimal linux-4.9.76/fs/ext4/ext4.h linux-4.9.76-vs2.3.9.5/fs/ext4/ext4.h
---- linux-4.9.76/fs/ext4/ext4.h        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/ext4.h      2018-01-13 02:00:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/ext4.h linux-4.9/fs/ext4/ext4.h
+--- linux-4.9/fs/ext4/ext4.h   2021-02-24 15:47:32.254007963 +0100
++++ linux-4.9/fs/ext4/ext4.h   2021-02-24 15:47:45.064408719 +0100
 @@ -392,8 +392,11 @@ struct flex_groups {
  #define EXT4_EXTENTS_FL                       0x00080000 /* Inode uses extents */
  #define EXT4_EA_INODE_FL              0x00200000 /* Inode used for large EA */
@@ -2534,7 +2525,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ext4.h linux-4.9.76-vs2.3.9.5/fs/ext4
  #define EXT4_MOUNT_DELALLOC           0x8000000 /* Delalloc support */
  #define EXT4_MOUNT_DATA_ERR_ABORT     0x10000000 /* Abort on file data write */
  #define EXT4_MOUNT_BLOCK_VALIDITY     0x20000000 /* Block validity checking */
-@@ -2497,6 +2502,7 @@ extern int ext4_punch_hole(struct inode
+@@ -2527,6 +2532,7 @@ extern int ext4_punch_hole(struct inode
  extern int ext4_truncate_restart_trans(handle_t *, struct inode *, int nblocks);
  extern void ext4_set_inode_flags(struct inode *);
  extern void ext4_get_inode_flags(struct ext4_inode_info *);
@@ -2542,19 +2533,19 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ext4.h linux-4.9.76-vs2.3.9.5/fs/ext4
  extern int ext4_alloc_da_blocks(struct inode *inode);
  extern void ext4_set_aops(struct inode *inode);
  extern int ext4_writepage_trans_blocks(struct inode *);
-diff -NurpP --minimal linux-4.9.76/fs/ext4/file.c linux-4.9.76-vs2.3.9.5/fs/ext4/file.c
---- linux-4.9.76/fs/ext4/file.c        2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/file.c      2018-01-10 02:50:49.000000000 +0000
-@@ -691,5 +691,6 @@ const struct inode_operations ext4_file_
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/file.c linux-4.9/fs/ext4/file.c
+--- linux-4.9/fs/ext4/file.c   2021-02-24 15:47:32.257341400 +0100
++++ linux-4.9/fs/ext4/file.c   2021-02-24 15:47:45.064408719 +0100
+@@ -698,5 +698,6 @@ const struct inode_operations ext4_file_
        .get_acl        = ext4_get_acl,
        .set_acl        = ext4_set_acl,
        .fiemap         = ext4_fiemap,
 +      .sync_flags     = ext4_sync_flags,
  };
  
-diff -NurpP --minimal linux-4.9.76/fs/ext4/ialloc.c linux-4.9.76-vs2.3.9.5/fs/ext4/ialloc.c
---- linux-4.9.76/fs/ext4/ialloc.c      2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/ialloc.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/ialloc.c linux-4.9/fs/ext4/ialloc.c
+--- linux-4.9/fs/ext4/ialloc.c 2021-02-24 15:47:32.257341400 +0100
++++ linux-4.9/fs/ext4/ialloc.c 2021-02-24 15:47:45.064408719 +0100
 @@ -21,6 +21,7 @@
  #include <linux/random.h>
  #include <linux/bitops.h>
@@ -2563,7 +2554,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ialloc.c linux-4.9.76-vs2.3.9.5/fs/ex
  #include <asm/byteorder.h>
  
  #include "ext4.h"
-@@ -799,6 +800,7 @@ struct inode *__ext4_new_inode(handle_t
+@@ -780,6 +781,7 @@ struct inode *__ext4_new_inode(handle_t
                inode->i_mode = mode;
                inode->i_uid = current_fsuid();
                inode->i_gid = dir->i_gid;
@@ -2571,9 +2562,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ialloc.c linux-4.9.76-vs2.3.9.5/fs/ex
        } else
                inode_init_owner(inode, dir, mode);
  
-diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext4/inode.c
---- linux-4.9.76/fs/ext4/inode.c       2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/inode.c     2018-01-13 02:02:12.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/inode.c linux-4.9/fs/ext4/inode.c
+--- linux-4.9/fs/ext4/inode.c  2021-02-24 15:47:32.260674838 +0100
++++ linux-4.9/fs/ext4/inode.c  2021-02-24 15:47:45.064408719 +0100
 @@ -37,6 +37,7 @@
  #include <linux/printk.h>
  #include <linux/slab.h>
@@ -2582,7 +2573,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
  
  #include "ext4_jbd2.h"
  #include "xattr.h"
-@@ -4374,12 +4375,15 @@ void ext4_set_inode_flags(struct inode *
+@@ -4399,12 +4400,15 @@ void ext4_set_inode_flags(struct inode *
        unsigned int flags = EXT4_I(inode)->i_flags;
        unsigned int new_fl = 0;
  
@@ -2600,7 +2591,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        if (flags & EXT4_NOATIME_FL)
                new_fl |= S_NOATIME;
        if (flags & EXT4_DIRSYNC_FL)
-@@ -4387,31 +4391,52 @@ void ext4_set_inode_flags(struct inode *
+@@ -4412,31 +4416,52 @@ void ext4_set_inode_flags(struct inode *
        if (test_opt(inode->i_sb, DAX) && S_ISREG(inode->i_mode))
                new_fl |= S_DAX;
        inode_set_flags(inode, new_fl,
@@ -2658,7 +2649,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        } while (cmpxchg(&ei->i_flags, old_fl, new_fl) != old_fl);
  }
  
-@@ -4531,8 +4556,10 @@ struct inode *ext4_iget(struct super_blo
+@@ -4584,8 +4609,10 @@ struct inode *__ext4_iget(struct super_b
                i_uid |= le16_to_cpu(raw_inode->i_uid_high) << 16;
                i_gid |= le16_to_cpu(raw_inode->i_gid_high) << 16;
        }
@@ -2671,7 +2662,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        ei->i_projid = make_kprojid(&init_user_ns, i_projid);
        set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
  
-@@ -4848,8 +4875,10 @@ static int ext4_do_update_inode(handle_t
+@@ -4909,8 +4936,10 @@ static int ext4_do_update_inode(handle_t
  
        ext4_get_inode_flags(ei);
        raw_inode->i_mode = cpu_to_le16(inode->i_mode);
@@ -2684,7 +2675,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        i_projid = from_kprojid(&init_user_ns, ei->i_projid);
        if (!(test_opt(inode->i_sb, NO_UID32))) {
                raw_inode->i_uid_low = cpu_to_le16(low_16_bits(i_uid));
-@@ -4873,6 +4902,9 @@ static int ext4_do_update_inode(handle_t
+@@ -4934,6 +4963,9 @@ static int ext4_do_update_inode(handle_t
                raw_inode->i_uid_high = 0;
                raw_inode->i_gid_high = 0;
        }
@@ -2694,7 +2685,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
        raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
  
        EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode);
-@@ -5126,7 +5158,8 @@ int ext4_setattr(struct dentry *dentry,
+@@ -5191,7 +5223,8 @@ int ext4_setattr(struct dentry *dentry,
                        return error;
        }
        if ((ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) ||
@@ -2704,7 +2695,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
                handle_t *handle;
  
                /* (user+group)*(old+new) structure, inode write (sb,
-@@ -5149,6 +5182,8 @@ int ext4_setattr(struct dentry *dentry,
+@@ -5214,6 +5247,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;
@@ -2713,9 +2704,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/inode.c linux-4.9.76-vs2.3.9.5/fs/ext
                error = ext4_mark_inode_dirty(handle, inode);
                ext4_journal_stop(handle);
        }
-diff -NurpP --minimal linux-4.9.76/fs/ext4/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ext4/ioctl.c
---- linux-4.9.76/fs/ext4/ioctl.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/ioctl.c     2018-01-13 02:03:59.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/ioctl.c linux-4.9/fs/ext4/ioctl.c
+--- linux-4.9/fs/ext4/ioctl.c  2021-02-24 15:47:32.260674838 +0100
++++ linux-4.9/fs/ext4/ioctl.c  2021-02-24 15:47:45.064408719 +0100
 @@ -15,6 +15,7 @@
  #include <linux/file.h>
  #include <linux/quotaops.h>
@@ -2735,7 +2726,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ext
                if (!capable(CAP_LINUX_IMMUTABLE))
                        goto flags_out;
        }
-@@ -430,6 +433,33 @@ static inline unsigned long ext4_xflags_
+@@ -432,6 +435,33 @@ static inline unsigned long ext4_xflags_
        return iflags;
  }
  
@@ -2769,7 +2760,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ext
  long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        struct inode *inode = file_inode(filp);
-@@ -459,6 +489,11 @@ long ext4_ioctl(struct file *filp, unsig
+@@ -461,6 +491,11 @@ long ext4_ioctl(struct file *filp, unsig
  
                flags = ext4_mask_flags(inode->i_mode, flags);
  
@@ -2781,9 +2772,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ext
                inode_lock(inode);
                err = ext4_ioctl_setflags(inode, flags);
                inode_unlock(inode);
-diff -NurpP --minimal linux-4.9.76/fs/ext4/namei.c linux-4.9.76-vs2.3.9.5/fs/ext4/namei.c
---- linux-4.9.76/fs/ext4/namei.c       2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/namei.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/namei.c linux-4.9/fs/ext4/namei.c
+--- linux-4.9/fs/ext4/namei.c  2021-02-24 15:47:32.260674838 +0100
++++ linux-4.9/fs/ext4/namei.c  2021-02-24 15:47:45.064408719 +0100
 @@ -33,6 +33,7 @@
  #include <linux/quotaops.h>
  #include <linux/buffer_head.h>
@@ -2792,7 +2783,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/namei.c linux-4.9.76-vs2.3.9.5/fs/ext
  #include "ext4.h"
  #include "ext4_jbd2.h"
  
-@@ -1459,6 +1460,7 @@ restart:
+@@ -1457,6 +1458,7 @@ restart:
                                                    REQ_META | REQ_PRIO,
                                                    1, &bh);
                        }
@@ -2800,7 +2791,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/namei.c linux-4.9.76-vs2.3.9.5/fs/ext
                }
                if ((bh = bh_use[ra_ptr++]) == NULL)
                        goto next;
-@@ -3906,6 +3908,7 @@ const struct inode_operations ext4_dir_i
+@@ -3935,6 +3937,7 @@ const struct inode_operations ext4_dir_i
        .get_acl        = ext4_get_acl,
        .set_acl        = ext4_set_acl,
        .fiemap         = ext4_fiemap,
@@ -2808,10 +2799,10 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/namei.c linux-4.9.76-vs2.3.9.5/fs/ext
  };
  
  const struct inode_operations ext4_special_inode_operations = {
-diff -NurpP --minimal linux-4.9.76/fs/ext4/super.c linux-4.9.76-vs2.3.9.5/fs/ext4/super.c
---- linux-4.9.76/fs/ext4/super.c       2018-01-13 21:28:56.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ext4/super.c     2018-01-10 02:50:49.000000000 +0000
-@@ -1280,6 +1280,7 @@ enum {
+diff -urNp -x '*.orig' linux-4.9/fs/ext4/super.c linux-4.9/fs/ext4/super.c
+--- linux-4.9/fs/ext4/super.c  2021-02-24 15:47:32.264008276 +0100
++++ linux-4.9/fs/ext4/super.c  2021-02-24 15:47:45.067742158 +0100
+@@ -1294,6 +1294,7 @@ enum {
        Opt_dioread_nolock, Opt_dioread_lock,
        Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
        Opt_max_dir_size_kb, Opt_nojournal_checksum,
@@ -2819,7 +2810,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/super.c linux-4.9.76-vs2.3.9.5/fs/ext
  };
  
  static const match_table_t tokens = {
-@@ -1366,6 +1367,9 @@ static const match_table_t tokens = {
+@@ -1380,6 +1381,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 */
@@ -2829,7 +2820,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/super.c linux-4.9.76-vs2.3.9.5/fs/ext
        {Opt_err, NULL},
  };
  
-@@ -1611,6 +1615,20 @@ static int handle_mount_opt(struct super
+@@ -1625,6 +1629,20 @@ static int handle_mount_opt(struct super
        case Opt_nolazytime:
                sb->s_flags &= ~MS_LAZYTIME;
                return 1;
@@ -2850,7 +2841,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/super.c linux-4.9.76-vs2.3.9.5/fs/ext
        }
  
        for (m = ext4_mount_opts; m->token != Opt_err; m++)
-@@ -3550,6 +3568,9 @@ static int ext4_fill_super(struct super_
+@@ -3645,6 +3663,9 @@ static int ext4_fill_super(struct super_
                sb->s_iflags |= SB_I_CGROUPWB;
        }
  
@@ -2860,7 +2851,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/super.c linux-4.9.76-vs2.3.9.5/fs/ext
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
  
-@@ -4917,6 +4938,14 @@ static int ext4_remount(struct super_blo
+@@ -5032,6 +5053,14 @@ static int ext4_remount(struct super_blo
        if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED)
                ext4_abort(sb, "Abort forced by user");
  
@@ -2875,9 +2866,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ext4/super.c linux-4.9.76-vs2.3.9.5/fs/ext
        sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
                (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0);
  
-diff -NurpP --minimal linux-4.9.76/fs/fcntl.c linux-4.9.76-vs2.3.9.5/fs/fcntl.c
---- linux-4.9.76/fs/fcntl.c    2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/fcntl.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/fcntl.c linux-4.9/fs/fcntl.c
+--- linux-4.9/fs/fcntl.c       2021-02-24 15:47:32.270675151 +0100
++++ linux-4.9/fs/fcntl.c       2021-02-24 15:47:45.067742158 +0100
 @@ -22,6 +22,7 @@
  #include <linux/pid_namespace.h>
  #include <linux/user_namespace.h>
@@ -2886,7 +2877,7 @@ diff -NurpP --minimal linux-4.9.76/fs/fcntl.c linux-4.9.76-vs2.3.9.5/fs/fcntl.c
  
  #include <asm/poll.h>
  #include <asm/siginfo.h>
-@@ -386,6 +387,8 @@ SYSCALL_DEFINE3(fcntl64, unsigned int, f
+@@ -390,6 +391,8 @@ SYSCALL_DEFINE3(fcntl64, unsigned int, f
  
        if (!f.file)
                goto out;
@@ -2895,9 +2886,9 @@ diff -NurpP --minimal linux-4.9.76/fs/fcntl.c linux-4.9.76-vs2.3.9.5/fs/fcntl.c
  
        if (unlikely(f.file->f_mode & FMODE_PATH)) {
                if (!check_fcntl_cmd(cmd))
-diff -NurpP --minimal linux-4.9.76/fs/file.c linux-4.9.76-vs2.3.9.5/fs/file.c
---- linux-4.9.76/fs/file.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/file.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/file.c linux-4.9/fs/file.c
+--- linux-4.9/fs/file.c        2021-02-24 15:47:32.270675151 +0100
++++ linux-4.9/fs/file.c        2021-02-24 15:47:45.067742158 +0100
 @@ -22,6 +22,7 @@
  #include <linux/spinlock.h>
  #include <linux/rcupdate.h>
@@ -2927,7 +2918,7 @@ diff -NurpP --minimal linux-4.9.76/fs/file.c linux-4.9.76-vs2.3.9.5/fs/file.c
                }
        }
  
-@@ -539,6 +544,7 @@ repeat:
+@@ -540,6 +545,7 @@ repeat:
        else
                __clear_close_on_exec(fd, fdt);
        error = fd;
@@ -2935,7 +2926,7 @@ diff -NurpP --minimal linux-4.9.76/fs/file.c linux-4.9.76-vs2.3.9.5/fs/file.c
  #if 1
        /* Sanity check */
        if (rcu_access_pointer(fdt->fd[fd]) != NULL) {
-@@ -569,6 +575,7 @@ static void __put_unused_fd(struct files
+@@ -570,6 +576,7 @@ static void __put_unused_fd(struct files
        __clear_open_fd(fd, fdt);
        if (fd < files->next_fd)
                files->next_fd = fd;
@@ -2943,7 +2934,7 @@ diff -NurpP --minimal linux-4.9.76/fs/file.c linux-4.9.76-vs2.3.9.5/fs/file.c
  }
  
  void put_unused_fd(unsigned int fd)
-@@ -856,6 +863,8 @@ __releases(&files->file_lock)
+@@ -857,6 +864,8 @@ __releases(&files->file_lock)
  
        if (tofree)
                filp_close(tofree, files);
@@ -2952,9 +2943,9 @@ diff -NurpP --minimal linux-4.9.76/fs/file.c linux-4.9.76-vs2.3.9.5/fs/file.c
  
        return fd;
  
-diff -NurpP --minimal linux-4.9.76/fs/file_table.c linux-4.9.76-vs2.3.9.5/fs/file_table.c
---- linux-4.9.76/fs/file_table.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/file_table.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/file_table.c linux-4.9/fs/file_table.c
+--- linux-4.9/fs/file_table.c  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/file_table.c  2021-02-24 15:47:45.067742158 +0100
 @@ -26,6 +26,8 @@
  #include <linux/task_work.h>
  #include <linux/ima.h>
@@ -2991,9 +2982,9 @@ diff -NurpP --minimal linux-4.9.76/fs/file_table.c linux-4.9.76-vs2.3.9.5/fs/fil
                file_free(file);
        }
  }
-diff -NurpP --minimal linux-4.9.76/fs/fs_struct.c linux-4.9.76-vs2.3.9.5/fs/fs_struct.c
---- linux-4.9.76/fs/fs_struct.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/fs_struct.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/fs_struct.c linux-4.9/fs/fs_struct.c
+--- linux-4.9/fs/fs_struct.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/fs_struct.c   2021-02-24 15:47:45.067742158 +0100
 @@ -4,6 +4,7 @@
  #include <linux/path.h>
  #include <linux/slab.h>
@@ -3018,9 +3009,9 @@ diff -NurpP --minimal linux-4.9.76/fs/fs_struct.c linux-4.9.76-vs2.3.9.5/fs/fs_s
        }
        return fs;
  }
-diff -NurpP --minimal linux-4.9.76/fs/gfs2/file.c linux-4.9.76-vs2.3.9.5/fs/gfs2/file.c
---- linux-4.9.76/fs/gfs2/file.c        2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/gfs2/file.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/gfs2/file.c linux-4.9/fs/gfs2/file.c
+--- linux-4.9/fs/gfs2/file.c   2021-02-24 15:47:32.277342026 +0100
++++ linux-4.9/fs/gfs2/file.c   2021-02-24 15:47:45.067742158 +0100
 @@ -137,6 +137,9 @@ static const u32 fsflags_to_gfs2[32] = {
        [12] = GFS2_DIF_EXHASH,
        [14] = GFS2_DIF_INHERIT_JDATA,
@@ -3142,9 +3133,9 @@ diff -NurpP --minimal linux-4.9.76/fs/gfs2/file.c linux-4.9.76-vs2.3.9.5/fs/gfs2
  static long gfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        switch(cmd) {
-diff -NurpP --minimal linux-4.9.76/fs/gfs2/inode.h linux-4.9.76-vs2.3.9.5/fs/gfs2/inode.h
---- linux-4.9.76/fs/gfs2/inode.h       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/gfs2/inode.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/gfs2/inode.h linux-4.9/fs/gfs2/inode.h
+--- linux-4.9/fs/gfs2/inode.h  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/gfs2/inode.h  2021-02-24 15:47:45.067742158 +0100
 @@ -117,6 +117,7 @@ extern const struct file_operations gfs2
  extern const struct file_operations gfs2_dir_fops_nolock;
  
@@ -3153,9 +3144,9 @@ diff -NurpP --minimal linux-4.9.76/fs/gfs2/inode.h linux-4.9.76-vs2.3.9.5/fs/gfs
   
  #ifdef CONFIG_GFS2_FS_LOCKING_DLM
  extern const struct file_operations gfs2_file_fops;
-diff -NurpP --minimal linux-4.9.76/fs/hostfs/hostfs.h linux-4.9.76-vs2.3.9.5/fs/hostfs/hostfs.h
---- linux-4.9.76/fs/hostfs/hostfs.h    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/hostfs/hostfs.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/hostfs/hostfs.h linux-4.9/fs/hostfs/hostfs.h
+--- linux-4.9/fs/hostfs/hostfs.h       2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/hostfs/hostfs.h       2021-02-24 15:47:45.067742158 +0100
 @@ -42,6 +42,7 @@ struct hostfs_iattr {
        unsigned short  ia_mode;
        uid_t           ia_uid;
@@ -3164,9 +3155,9 @@ diff -NurpP --minimal linux-4.9.76/fs/hostfs/hostfs.h linux-4.9.76-vs2.3.9.5/fs/
        loff_t          ia_size;
        struct timespec ia_atime;
        struct timespec ia_mtime;
-diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
---- linux-4.9.76/fs/inode.c    2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/inode.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/inode.c linux-4.9/fs/inode.c
+--- linux-4.9/fs/inode.c       2021-02-24 15:47:32.280675463 +0100
++++ linux-4.9/fs/inode.c       2021-02-24 15:47:45.067742158 +0100
 @@ -18,6 +18,7 @@
  #include <linux/buffer_head.h> /* for inode_has_buffers */
  #include <linux/ratelimit.h>
@@ -3183,8 +3174,8 @@ diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
 +      /* essential because of inode slab reuse */
        inode->i_blkbits = sb->s_blocksize_bits;
        inode->i_flags = 0;
-       atomic_set(&inode->i_count, 1);
-@@ -144,6 +147,7 @@ int inode_init_always(struct super_block
+       atomic64_set(&inode->i_sequence, 0);
+@@ -145,6 +148,7 @@ int inode_init_always(struct super_block
                inode->i_opflags |= IOP_XATTR;
        i_uid_write(inode, 0);
        i_gid_write(inode, 0);
@@ -3192,7 +3183,7 @@ diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
        atomic_set(&inode->i_writecount, 0);
        inode->i_size = 0;
        inode->i_blocks = 0;
-@@ -155,6 +159,7 @@ int inode_init_always(struct super_block
+@@ -156,6 +160,7 @@ int inode_init_always(struct super_block
        inode->i_link = NULL;
        inode->i_dir_seq = 0;
        inode->i_rdev = 0;
@@ -3200,7 +3191,7 @@ diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
        inode->dirtied_when = 0;
  
  #ifdef CONFIG_CGROUP_WRITEBACK
-@@ -479,6 +484,8 @@ void __insert_inode_hash(struct inode *i
+@@ -480,6 +485,8 @@ void __insert_inode_hash(struct inode *i
  }
  EXPORT_SYMBOL(__insert_inode_hash);
  
@@ -3209,7 +3200,7 @@ diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
  /**
   *    __remove_inode_hash - remove an inode from the hash
   *    @inode: inode to unhash
-@@ -1977,9 +1984,11 @@ void init_special_inode(struct inode *in
+@@ -1983,9 +1990,11 @@ void init_special_inode(struct inode *in
        if (S_ISCHR(mode)) {
                inode->i_fop = &def_chr_fops;
                inode->i_rdev = rdev;
@@ -3221,7 +3212,7 @@ diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
        } else if (S_ISFIFO(mode))
                inode->i_fop = &pipefifo_fops;
        else if (S_ISSOCK(mode))
-@@ -2008,6 +2017,7 @@ void inode_init_owner(struct inode *inod
+@@ -2020,6 +2029,7 @@ void inode_init_owner(struct inode *inod
        } else
                inode->i_gid = current_fsgid();
        inode->i_mode = mode;
@@ -3229,9 +3220,9 @@ diff -NurpP --minimal linux-4.9.76/fs/inode.c linux-4.9.76-vs2.3.9.5/fs/inode.c
  }
  EXPORT_SYMBOL(inode_init_owner);
  
-diff -NurpP --minimal linux-4.9.76/fs/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ioctl.c
---- linux-4.9.76/fs/ioctl.c    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ioctl.c  2018-01-13 01:03:36.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ioctl.c linux-4.9/fs/ioctl.c
+--- linux-4.9/fs/ioctl.c       2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ioctl.c       2021-02-24 15:47:45.067742158 +0100
 @@ -15,6 +15,9 @@
  #include <linux/writeback.h>
  #include <linux/buffer_head.h>
@@ -3242,9 +3233,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ioctl.c
  #include "internal.h"
  
  #include <asm/ioctls.h>
-diff -NurpP --minimal linux-4.9.76/fs/jfs/file.c linux-4.9.76-vs2.3.9.5/fs/jfs/file.c
---- linux-4.9.76/fs/jfs/file.c 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/file.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/file.c linux-4.9/fs/jfs/file.c
+--- linux-4.9/fs/jfs/file.c    2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/file.c    2021-02-24 15:47:45.067742158 +0100
 @@ -113,7 +113,8 @@ int jfs_setattr(struct dentry *dentry, s
                        return rc;
        }
@@ -3263,9 +3254,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/file.c linux-4.9.76-vs2.3.9.5/fs/jfs/f
  };
  
  const struct file_operations jfs_file_operations = {
-diff -NurpP --minimal linux-4.9.76/fs/jfs/ioctl.c linux-4.9.76-vs2.3.9.5/fs/jfs/ioctl.c
---- linux-4.9.76/fs/jfs/ioctl.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/ioctl.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/ioctl.c linux-4.9/fs/jfs/ioctl.c
+--- linux-4.9/fs/jfs/ioctl.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/ioctl.c   2021-02-24 15:47:45.067742158 +0100
 @@ -12,6 +12,7 @@
  #include <linux/time.h>
  #include <linux/sched.h>
@@ -3323,9 +3314,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/ioctl.c linux-4.9.76-vs2.3.9.5/fs/jfs/
                flags |= oldflags & ~JFS_FL_USER_MODIFIABLE;
                jfs_inode->mode2 = flags;
  
-diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_dinode.h linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_dinode.h
---- linux-4.9.76/fs/jfs/jfs_dinode.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_dinode.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/jfs_dinode.h linux-4.9/fs/jfs/jfs_dinode.h
+--- linux-4.9/fs/jfs/jfs_dinode.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/jfs_dinode.h      2021-02-24 15:47:45.067742158 +0100
 @@ -161,9 +161,13 @@ struct dinode {
  
  #define JFS_APPEND_FL         0x01000000 /* writes to file may only append */
@@ -3342,9 +3333,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_dinode.h linux-4.9.76-vs2.3.9.5/fs
  #define JFS_FL_INHERIT                0x03C80000
  
  /* These are identical to EXT[23]_IOC_GETFLAGS/SETFLAGS */
-diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_filsys.h linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_filsys.h
---- linux-4.9.76/fs/jfs/jfs_filsys.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_filsys.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/jfs_filsys.h linux-4.9/fs/jfs/jfs_filsys.h
+--- linux-4.9/fs/jfs/jfs_filsys.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/jfs_filsys.h      2021-02-24 15:47:45.067742158 +0100
 @@ -266,6 +266,7 @@
  #define JFS_NAME_MAX  255
  #define JFS_PATH_MAX  BPSIZE
@@ -3353,9 +3344,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_filsys.h linux-4.9.76-vs2.3.9.5/fs
  
  /*
   *    file system state (superblock state)
-diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_imap.c linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_imap.c
---- linux-4.9.76/fs/jfs/jfs_imap.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_imap.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/jfs_imap.c linux-4.9/fs/jfs/jfs_imap.c
+--- linux-4.9/fs/jfs/jfs_imap.c        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/jfs_imap.c        2021-02-24 15:47:45.071075595 +0100
 @@ -46,6 +46,7 @@
  #include <linux/pagemap.h>
  #include <linux/quotaops.h>
@@ -3419,9 +3410,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_imap.c linux-4.9.76-vs2.3.9.5/fs/j
        jfs_get_inode_flags(jfs_ip);
        /*
         * mode2 is only needed for storing the higher order bits.
-diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_inode.c linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_inode.c
---- linux-4.9.76/fs/jfs/jfs_inode.c    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_inode.c  2018-01-14 06:01:31.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/jfs_inode.c linux-4.9/fs/jfs/jfs_inode.c
+--- linux-4.9/fs/jfs/jfs_inode.c       2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/jfs_inode.c       2021-02-24 15:47:45.071075595 +0100
 @@ -18,6 +18,7 @@
  
  #include <linux/fs.h>
@@ -3492,9 +3483,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_inode.c linux-4.9.76-vs2.3.9.5/fs/
  }
  
  /*
-diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_inode.h linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_inode.h
---- linux-4.9.76/fs/jfs/jfs_inode.h    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/jfs_inode.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/jfs_inode.h linux-4.9/fs/jfs/jfs_inode.h
+--- linux-4.9/fs/jfs/jfs_inode.h       2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/jfs/jfs_inode.h       2021-02-24 15:47:45.071075595 +0100
 @@ -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);
@@ -3503,9 +3494,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/jfs_inode.h linux-4.9.76-vs2.3.9.5/fs/
  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-4.9.76/fs/jfs/namei.c linux-4.9.76-vs2.3.9.5/fs/jfs/namei.c
---- linux-4.9.76/fs/jfs/namei.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/namei.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/namei.c linux-4.9/fs/jfs/namei.c
+--- linux-4.9/fs/jfs/namei.c   2021-02-24 15:47:32.287342339 +0100
++++ linux-4.9/fs/jfs/namei.c   2021-02-24 15:47:45.071075595 +0100
 @@ -22,6 +22,7 @@
  #include <linux/ctype.h>
  #include <linux/quotaops.h>
@@ -3514,7 +3505,7 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/namei.c linux-4.9.76-vs2.3.9.5/fs/jfs/
  #include "jfs_incore.h"
  #include "jfs_superblock.h"
  #include "jfs_inode.h"
-@@ -1484,6 +1485,7 @@ static struct dentry *jfs_lookup(struct
+@@ -1480,6 +1481,7 @@ static struct dentry *jfs_lookup(struct
                        jfs_err("jfs_lookup: iget failed on inum %d", (uint)inum);
        }
  
@@ -3522,7 +3513,7 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/namei.c linux-4.9.76-vs2.3.9.5/fs/jfs/
        return d_splice_alias(ip, dentry);
  }
  
-@@ -1546,6 +1548,7 @@ const struct inode_operations jfs_dir_in
+@@ -1542,6 +1544,7 @@ const struct inode_operations jfs_dir_in
        .get_acl        = jfs_get_acl,
        .set_acl        = jfs_set_acl,
  #endif
@@ -3530,9 +3521,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/namei.c linux-4.9.76-vs2.3.9.5/fs/jfs/
  };
  
  const struct file_operations jfs_dir_operations = {
-diff -NurpP --minimal linux-4.9.76/fs/jfs/super.c linux-4.9.76-vs2.3.9.5/fs/jfs/super.c
---- linux-4.9.76/fs/jfs/super.c        2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/jfs/super.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/jfs/super.c linux-4.9/fs/jfs/super.c
+--- linux-4.9/fs/jfs/super.c   2021-02-24 15:47:32.287342339 +0100
++++ linux-4.9/fs/jfs/super.c   2021-02-24 15:47:45.071075595 +0100
 @@ -206,7 +206,8 @@ enum {
        Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
        Opt_resize_nosize, Opt_errors, Opt_ignore, Opt_err, Opt_quota,
@@ -3599,9 +3590,9 @@ diff -NurpP --minimal linux-4.9.76/fs/jfs/super.c linux-4.9.76-vs2.3.9.5/fs/jfs/
  
        if (newLVSize) {
                pr_err("resize option for remount only\n");
-diff -NurpP --minimal linux-4.9.76/fs/libfs.c linux-4.9.76-vs2.3.9.5/fs/libfs.c
---- linux-4.9.76/fs/libfs.c    2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/libfs.c  2018-01-13 01:03:09.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/libfs.c linux-4.9/fs/libfs.c
+--- linux-4.9/fs/libfs.c       2021-02-24 15:47:32.287342339 +0100
++++ linux-4.9/fs/libfs.c       2021-02-24 15:47:45.071075595 +0100
 @@ -180,7 +180,8 @@ static inline unsigned char dt_type(stru
   * both impossible due to the lock on directory.
   */
@@ -3612,21 +3603,21 @@ diff -NurpP --minimal linux-4.9.76/fs/libfs.c linux-4.9.76-vs2.3.9.5/fs/libfs.c
  {
        struct dentry *dentry = file->f_path.dentry;
        struct dentry *cursor = file->private_data;
-@@ -194,9 +195,10 @@ int dcache_readdir(struct file *file, st
-       if (ctx->pos == 2)
-               p = &dentry->d_subdirs;
-       while ((next = next_positive(dentry, p, 1)) != NULL) {
+@@ -197,9 +198,10 @@ int dcache_readdir(struct file *file, st
+               p = &cursor->d_child;
+       while ((p = scan_positives(cursor, p, 1, &next)) != anchor) {
 -              if (!dir_emit(ctx, next->d_name.name, next->d_name.len,
 +              if (!filter || filter(next))
 +                      if (!dir_emit(ctx, next->d_name.name, next->d_name.len,
                              d_inode(next)->i_ino, dt_type(d_inode(next))))
 -                      break;
 +                              break;
-               moved = true;
-               p = &next->d_child;
                ctx->pos++;
-@@ -205,8 +207,22 @@ int dcache_readdir(struct file *file, st
-               move_cursor(cursor, p);
+       }
+       spin_lock(&dentry->d_lock);
+@@ -209,8 +211,22 @@ int dcache_readdir(struct file *file, st
        return 0;
  }
 +
@@ -3648,9 +3639,9 @@ diff -NurpP --minimal linux-4.9.76/fs/libfs.c linux-4.9.76-vs2.3.9.5/fs/libfs.c
  ssize_t generic_read_dir(struct file *filp, char __user *buf, size_t siz, loff_t *ppos)
  {
        return -EISDIR;
-diff -NurpP --minimal linux-4.9.76/fs/locks.c linux-4.9.76-vs2.3.9.5/fs/locks.c
---- linux-4.9.76/fs/locks.c    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/locks.c  2018-01-13 01:28:30.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/locks.c linux-4.9/fs/locks.c
+--- linux-4.9/fs/locks.c       2021-02-24 15:47:32.287342339 +0100
++++ linux-4.9/fs/locks.c       2021-02-24 15:47:45.071075595 +0100
 @@ -127,6 +127,8 @@
  #include <linux/pid_namespace.h>
  #include <linux/hashtable.h>
@@ -3837,9 +3828,9 @@ diff -NurpP --minimal linux-4.9.76/fs/locks.c linux-4.9.76-vs2.3.9.5/fs/locks.c
  
        return 0;
  }
-diff -NurpP --minimal linux-4.9.76/fs/mount.h linux-4.9.76-vs2.3.9.5/fs/mount.h
---- linux-4.9.76/fs/mount.h    2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/mount.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/mount.h linux-4.9/fs/mount.h
+--- linux-4.9/fs/mount.h       2021-02-24 15:47:32.287342339 +0100
++++ linux-4.9/fs/mount.h       2021-02-24 15:47:45.071075595 +0100
 @@ -69,6 +69,7 @@ struct mount {
        struct hlist_head mnt_pins;
        struct fs_pin mnt_umount;
@@ -3848,9 +3839,9 @@ diff -NurpP --minimal linux-4.9.76/fs/mount.h linux-4.9.76-vs2.3.9.5/fs/mount.h
  };
  
  #define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */
-diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
---- linux-4.9.76/fs/namei.c    2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/namei.c  2018-01-13 05:43:43.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/namei.c linux-4.9/fs/namei.c
+--- linux-4.9/fs/namei.c       2021-02-24 15:47:32.290675776 +0100
++++ linux-4.9/fs/namei.c       2021-02-24 15:47:45.071075595 +0100
 @@ -37,9 +37,19 @@
  #include <linux/hash.h>
  #include <linux/bitops.h>
@@ -3871,7 +3862,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
  #include "mount.h"
  
  /* [Feb-1997 T. Schoebel-Theuer]
-@@ -285,6 +295,93 @@ static int check_acl(struct inode *inode
+@@ -286,6 +296,93 @@ static int check_acl(struct inode *inode
        return -EAGAIN;
  }
  
@@ -3965,7 +3956,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
  /*
   * This does the basic permission checking
   */
-@@ -409,7 +506,7 @@ int __inode_permission(struct inode *ino
+@@ -410,7 +507,7 @@ int __inode_permission(struct inode *ino
                /*
                 * Nobody gets write access to an immutable file.
                 */
@@ -3974,7 +3965,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
                        return -EPERM;
  
                /*
-@@ -421,6 +518,10 @@ int __inode_permission(struct inode *ino
+@@ -422,6 +519,10 @@ int __inode_permission(struct inode *ino
                        return -EACCES;
        }
  
@@ -3985,7 +3976,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
        retval = do_inode_permission(inode, mask);
        if (retval)
                return retval;
-@@ -2781,7 +2882,7 @@ static int may_delete(struct inode *dir,
+@@ -2825,7 +2926,7 @@ static int may_delete(struct inode *dir,
                return -EPERM;
  
        if (check_sticky(dir, inode) || IS_APPEND(inode) ||
@@ -3994,7 +3985,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
                return -EPERM;
        if (isdir) {
                if (!d_is_dir(victim))
-@@ -2869,19 +2970,25 @@ int vfs_create(struct inode *dir, struct
+@@ -2913,19 +3014,25 @@ int vfs_create(struct inode *dir, struct
                bool want_excl)
  {
        int error = may_create(dir, dentry);
@@ -4022,7 +4013,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
        return error;
  }
  EXPORT_SYMBOL(vfs_create);
-@@ -2919,6 +3026,15 @@ static int may_open(struct path *path, i
+@@ -2963,6 +3070,15 @@ static int may_open(struct path *path, i
                break;
        }
  
@@ -4038,7 +4029,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
        error = inode_permission(inode, MAY_OPEN | acc_mode);
        if (error)
                return error;
-@@ -3371,6 +3487,16 @@ finish_open:
+@@ -3423,6 +3539,16 @@ finish_open:
        }
  finish_open_created:
        error = may_open(&nd->path, acc_mode, open_flag);
@@ -4055,7 +4046,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
        if (error)
                goto out;
        BUG_ON(*opened & FILE_OPENED); /* once it's opened, it's opened */
-@@ -3474,6 +3600,9 @@ static struct file *path_openat(struct n
+@@ -3526,6 +3652,9 @@ static struct file *path_openat(struct n
        int opened = 0;
        int error;
  
@@ -4065,7 +4056,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
        file = get_empty_filp();
        if (IS_ERR(file))
                return file;
-@@ -3507,6 +3636,12 @@ static struct file *path_openat(struct n
+@@ -3559,6 +3688,12 @@ static struct file *path_openat(struct n
                }
        }
        terminate_walk(nd);
@@ -4078,7 +4069,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
  out2:
        if (!(opened & FILE_OPENED)) {
                BUG_ON(!error);
-@@ -3627,6 +3762,11 @@ static struct dentry *filename_create(in
+@@ -3679,6 +3814,11 @@ static struct dentry *filename_create(in
                goto fail;
        }
        putname(name);
@@ -4090,7 +4081,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
        return dentry;
  fail:
        dput(dentry);
-@@ -3745,6 +3885,7 @@ retry:
+@@ -3797,6 +3937,7 @@ retry:
                        error = vfs_mknod(path.dentry->d_inode,dentry,mode,0);
                        break;
        }
@@ -4098,7 +4089,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
  out:
        done_path_create(&path, dentry);
        if (retry_estale(error, lookup_flags)) {
-@@ -4166,7 +4307,7 @@ int vfs_link(struct dentry *old_dentry,
+@@ -4218,7 +4359,7 @@ int vfs_link(struct dentry *old_dentry,
        /*
         * A link to an append-only or immutable file cannot be created.
         */
@@ -4107,7 +4098,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
                return -EPERM;
        /*
         * Updating the link count will likely cause i_uid and i_gid to
-@@ -4696,6 +4837,326 @@ const char *vfs_get_link(struct dentry *
+@@ -4748,6 +4889,326 @@ const char *vfs_get_link(struct dentry *
  }
  EXPORT_SYMBOL(vfs_get_link);
  
@@ -4434,9 +4425,9 @@ diff -NurpP --minimal linux-4.9.76/fs/namei.c linux-4.9.76-vs2.3.9.5/fs/namei.c
  /* get the link contents into pagecache */
  const char *page_get_link(struct dentry *dentry, struct inode *inode,
                          struct delayed_call *callback)
-diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/namespace.c
---- linux-4.9.76/fs/namespace.c        2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/namespace.c      2018-01-13 01:17:24.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/namespace.c linux-4.9/fs/namespace.c
+--- linux-4.9/fs/namespace.c   2021-02-24 15:47:32.290675776 +0100
++++ linux-4.9/fs/namespace.c   2021-02-24 15:47:45.074409033 +0100
 @@ -24,6 +24,11 @@
  #include <linux/magic.h>
  #include <linux/bootmem.h>
@@ -4449,7 +4440,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
  #include "pnode.h"
  #include "internal.h"
  
-@@ -971,6 +976,10 @@ vfs_kern_mount(struct file_system_type *
+@@ -980,6 +985,10 @@ vfs_kern_mount(struct file_system_type *
        if (!type)
                return ERR_PTR(-ENODEV);
  
@@ -4460,7 +4451,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
        mnt = alloc_vfsmnt(name);
        if (!mnt)
                return ERR_PTR(-ENOMEM);
-@@ -1061,6 +1070,7 @@ static struct mount *clone_mnt(struct mo
+@@ -1071,6 +1080,7 @@ static struct mount *clone_mnt(struct mo
        mnt->mnt.mnt_root = dget(root);
        mnt->mnt_mountpoint = mnt->mnt.mnt_root;
        mnt->mnt_parent = mnt;
@@ -4468,7 +4459,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
        lock_mount_hash();
        list_add_tail(&mnt->mnt_instance, &sb->s_mounts);
        unlock_mount_hash();
-@@ -1635,7 +1645,8 @@ out_unlock:
+@@ -1666,7 +1676,8 @@ out_unlock:
   */
  static inline bool may_mount(void)
  {
@@ -4477,8 +4468,8 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
 +              CAP_SYS_ADMIN, VXC_SECURE_MOUNT);
  }
  
- static inline bool may_mandlock(void)
-@@ -2144,6 +2155,7 @@ static int do_change_type(struct path *p
+ #ifdef        CONFIG_MANDATORY_FILE_LOCKING
+@@ -2181,6 +2192,7 @@ static int do_change_type(struct path *p
                if (err)
                        goto out_unlock;
        }
@@ -4486,7 +4477,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
  
        lock_mount_hash();
        for (m = mnt; m; m = (recurse ? next_mnt(m, mnt) : NULL))
-@@ -2172,12 +2184,14 @@ static bool has_locked_children(struct m
+@@ -2209,12 +2221,14 @@ static bool has_locked_children(struct m
   * do loopback mount.
   */
  static int do_loopback(struct path *path, const char *old_name,
@@ -4502,7 +4493,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
        if (!old_name || !*old_name)
                return -EINVAL;
        err = kern_path(old_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path);
-@@ -2257,7 +2271,7 @@ static int change_mount_flags(struct vfs
+@@ -2294,7 +2308,7 @@ static int change_mount_flags(struct vfs
   * on it - tough luck.
   */
  static int do_remount(struct path *path, int flags, int mnt_flags,
@@ -4511,7 +4502,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
  {
        int err;
        struct super_block *sb = path->mnt->mnt_sb;
-@@ -2742,6 +2756,7 @@ long do_mount(const char *dev_name, cons
+@@ -2779,6 +2793,7 @@ long do_mount(const char *dev_name, cons
        struct path path;
        int retval = 0;
        int mnt_flags = 0;
@@ -4519,7 +4510,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
  
        /* Discard magic */
        if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
-@@ -2769,6 +2784,12 @@ long do_mount(const char *dev_name, cons
+@@ -2806,6 +2821,12 @@ long do_mount(const char *dev_name, cons
        if (!(flags & MS_NOATIME))
                mnt_flags |= MNT_RELATIME;
  
@@ -4532,7 +4523,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
        /* Separate the per-mountpoint flags */
        if (flags & MS_NOSUID)
                mnt_flags |= MNT_NOSUID;
-@@ -2793,15 +2814,18 @@ long do_mount(const char *dev_name, cons
+@@ -2830,15 +2851,18 @@ long do_mount(const char *dev_name, cons
                mnt_flags |= path.mnt->mnt_flags & MNT_ATIME_MASK;
        }
  
@@ -4553,7 +4544,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
        else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE))
                retval = do_change_type(&path, flags);
        else if (flags & MS_MOVE)
-@@ -2942,6 +2966,7 @@ struct mnt_namespace *copy_mnt_ns(unsign
+@@ -2979,6 +3003,7 @@ struct mnt_namespace *copy_mnt_ns(unsign
                        p = next_mnt(p, old);
        }
        namespace_unlock();
@@ -4561,7 +4552,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
  
        if (rootmnt)
                mntput(rootmnt);
-@@ -3117,9 +3142,10 @@ SYSCALL_DEFINE2(pivot_root, const char _
+@@ -3154,9 +3179,10 @@ SYSCALL_DEFINE2(pivot_root, const char _
        new_mnt = real_mount(new.mnt);
        root_mnt = real_mount(root.mnt);
        old_mnt = real_mount(old.mnt);
@@ -4574,7 +4565,7 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
                goto out4;
        if (!check_mnt(root_mnt) || !check_mnt(new_mnt))
                goto out4;
-@@ -3257,6 +3283,7 @@ void put_mnt_ns(struct mnt_namespace *ns
+@@ -3294,6 +3320,7 @@ void put_mnt_ns(struct mnt_namespace *ns
        if (!atomic_dec_and_test(&ns->count))
                return;
        drop_collected_mounts(&ns->root->mnt);
@@ -4582,9 +4573,9 @@ diff -NurpP --minimal linux-4.9.76/fs/namespace.c linux-4.9.76-vs2.3.9.5/fs/name
        free_mnt_ns(ns);
  }
  
-diff -NurpP --minimal linux-4.9.76/fs/nfs/client.c linux-4.9.76-vs2.3.9.5/fs/nfs/client.c
---- linux-4.9.76/fs/nfs/client.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfs/client.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfs/client.c linux-4.9/fs/nfs/client.c
+--- linux-4.9/fs/nfs/client.c  2021-02-24 15:47:32.290675776 +0100
++++ linux-4.9/fs/nfs/client.c  2021-02-24 15:47:45.074409033 +0100
 @@ -586,6 +586,9 @@ int nfs_init_server_rpcclient(struct nfs
        if (server->flags & NFS_MOUNT_SOFT)
                server->client->cl_softrtry = 1;
@@ -4606,9 +4597,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/client.c linux-4.9.76-vs2.3.9.5/fs/nfs
        server->maxfilesize = fsinfo->maxfilesize;
  
        server->time_delta = fsinfo->time_delta;
-diff -NurpP --minimal linux-4.9.76/fs/nfs/dir.c linux-4.9.76-vs2.3.9.5/fs/nfs/dir.c
---- linux-4.9.76/fs/nfs/dir.c  2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfs/dir.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfs/dir.c linux-4.9/fs/nfs/dir.c
+--- linux-4.9/fs/nfs/dir.c     2021-02-24 15:47:32.294009214 +0100
++++ linux-4.9/fs/nfs/dir.c     2021-02-24 15:47:45.074409033 +0100
 @@ -37,6 +37,7 @@
  #include <linux/sched.h>
  #include <linux/kmemleak.h>
@@ -4617,7 +4608,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/dir.c linux-4.9.76-vs2.3.9.5/fs/nfs/di
  
  #include "delegation.h"
  #include "iostat.h"
-@@ -1420,6 +1421,7 @@ struct dentry *nfs_lookup(struct inode *
+@@ -1431,6 +1432,7 @@ struct dentry *nfs_lookup(struct inode *
        /* Success: notify readdir to use READDIRPLUS */
        nfs_advise_use_readdirplus(dir);
  
@@ -4625,9 +4616,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/dir.c linux-4.9.76-vs2.3.9.5/fs/nfs/di
  no_entry:
        res = d_splice_alias(inode, dentry);
        if (res != NULL) {
-diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/inode.c
---- linux-4.9.76/fs/nfs/inode.c        2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfs/inode.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfs/inode.c linux-4.9/fs/nfs/inode.c
+--- linux-4.9/fs/nfs/inode.c   2021-02-24 15:47:32.294009214 +0100
++++ linux-4.9/fs/nfs/inode.c   2021-02-24 15:47:45.074409033 +0100
 @@ -38,6 +38,7 @@
  #include <linux/slab.h>
  #include <linux/compat.h>
@@ -4690,7 +4681,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/
                nfs_set_cache_invalid(inode, NFS_INO_INVALID_ACCESS
                                | NFS_INO_INVALID_ACL);
        }
-@@ -1272,7 +1281,9 @@ static int nfs_check_inode_attributes(st
+@@ -1273,7 +1282,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;
@@ -4701,7 +4692,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/
  
        if (nfs_have_delegated_attributes(inode))
                return 0;
-@@ -1301,13 +1312,18 @@ static int nfs_check_inode_attributes(st
+@@ -1302,13 +1313,18 @@ static int nfs_check_inode_attributes(st
                }
        }
  
@@ -4722,7 +4713,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/
  
        /* Has the link count changed? */
        if ((fattr->valid & NFS_ATTR_FATTR_NLINK) && inode->i_nlink != fattr->nlink)
-@@ -1666,6 +1682,9 @@ static int nfs_update_inode(struct inode
+@@ -1667,6 +1683,9 @@ static int nfs_update_inode(struct inode
        unsigned long save_cache_validity;
        bool have_writers = nfs_file_has_buffered_writers(nfsi);
        bool cache_revalidated = true;
@@ -4732,7 +4723,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/
  
        dfprintk(VFS, "NFS: %s(%s/%lu fh_crc=0x%08x ct=%d info=0x%x)\n",
                        __func__, inode->i_sb->s_id, inode->i_ino,
-@@ -1785,6 +1804,9 @@ static int nfs_update_inode(struct inode
+@@ -1786,6 +1805,9 @@ static int nfs_update_inode(struct inode
                cache_revalidated = false;
        }
  
@@ -4742,7 +4733,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/
  
        if (fattr->valid & NFS_ATTR_FATTR_ATIME)
                memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime));
-@@ -1839,6 +1861,10 @@ static int nfs_update_inode(struct inode
+@@ -1840,6 +1862,10 @@ static int nfs_update_inode(struct inode
                cache_revalidated = false;
        }
  
@@ -4753,9 +4744,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/inode.c linux-4.9.76-vs2.3.9.5/fs/nfs/
        if (fattr->valid & NFS_ATTR_FATTR_NLINK) {
                if (inode->i_nlink != fattr->nlink) {
                        invalid |= NFS_INO_INVALID_ATTR;
-diff -NurpP --minimal linux-4.9.76/fs/nfs/nfs3xdr.c linux-4.9.76-vs2.3.9.5/fs/nfs/nfs3xdr.c
---- linux-4.9.76/fs/nfs/nfs3xdr.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfs/nfs3xdr.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfs/nfs3xdr.c linux-4.9/fs/nfs/nfs3xdr.c
+--- linux-4.9/fs/nfs/nfs3xdr.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/nfs/nfs3xdr.c 2021-02-24 15:47:45.074409033 +0100
 @@ -20,6 +20,7 @@
  #include <linux/nfs3.h>
  #include <linux/nfs_fs.h>
@@ -4901,9 +4892,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/nfs3xdr.c linux-4.9.76-vs2.3.9.5/fs/nf
  }
  
  /*
-diff -NurpP --minimal linux-4.9.76/fs/nfs/super.c linux-4.9.76-vs2.3.9.5/fs/nfs/super.c
---- linux-4.9.76/fs/nfs/super.c        2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfs/super.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfs/super.c linux-4.9/fs/nfs/super.c
+--- linux-4.9/fs/nfs/super.c   2021-02-24 15:47:32.300676089 +0100
++++ linux-4.9/fs/nfs/super.c   2021-02-24 15:47:45.074409033 +0100
 @@ -54,6 +54,7 @@
  #include <linux/parser.h>
  #include <linux/nsproxy.h>
@@ -4977,9 +4968,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfs/super.c linux-4.9.76-vs2.3.9.5/fs/nfs/
  
                /*
                 * options that take text values
-diff -NurpP --minimal linux-4.9.76/fs/nfsd/auth.c linux-4.9.76-vs2.3.9.5/fs/nfsd/auth.c
---- linux-4.9.76/fs/nfsd/auth.c        2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfsd/auth.c      2018-01-13 21:30:31.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfsd/auth.c linux-4.9/fs/nfsd/auth.c
+--- linux-4.9/fs/nfsd/auth.c   2021-02-24 15:47:32.300676089 +0100
++++ linux-4.9/fs/nfsd/auth.c   2021-02-24 15:47:45.074409033 +0100
 @@ -1,6 +1,7 @@
  /* Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> */
  
@@ -4998,9 +4989,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfsd/auth.c linux-4.9.76-vs2.3.9.5/fs/nfsd
  
        rqgi = rqstp->rq_cred.cr_group_info;
  
-diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfs3xdr.c linux-4.9.76-vs2.3.9.5/fs/nfsd/nfs3xdr.c
---- linux-4.9.76/fs/nfsd/nfs3xdr.c     2018-01-13 21:28:57.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfsd/nfs3xdr.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfsd/nfs3xdr.c linux-4.9/fs/nfsd/nfs3xdr.c
+--- linux-4.9/fs/nfsd/nfs3xdr.c        2021-02-24 15:47:32.300676089 +0100
++++ linux-4.9/fs/nfsd/nfs3xdr.c        2021-02-24 15:47:45.077742470 +0100
 @@ -8,6 +8,7 @@
  
  #include <linux/namei.h>
@@ -5054,9 +5045,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfs3xdr.c linux-4.9.76-vs2.3.9.5/fs/n
        if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
                p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
        } else {
-diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfs4xdr.c linux-4.9.76-vs2.3.9.5/fs/nfsd/nfs4xdr.c
---- linux-4.9.76/fs/nfsd/nfs4xdr.c     2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfsd/nfs4xdr.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfsd/nfs4xdr.c linux-4.9/fs/nfsd/nfs4xdr.c
+--- linux-4.9/fs/nfsd/nfs4xdr.c        2021-02-24 15:47:32.304009527 +0100
++++ linux-4.9/fs/nfsd/nfs4xdr.c        2021-02-24 15:47:45.077742470 +0100
 @@ -40,6 +40,7 @@
  #include <linux/utsname.h>
  #include <linux/pagemap.h>
@@ -5065,7 +5056,7 @@ diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfs4xdr.c linux-4.9.76-vs2.3.9.5/fs/n
  
  #include "idmap.h"
  #include "acl.h"
-@@ -2677,12 +2678,16 @@ out_acl:
+@@ -2679,12 +2680,16 @@ out_acl:
                *p++ = cpu_to_be32(stat.nlink);
        }
        if (bmval1 & FATTR4_WORD1_OWNER) {
@@ -5084,9 +5075,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfs4xdr.c linux-4.9.76-vs2.3.9.5/fs/n
                if (status)
                        goto out;
        }
-diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfsxdr.c linux-4.9.76-vs2.3.9.5/fs/nfsd/nfsxdr.c
---- linux-4.9.76/fs/nfsd/nfsxdr.c      2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/nfsd/nfsxdr.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/nfsd/nfsxdr.c linux-4.9/fs/nfsd/nfsxdr.c
+--- linux-4.9/fs/nfsd/nfsxdr.c 2021-02-24 15:47:32.307342964 +0100
++++ linux-4.9/fs/nfsd/nfsxdr.c 2021-02-24 15:47:45.077742470 +0100
 @@ -7,6 +7,7 @@
  #include "vfs.h"
  #include "xdr.h"
@@ -5138,9 +5129,9 @@ diff -NurpP --minimal linux-4.9.76/fs/nfsd/nfsxdr.c linux-4.9.76-vs2.3.9.5/fs/nf
  
        if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
                *p++ = htonl(NFS_MAXPATHLEN);
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/dlmglue.c linux-4.9.76-vs2.3.9.5/fs/ocfs2/dlmglue.c
---- linux-4.9.76/fs/ocfs2/dlmglue.c    2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/dlmglue.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/dlmglue.c linux-4.9/fs/ocfs2/dlmglue.c
+--- linux-4.9/fs/ocfs2/dlmglue.c       2021-02-24 15:47:32.314009840 +0100
++++ linux-4.9/fs/ocfs2/dlmglue.c       2021-02-24 15:47:45.077742470 +0100
 @@ -2120,6 +2120,7 @@ static void __ocfs2_stuff_meta_lvb(struc
        lvb->lvb_iclusters = cpu_to_be32(oi->ip_clusters);
        lvb->lvb_iuid      = cpu_to_be32(i_uid_read(inode));
@@ -5157,9 +5148,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/dlmglue.c linux-4.9.76-vs2.3.9.5/fs/
        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-4.9.76/fs/ocfs2/dlmglue.h linux-4.9.76-vs2.3.9.5/fs/ocfs2/dlmglue.h
---- linux-4.9.76/fs/ocfs2/dlmglue.h    2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/dlmglue.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/dlmglue.h linux-4.9/fs/ocfs2/dlmglue.h
+--- linux-4.9/fs/ocfs2/dlmglue.h       2021-02-24 15:47:32.314009840 +0100
++++ linux-4.9/fs/ocfs2/dlmglue.h       2021-02-24 15:47:45.077742470 +0100
 @@ -46,7 +46,8 @@ struct ocfs2_meta_lvb {
        __be16       lvb_inlink;
        __be32       lvb_iattr;
@@ -5170,9 +5161,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/dlmglue.h linux-4.9.76-vs2.3.9.5/fs/
  };
  
  #define OCFS2_QINFO_LVB_VERSION 1
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/file.c linux-4.9.76-vs2.3.9.5/fs/ocfs2/file.c
---- linux-4.9.76/fs/ocfs2/file.c       2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/file.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/file.c linux-4.9/fs/ocfs2/file.c
+--- linux-4.9/fs/ocfs2/file.c  2021-02-24 15:47:32.314009840 +0100
++++ linux-4.9/fs/ocfs2/file.c  2021-02-24 15:47:45.077742470 +0100
 @@ -1151,7 +1151,7 @@ int ocfs2_setattr(struct dentry *dentry,
                attr->ia_valid &= ~ATTR_SIZE;
  
@@ -5182,9 +5173,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/file.c linux-4.9.76-vs2.3.9.5/fs/ocf
        if (!(attr->ia_valid & OCFS2_VALID_ATTRS))
                return 0;
  
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/inode.c linux-4.9.76-vs2.3.9.5/fs/ocfs2/inode.c
---- linux-4.9.76/fs/ocfs2/inode.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/inode.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/inode.c linux-4.9/fs/ocfs2/inode.c
+--- linux-4.9/fs/ocfs2/inode.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ocfs2/inode.c 2021-02-24 15:47:45.077742470 +0100
 @@ -28,6 +28,7 @@
  #include <linux/highmem.h>
  #include <linux/pagemap.h>
@@ -5281,9 +5272,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/inode.c linux-4.9.76-vs2.3.9.5/fs/oc
  
        /* Fast symlinks will have i_size but no allocated clusters. */
        if (S_ISLNK(inode->i_mode) && !fe->i_clusters) {
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/inode.h linux-4.9.76-vs2.3.9.5/fs/ocfs2/inode.h
---- linux-4.9.76/fs/ocfs2/inode.h      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/inode.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/inode.h linux-4.9/fs/ocfs2/inode.h
+--- linux-4.9/fs/ocfs2/inode.h 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ocfs2/inode.h 2021-02-24 15:47:45.077742470 +0100
 @@ -155,6 +155,7 @@ int ocfs2_mark_inode_dirty(handle_t *han
  
  void ocfs2_set_inode_flags(struct inode *inode);
@@ -5292,9 +5283,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/inode.h linux-4.9.76-vs2.3.9.5/fs/oc
  
  static inline blkcnt_t ocfs2_inode_sector_count(struct inode *inode)
  {
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/ioctl.c linux-4.9.76-vs2.3.9.5/fs/ocfs2/ioctl.c
---- linux-4.9.76/fs/ocfs2/ioctl.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/ioctl.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/ioctl.c linux-4.9/fs/ocfs2/ioctl.c
+--- linux-4.9/fs/ocfs2/ioctl.c 2021-02-24 15:47:32.314009840 +0100
++++ linux-4.9/fs/ocfs2/ioctl.c 2021-02-24 15:47:45.077742470 +0100
 @@ -76,7 +76,41 @@ static int ocfs2_get_inode_attr(struct i
        return status;
  }
@@ -5358,9 +5349,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/ioctl.c linux-4.9.76-vs2.3.9.5/fs/oc
  long ocfs2_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
  {
        struct inode *inode = file_inode(filp);
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/namei.c linux-4.9.76-vs2.3.9.5/fs/ocfs2/namei.c
---- linux-4.9.76/fs/ocfs2/namei.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/namei.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/namei.c linux-4.9/fs/ocfs2/namei.c
+--- linux-4.9/fs/ocfs2/namei.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/ocfs2/namei.c 2021-02-24 15:47:45.081075908 +0100
 @@ -41,6 +41,7 @@
  #include <linux/slab.h>
  #include <linux/highmem.h>
@@ -5393,9 +5384,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/namei.c linux-4.9.76-vs2.3.9.5/fs/oc
        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-4.9.76/fs/ocfs2/ocfs2.h linux-4.9.76-vs2.3.9.5/fs/ocfs2/ocfs2.h
---- linux-4.9.76/fs/ocfs2/ocfs2.h      2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/ocfs2.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/ocfs2.h linux-4.9/fs/ocfs2/ocfs2.h
+--- linux-4.9/fs/ocfs2/ocfs2.h 2021-02-24 15:47:32.317343277 +0100
++++ linux-4.9/fs/ocfs2/ocfs2.h 2021-02-24 15:47:45.081075908 +0100
 @@ -289,6 +289,7 @@ enum ocfs2_mount_options
        OCFS2_MOUNT_JOURNAL_ASYNC_COMMIT = 1 << 15,  /* Journal Async Commit */
        OCFS2_MOUNT_ERRORS_CONT = 1 << 16, /* Return EIO to the calling process on error */
@@ -5404,9 +5395,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/ocfs2.h linux-4.9.76-vs2.3.9.5/fs/oc
  };
  
  #define OCFS2_OSB_SOFT_RO     0x0001
-diff -NurpP --minimal linux-4.9.76/fs/ocfs2/ocfs2_fs.h linux-4.9.76-vs2.3.9.5/fs/ocfs2/ocfs2_fs.h
---- linux-4.9.76/fs/ocfs2/ocfs2_fs.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/ocfs2_fs.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/ocfs2_fs.h linux-4.9/fs/ocfs2/ocfs2_fs.h
+--- linux-4.9/fs/ocfs2/ocfs2_fs.h      2021-02-24 15:47:32.317343277 +0100
++++ linux-4.9/fs/ocfs2/ocfs2_fs.h      2021-02-24 15:47:45.081075908 +0100
 @@ -275,6 +275,11 @@
  #define OCFS2_TOPDIR_FL                       FS_TOPDIR_FL    /* Top of directory hierarchies*/
  #define OCFS2_RESERVED_FL             FS_RESERVED_FL  /* reserved for ext2 lib */
@@ -5419,9 +5410,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/ocfs2_fs.h linux-4.9.76-vs2.3.9.5/fs
  #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-4.9.76/fs/ocfs2/super.c linux-4.9.76-vs2.3.9.5/fs/ocfs2/super.c
---- linux-4.9.76/fs/ocfs2/super.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/ocfs2/super.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/ocfs2/super.c linux-4.9/fs/ocfs2/super.c
+--- linux-4.9/fs/ocfs2/super.c 2021-02-24 15:47:32.317343277 +0100
++++ linux-4.9/fs/ocfs2/super.c 2021-02-24 15:47:45.081075908 +0100
 @@ -188,6 +188,7 @@ enum {
        Opt_dir_resv_level,
        Opt_journal_async_commit,
@@ -5440,7 +5431,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/super.c linux-4.9.76-vs2.3.9.5/fs/oc
        {Opt_err, NULL}
  };
  
-@@ -673,6 +677,13 @@ static int ocfs2_remount(struct super_bl
+@@ -672,6 +676,13 @@ static int ocfs2_remount(struct super_bl
                goto out;
        }
  
@@ -5454,7 +5445,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/super.c linux-4.9.76-vs2.3.9.5/fs/oc
        /* We're going to/from readonly mode. */
        if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
                /* Disable quota accounting before remounting RO */
-@@ -1162,6 +1173,9 @@ static int ocfs2_fill_super(struct super
+@@ -1161,6 +1172,9 @@ static int ocfs2_fill_super(struct super
  
        ocfs2_complete_mount_recovery(osb);
  
@@ -5464,7 +5455,7 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/super.c linux-4.9.76-vs2.3.9.5/fs/oc
        if (ocfs2_mount_local(osb))
                snprintf(nodestr, sizeof(nodestr), "local");
        else
-@@ -1481,6 +1495,20 @@ static int ocfs2_parse_options(struct su
+@@ -1480,6 +1494,20 @@ static int ocfs2_parse_options(struct su
                case Opt_journal_async_commit:
                        mopt->mount_opt |= OCFS2_MOUNT_JOURNAL_ASYNC_COMMIT;
                        break;
@@ -5485,9 +5476,9 @@ diff -NurpP --minimal linux-4.9.76/fs/ocfs2/super.c linux-4.9.76-vs2.3.9.5/fs/oc
                default:
                        mlog(ML_ERROR,
                             "Unrecognized mount option \"%s\" "
-diff -NurpP --minimal linux-4.9.76/fs/open.c linux-4.9.76-vs2.3.9.5/fs/open.c
---- linux-4.9.76/fs/open.c     2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/open.c   2018-01-13 22:17:33.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/open.c linux-4.9/fs/open.c
+--- linux-4.9/fs/open.c        2021-02-24 15:47:32.320676715 +0100
++++ linux-4.9/fs/open.c        2021-02-24 15:47:45.081075908 +0100
 @@ -31,6 +31,11 @@
  #include <linux/ima.h>
  #include <linux/dnotify.h>
@@ -5519,7 +5510,7 @@ diff -NurpP --minimal linux-4.9.76/fs/open.c linux-4.9.76-vs2.3.9.5/fs/open.c
        inode = path->dentry->d_inode;
  
        /* For directories it's -EISDIR, for other non-regulars - -EINVAL */
-@@ -565,6 +575,13 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
+@@ -584,6 +594,13 @@ SYSCALL_DEFINE3(fchmodat, int, dfd, cons
        unsigned int lookup_flags = LOOKUP_FOLLOW;
  retry:
        error = user_path_at(dfd, filename, lookup_flags, &path);
@@ -5533,7 +5524,7 @@ diff -NurpP --minimal linux-4.9.76/fs/open.c linux-4.9.76-vs2.3.9.5/fs/open.c
        if (!error) {
                error = chmod_common(&path, mode);
                path_put(&path);
-@@ -599,13 +616,15 @@ retry_deleg:
+@@ -618,13 +635,15 @@ retry_deleg:
                if (!uid_valid(uid))
                        return -EINVAL;
                newattrs.ia_valid |= ATTR_UID;
@@ -5551,7 +5542,7 @@ diff -NurpP --minimal linux-4.9.76/fs/open.c linux-4.9.76-vs2.3.9.5/fs/open.c
        }
        if (!S_ISDIR(inode->i_mode))
                newattrs.ia_valid |=
-@@ -643,6 +662,10 @@ retry:
+@@ -662,6 +681,10 @@ retry:
        error = mnt_want_write(path.mnt);
        if (error)
                goto out_release;
@@ -5562,10 +5553,10 @@ diff -NurpP --minimal linux-4.9.76/fs/open.c linux-4.9.76-vs2.3.9.5/fs/open.c
        error = chown_common(&path, user, group);
        mnt_drop_write(path.mnt);
  out_release:
-diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/proc/array.c
---- linux-4.9.76/fs/proc/array.c       2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/array.c     2018-01-13 01:59:39.000000000 +0000
-@@ -85,6 +85,8 @@
+diff -urNp -x '*.orig' linux-4.9/fs/proc/array.c linux-4.9/fs/proc/array.c
+--- linux-4.9/fs/proc/array.c  2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/array.c  2021-02-24 15:47:45.081075908 +0100
+@@ -86,6 +86,8 @@
  #include <linux/string_helpers.h>
  #include <linux/user_namespace.h>
  #include <linux/fs_struct.h>
@@ -5574,7 +5565,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
-@@ -169,6 +171,9 @@ static inline void task_state(struct seq
+@@ -170,6 +172,9 @@ static inline void task_state(struct seq
        ppid = pid_alive(p) ?
                task_tgid_nr_ns(rcu_dereference(p->real_parent), ns) : 0;
  
@@ -5584,7 +5575,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
        tracer = ptrace_parent(p);
        if (tracer)
                tpid = task_pid_nr_ns(tracer, ns);
-@@ -306,8 +311,8 @@ static inline void task_sig(struct seq_f
+@@ -307,8 +312,8 @@ static inline void task_sig(struct seq_f
        render_sigset_t(m, "SigCgt:\t", &caught);
  }
  
@@ -5595,7 +5586,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
  {
        unsigned __capi;
  
-@@ -334,11 +339,12 @@ static inline void task_cap(struct seq_f
+@@ -335,11 +340,12 @@ static inline void task_cap(struct seq_f
        cap_ambient     = cred->cap_ambient;
        rcu_read_unlock();
  
@@ -5613,7 +5604,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
  }
  
  static inline void task_seccomp(struct seq_file *m, struct task_struct *p)
-@@ -365,6 +371,43 @@ static void task_cpus_allowed(struct seq
+@@ -391,6 +397,43 @@ static void task_cpus_allowed(struct seq
                   cpumask_pr_args(&task->cpus_allowed));
  }
  
@@ -5657,7 +5648,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
  int proc_pid_status(struct seq_file *m, struct pid_namespace *ns,
                        struct pid *pid, struct task_struct *task)
  {
-@@ -382,6 +425,7 @@ int proc_pid_status(struct seq_file *m,
+@@ -408,6 +451,7 @@ int proc_pid_status(struct seq_file *m,
        task_seccomp(m, task);
        task_cpus_allowed(m, task);
        cpuset_task_status_allowed(m, task);
@@ -5665,7 +5656,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
        task_context_switch_counts(m, task);
        return 0;
  }
-@@ -494,6 +538,17 @@ static int do_task_stat(struct seq_file
+@@ -523,6 +567,17 @@ static int do_task_stat(struct seq_file
        /* convert nsec -> ticks */
        start_time = nsec_to_clock_t(task->real_start_time);
  
@@ -5683,9 +5674,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/array.c linux-4.9.76-vs2.3.9.5/fs/pro
        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-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc/base.c
---- linux-4.9.76/fs/proc/base.c        2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/base.c      2018-01-13 01:59:11.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/base.c linux-4.9/fs/proc/base.c
+--- linux-4.9/fs/proc/base.c   2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/base.c   2021-02-24 15:47:45.081075908 +0100
 @@ -87,6 +87,8 @@
  #include <linux/slab.h>
  #include <linux/flex_array.h>
@@ -5695,7 +5686,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
  #ifdef CONFIG_HARDWALL
  #include <asm/hardwall.h>
  #endif
-@@ -1063,10 +1065,15 @@ static int __set_oom_adj(struct file *fi
+@@ -1079,10 +1081,15 @@ static int __set_oom_adj(struct file *fi
        mutex_lock(&oom_adj_mutex);
        if (legacy) {
                if (oom_adj < task->signal->oom_score_adj &&
@@ -5712,7 +5703,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
                /*
                 * /proc/pid/oom_adj is provided for legacy purposes, ask users to use
                 * /proc/pid/oom_score_adj instead.
-@@ -1696,6 +1703,8 @@ struct inode *proc_pid_make_inode(struct
+@@ -1708,6 +1715,8 @@ struct inode *proc_pid_make_inode(struct
                inode->i_gid = cred->egid;
                rcu_read_unlock();
        }
@@ -5721,7 +5712,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
        security_task_to_inode(task, inode);
  
  out:
-@@ -1741,6 +1750,8 @@ int pid_getattr(struct vfsmount *mnt, st
+@@ -1753,6 +1762,8 @@ int pid_getattr(struct vfsmount *mnt, st
  
  /* dentry stuff */
  
@@ -5730,7 +5721,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
  /*
   *    Exceptional case: normally we are not allowed to unhash a busy
   * directory. In this case, however, we can do it - no aliasing problems
-@@ -1769,6 +1780,19 @@ int pid_revalidate(struct dentry *dentry
+@@ -1781,6 +1792,19 @@ int pid_revalidate(struct dentry *dentry
        task = get_proc_task(inode);
  
        if (task) {
@@ -5750,7 +5741,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
                if ((inode->i_mode == (S_IFDIR|S_IRUGO|S_IXUGO)) ||
                    task_dumpable(task)) {
                        rcu_read_lock();
-@@ -2408,6 +2432,13 @@ static struct dentry *proc_pident_lookup
+@@ -2445,6 +2469,13 @@ static struct dentry *proc_pident_lookup
        if (!task)
                goto out_no_task;
  
@@ -5764,7 +5755,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
        /*
         * Yes, it does not scale. And it should not. Don't add
         * new entries into /proc/<tgid>/ without very good reasons.
-@@ -2847,6 +2878,11 @@ static int proc_pid_personality(struct s
+@@ -2884,6 +2915,11 @@ static int proc_pid_personality(struct s
  static const struct file_operations proc_task_operations;
  static const struct inode_operations proc_task_inode_operations;
  
@@ -5776,7 +5767,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
  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),
-@@ -2911,6 +2947,8 @@ static const struct pid_entry tgid_base_
+@@ -2948,6 +2984,8 @@ static const struct pid_entry tgid_base_
  #ifdef CONFIG_CGROUPS
        ONE("cgroup",  S_IRUGO, proc_cgroup_show),
  #endif
@@ -5785,7 +5776,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
        ONE("oom_score",  S_IRUGO, proc_oom_score),
        REG("oom_adj",    S_IRUGO|S_IWUSR, proc_oom_adj_operations),
        REG("oom_score_adj", S_IRUGO|S_IWUSR, proc_oom_score_adj_operations),
-@@ -3126,7 +3164,7 @@ retry:
+@@ -3163,7 +3201,7 @@ retry:
        iter.task = NULL;
        pid = find_ge_pid(iter.tgid, ns);
        if (pid) {
@@ -5794,7 +5785,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
                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
-@@ -3186,8 +3224,10 @@ int proc_pid_readdir(struct file *file,
+@@ -3223,8 +3261,10 @@ int proc_pid_readdir(struct file *file,
                if (!has_pid_permissions(ns, iter.task, 2))
                        continue;
  
@@ -5806,7 +5797,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
                if (!proc_fill_cache(file, ctx, name, len,
                                     proc_pid_instantiate, iter.task, NULL)) {
                        put_task_struct(iter.task);
-@@ -3324,6 +3364,7 @@ static const struct pid_entry tid_base_s
+@@ -3361,6 +3401,7 @@ static const struct pid_entry tid_base_s
        REG("projid_map", S_IRUGO|S_IWUSR, proc_projid_map_operations),
        REG("setgroups",  S_IRUGO|S_IWUSR, proc_setgroups_operations),
  #endif
@@ -5814,7 +5805,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
  };
  
  static int proc_tid_base_readdir(struct file *file, struct dir_context *ctx)
-@@ -3390,6 +3431,8 @@ static struct dentry *proc_task_lookup(s
+@@ -3427,6 +3468,8 @@ static struct dentry *proc_task_lookup(s
        tid = name_to_int(&dentry->d_name);
        if (tid == ~0U)
                goto out;
@@ -5823,9 +5814,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/base.c linux-4.9.76-vs2.3.9.5/fs/proc
  
        ns = dentry->d_sb->s_fs_info;
        rcu_read_lock();
-diff -NurpP --minimal linux-4.9.76/fs/proc/generic.c linux-4.9.76-vs2.3.9.5/fs/proc/generic.c
---- linux-4.9.76/fs/proc/generic.c     2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/generic.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/generic.c linux-4.9/fs/proc/generic.c
+--- linux-4.9/fs/proc/generic.c        2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/generic.c        2021-02-24 15:47:45.081075908 +0100
 @@ -22,6 +22,7 @@
  #include <linux/bitops.h>
  #include <linux/spinlock.h>
@@ -5900,10 +5891,10 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/generic.c linux-4.9.76-vs2.3.9.5/fs/p
                } else {
                        kfree(ent);
                        ent = NULL;
-diff -NurpP --minimal linux-4.9.76/fs/proc/inode.c linux-4.9.76-vs2.3.9.5/fs/proc/inode.c
---- linux-4.9.76/fs/proc/inode.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/inode.c     2018-01-10 02:50:49.000000000 +0000
-@@ -432,6 +432,8 @@ struct inode *proc_get_inode(struct supe
+diff -urNp -x '*.orig' linux-4.9/fs/proc/inode.c linux-4.9/fs/proc/inode.c
+--- linux-4.9/fs/proc/inode.c  2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/inode.c  2021-02-24 15:47:45.081075908 +0100
+@@ -433,6 +433,8 @@ struct inode *proc_get_inode(struct supe
                        inode->i_uid = de->uid;
                        inode->i_gid = de->gid;
                }
@@ -5912,9 +5903,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/inode.c linux-4.9.76-vs2.3.9.5/fs/pro
                if (de->size)
                        inode->i_size = de->size;
                if (de->nlink)
-diff -NurpP --minimal linux-4.9.76/fs/proc/internal.h linux-4.9.76-vs2.3.9.5/fs/proc/internal.h
---- linux-4.9.76/fs/proc/internal.h    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/internal.h  2018-01-13 01:48:13.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/internal.h linux-4.9/fs/proc/internal.h
+--- linux-4.9/fs/proc/internal.h       2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/internal.h       2021-02-24 15:47:45.084409345 +0100
 @@ -14,6 +14,7 @@
  #include <linux/spinlock.h>
  #include <linux/atomic.h>
@@ -5954,7 +5945,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/internal.h linux-4.9.76-vs2.3.9.5/fs/
        unsigned int fd;
        union proc_op op;
        struct proc_dir_entry *pde;
-@@ -92,11 +101,16 @@ static inline struct pid *proc_pid(struc
+@@ -93,11 +102,16 @@ static inline struct pid *proc_pid(struc
        return PROC_I(inode)->pid;
  }
  
@@ -5972,7 +5963,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/internal.h linux-4.9.76-vs2.3.9.5/fs/
  static inline int task_dumpable(struct task_struct *task)
  {
        int dumpable = 0;
-@@ -155,6 +169,8 @@ extern int proc_pid_status(struct seq_fi
+@@ -156,6 +170,8 @@ extern int proc_pid_status(struct seq_fi
                           struct pid *, struct task_struct *);
  extern int proc_pid_statm(struct seq_file *, struct pid_namespace *,
                          struct pid *, struct task_struct *);
@@ -5981,9 +5972,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/internal.h linux-4.9.76-vs2.3.9.5/fs/
  
  /*
   * base.c
-diff -NurpP --minimal linux-4.9.76/fs/proc/loadavg.c linux-4.9.76-vs2.3.9.5/fs/proc/loadavg.c
---- linux-4.9.76/fs/proc/loadavg.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/loadavg.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/loadavg.c linux-4.9/fs/proc/loadavg.c
+--- linux-4.9/fs/proc/loadavg.c        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/proc/loadavg.c        2021-02-24 15:47:45.084409345 +0100
 @@ -12,15 +12,27 @@
  
  static int loadavg_proc_show(struct seq_file *m, void *v)
@@ -6013,9 +6004,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/loadavg.c linux-4.9.76-vs2.3.9.5/fs/p
                task_active_pid_ns(current)->last_pid);
        return 0;
  }
-diff -NurpP --minimal linux-4.9.76/fs/proc/meminfo.c linux-4.9.76-vs2.3.9.5/fs/proc/meminfo.c
---- linux-4.9.76/fs/proc/meminfo.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/meminfo.c   2018-01-13 01:55:40.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/meminfo.c linux-4.9/fs/proc/meminfo.c
+--- linux-4.9/fs/proc/meminfo.c        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/proc/meminfo.c        2021-02-24 15:47:45.084409345 +0100
 @@ -55,7 +55,8 @@ static int meminfo_proc_show(struct seq_
        si_swapinfo(&i);
        committed = percpu_counter_read_positive(&vm_committed_as);
@@ -6026,9 +6017,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/meminfo.c linux-4.9.76-vs2.3.9.5/fs/p
                        total_swapcache_pages() - i.bufferram;
        if (cached < 0)
                cached = 0;
-diff -NurpP --minimal linux-4.9.76/fs/proc/root.c linux-4.9.76-vs2.3.9.5/fs/proc/root.c
---- linux-4.9.76/fs/proc/root.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/root.c      2018-01-13 01:48:57.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/root.c linux-4.9/fs/proc/root.c
+--- linux-4.9/fs/proc/root.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/proc/root.c   2021-02-24 15:47:45.084409345 +0100
 @@ -20,9 +20,14 @@
  #include <linux/mount.h>
  #include <linux/pid_namespace.h>
@@ -6060,9 +6051,9 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/root.c linux-4.9.76-vs2.3.9.5/fs/proc
        .subdir         = RB_ROOT,
        .name           = "/proc",
  };
-diff -NurpP --minimal linux-4.9.76/fs/proc/self.c linux-4.9.76-vs2.3.9.5/fs/proc/self.c
---- linux-4.9.76/fs/proc/self.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/self.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/self.c linux-4.9/fs/proc/self.c
+--- linux-4.9/fs/proc/self.c   2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/self.c   2021-02-24 15:47:45.084409345 +0100
 @@ -1,6 +1,7 @@
  #include <linux/sched.h>
  #include <linux/slab.h>
@@ -6071,18 +6062,18 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/self.c linux-4.9.76-vs2.3.9.5/fs/proc
  #include "internal.h"
  
  /*
-@@ -54,6 +55,8 @@ int proc_setup_self(struct super_block *
+@@ -61,6 +62,8 @@ int proc_setup_self(struct super_block *
        self = d_alloc_name(s->s_root, "self");
        if (self) {
-               struct inode *inode = new_inode_pseudo(s);
+               struct inode *inode = new_inode(s);
 +
 +              // self->vx_flags = IATTR_PROC_SYMLINK;
                if (inode) {
                        inode->i_ino = self_inum;
                        inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
-diff -NurpP --minimal linux-4.9.76/fs/proc/stat.c linux-4.9.76-vs2.3.9.5/fs/proc/stat.c
---- linux-4.9.76/fs/proc/stat.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/stat.c      2018-01-13 01:47:09.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/stat.c linux-4.9/fs/proc/stat.c
+--- linux-4.9/fs/proc/stat.c   2021-02-24 15:47:32.324010153 +0100
++++ linux-4.9/fs/proc/stat.c   2021-02-24 15:47:45.084409345 +0100
 @@ -9,8 +9,10 @@
  #include <linux/slab.h>
  #include <linux/time.h>
@@ -6094,7 +6085,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/stat.c linux-4.9.76-vs2.3.9.5/fs/proc
  
  #ifndef arch_irq_stat_cpu
  #define arch_irq_stat_cpu(cpu) 0
-@@ -86,13 +88,24 @@ static int show_stat(struct seq_file *p,
+@@ -86,13 +88,21 @@ static int show_stat(struct seq_file *p,
        u64 sum_softirq = 0;
        unsigned int per_softirq_sums[NR_SOFTIRQS] = {0};
        struct timespec64 boottime;
@@ -6106,9 +6097,6 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/stat.c linux-4.9.76-vs2.3.9.5/fs/proc
        guest = guest_nice = 0;
        getboottime64(&boottime);
  
-+      if (vx_flags(VXF_VIRT_UPTIME, 0))
-+              vx_vsi_boottime(&boottime);
-+
 +      if (virt_cpu)
 +              cpuset_cpus_allowed(current, cpus_allowed);
 +
@@ -6119,7 +6107,7 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/stat.c linux-4.9.76-vs2.3.9.5/fs/proc
                user += kcpustat_cpu(i).cpustat[CPUTIME_USER];
                nice += kcpustat_cpu(i).cpustat[CPUTIME_NICE];
                system += kcpustat_cpu(i).cpustat[CPUTIME_SYSTEM];
-@@ -128,6 +141,9 @@ static int show_stat(struct seq_file *p,
+@@ -128,6 +138,9 @@ static int show_stat(struct seq_file *p,
        seq_putc(p, '\n');
  
        for_each_online_cpu(i) {
@@ -6129,31 +6117,28 @@ diff -NurpP --minimal linux-4.9.76/fs/proc/stat.c linux-4.9.76-vs2.3.9.5/fs/proc
                /* Copy values here to work around gcc-2.95.3, gcc-2.96 */
                user = kcpustat_cpu(i).cpustat[CPUTIME_USER];
                nice = kcpustat_cpu(i).cpustat[CPUTIME_NICE];
-diff -NurpP --minimal linux-4.9.76/fs/proc/uptime.c linux-4.9.76-vs2.3.9.5/fs/proc/uptime.c
---- linux-4.9.76/fs/proc/uptime.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc/uptime.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc/uptime.c linux-4.9/fs/proc/uptime.c
+--- linux-4.9/fs/proc/uptime.c 2021-02-24 15:47:32.327343590 +0100
++++ linux-4.9/fs/proc/uptime.c 2021-02-24 15:47:45.084409345 +0100
 @@ -5,6 +5,7 @@
  #include <linux/seq_file.h>
  #include <linux/time.h>
  #include <linux/kernel_stat.h>
 +#include <linux/vserver/cvirt.h>
- #include <linux/cputime.h>
  
  static int uptime_proc_show(struct seq_file *m, void *v)
-@@ -24,6 +25,10 @@ static int uptime_proc_show(struct seq_f
-       nsec = cputime64_to_jiffies64(idletime) * TICK_NSEC;
+ {
+@@ -21,6 +22,7 @@ static int uptime_proc_show(struct seq_f
+       get_monotonic_boottime(&uptime);
        idle.tv_sec = div_u64_rem(nsec, NSEC_PER_SEC, &rem);
        idle.tv_nsec = rem;
-+
-+      if (vx_flags(VXF_VIRT_UPTIME, 0))
-+              vx_vsi_uptime(&uptime, &idle);
 +
        seq_printf(m, "%lu.%02lu %lu.%02lu\n",
                        (unsigned long) uptime.tv_sec,
                        (uptime.tv_nsec / (NSEC_PER_SEC / 100)),
-diff -NurpP --minimal linux-4.9.76/fs/proc_namespace.c linux-4.9.76-vs2.3.9.5/fs/proc_namespace.c
---- linux-4.9.76/fs/proc_namespace.c   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/proc_namespace.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/proc_namespace.c linux-4.9/fs/proc_namespace.c
+--- linux-4.9/fs/proc_namespace.c      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/proc_namespace.c      2021-02-24 15:47:45.084409345 +0100
 @@ -46,6 +46,8 @@ static int show_sb_opts(struct seq_file
                { MS_DIRSYNC, ",dirsync" },
                { MS_MANDLOCK, ",mand" },
@@ -6267,10 +6252,10 @@ diff -NurpP --minimal linux-4.9.76/fs/proc_namespace.c linux-4.9.76-vs2.3.9.5/fs
        /* file system type */
        seq_puts(m, "with fstype ");
        show_type(m, sb);
-diff -NurpP --minimal linux-4.9.76/fs/quota/dquot.c linux-4.9.76-vs2.3.9.5/fs/quota/dquot.c
---- linux-4.9.76/fs/quota/dquot.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/quota/dquot.c    2018-01-10 02:50:49.000000000 +0000
-@@ -1658,6 +1658,9 @@ int __dquot_alloc_space(struct inode *in
+diff -urNp -x '*.orig' linux-4.9/fs/quota/dquot.c linux-4.9/fs/quota/dquot.c
+--- linux-4.9/fs/quota/dquot.c 2021-02-24 15:47:32.327343590 +0100
++++ linux-4.9/fs/quota/dquot.c 2021-02-24 15:47:45.084409345 +0100
+@@ -1659,6 +1659,9 @@ int __dquot_alloc_space(struct inode *in
        int reserve = flags & DQUOT_SPACE_RESERVE;
        struct dquot **dquots;
  
@@ -6280,7 +6265,7 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/dquot.c linux-4.9.76-vs2.3.9.5/fs/qu
        if (!dquot_active(inode)) {
                inode_incr_space(inode, number, reserve);
                goto out;
-@@ -1710,6 +1713,9 @@ int dquot_alloc_inode(struct inode *inod
+@@ -1711,6 +1714,9 @@ int dquot_alloc_inode(struct inode *inod
        struct dquot_warn warn[MAXQUOTAS];
        struct dquot * const *dquots;
  
@@ -6290,7 +6275,7 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/dquot.c linux-4.9.76-vs2.3.9.5/fs/qu
        if (!dquot_active(inode))
                return 0;
        for (cnt = 0; cnt < MAXQUOTAS; cnt++)
-@@ -1812,6 +1818,8 @@ void __dquot_free_space(struct inode *in
+@@ -1813,6 +1819,8 @@ void __dquot_free_space(struct inode *in
        struct dquot **dquots;
        int reserve = flags & DQUOT_SPACE_RESERVE, index;
  
@@ -6299,7 +6284,7 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/dquot.c linux-4.9.76-vs2.3.9.5/fs/qu
        if (!dquot_active(inode)) {
                inode_decr_space(inode, number, reserve);
                return;
-@@ -1856,6 +1864,8 @@ void dquot_free_inode(struct inode *inod
+@@ -1857,6 +1865,8 @@ void dquot_free_inode(struct inode *inod
        struct dquot * const *dquots;
        int index;
  
@@ -6308,9 +6293,9 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/dquot.c linux-4.9.76-vs2.3.9.5/fs/qu
        if (!dquot_active(inode))
                return;
  
-diff -NurpP --minimal linux-4.9.76/fs/quota/quota.c linux-4.9.76-vs2.3.9.5/fs/quota/quota.c
---- linux-4.9.76/fs/quota/quota.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/quota/quota.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/quota/quota.c linux-4.9/fs/quota/quota.c
+--- linux-4.9/fs/quota/quota.c 2021-02-24 15:47:32.327343590 +0100
++++ linux-4.9/fs/quota/quota.c 2021-02-24 15:47:45.084409345 +0100
 @@ -8,6 +8,7 @@
  #include <linux/fs.h>
  #include <linux/namei.h>
@@ -6319,7 +6304,7 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/quota.c linux-4.9.76-vs2.3.9.5/fs/qu
  #include <asm/current.h>
  #include <linux/uaccess.h>
  #include <linux/kernel.h>
-@@ -38,7 +39,7 @@ static int check_quotactl_permission(str
+@@ -39,7 +40,7 @@ static int check_quotactl_permission(str
                        break;
                /*FALLTHROUGH*/
        default:
@@ -6328,7 +6313,7 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/quota.c linux-4.9.76-vs2.3.9.5/fs/qu
                        return -EPERM;
        }
  
-@@ -768,6 +769,46 @@ static int do_quotactl(struct super_bloc
+@@ -770,6 +771,46 @@ static int do_quotactl(struct super_bloc
  
  #ifdef CONFIG_BLOCK
  
@@ -6375,7 +6360,7 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/quota.c linux-4.9.76-vs2.3.9.5/fs/qu
  /* Return 1 if 'cmd' will block on frozen filesystem */
  static int quotactl_cmd_write(int cmd)
  {
-@@ -809,6 +850,22 @@ static struct super_block *quotactl_bloc
+@@ -811,6 +852,22 @@ static struct super_block *quotactl_bloc
        putname(tmp);
        if (IS_ERR(bdev))
                return ERR_CAST(bdev);
@@ -6398,9 +6383,9 @@ diff -NurpP --minimal linux-4.9.76/fs/quota/quota.c linux-4.9.76-vs2.3.9.5/fs/qu
        if (quotactl_cmd_write(cmd))
                sb = get_super_thawed(bdev);
        else
-diff -NurpP --minimal linux-4.9.76/fs/stat.c linux-4.9.76-vs2.3.9.5/fs/stat.c
---- linux-4.9.76/fs/stat.c     2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/stat.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/stat.c linux-4.9/fs/stat.c
+--- linux-4.9/fs/stat.c        2021-02-24 15:47:32.334010466 +0100
++++ linux-4.9/fs/stat.c        2021-02-24 15:47:45.084409345 +0100
 @@ -26,6 +26,7 @@ void generic_fillattr(struct inode *inod
        stat->nlink = inode->i_nlink;
        stat->uid = inode->i_uid;
@@ -6409,9 +6394,9 @@ diff -NurpP --minimal linux-4.9.76/fs/stat.c linux-4.9.76-vs2.3.9.5/fs/stat.c
        stat->rdev = inode->i_rdev;
        stat->size = i_size_read(inode);
        stat->atime = inode->i_atime;
-diff -NurpP --minimal linux-4.9.76/fs/statfs.c linux-4.9.76-vs2.3.9.5/fs/statfs.c
---- linux-4.9.76/fs/statfs.c   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/statfs.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/statfs.c linux-4.9/fs/statfs.c
+--- linux-4.9/fs/statfs.c      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/statfs.c      2021-02-24 15:47:45.084409345 +0100
 @@ -7,6 +7,8 @@
  #include <linux/statfs.h>
  #include <linux/security.h>
@@ -6430,9 +6415,9 @@ diff -NurpP --minimal linux-4.9.76/fs/statfs.c linux-4.9.76-vs2.3.9.5/fs/statfs.
        return retval;
  }
  
-diff -NurpP --minimal linux-4.9.76/fs/super.c linux-4.9.76-vs2.3.9.5/fs/super.c
---- linux-4.9.76/fs/super.c    2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/super.c  2018-01-13 01:53:26.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/super.c linux-4.9/fs/super.c
+--- linux-4.9/fs/super.c       2021-02-24 15:47:32.334010466 +0100
++++ linux-4.9/fs/super.c       2021-02-24 15:47:45.084409345 +0100
 @@ -34,6 +34,8 @@
  #include <linux/fsnotify.h>
  #include <linux/lockdep.h>
@@ -6442,7 +6427,26 @@ diff -NurpP --minimal linux-4.9.76/fs/super.c linux-4.9.76-vs2.3.9.5/fs/super.c
  #include "internal.h"
  
  
-@@ -981,7 +983,8 @@ struct dentry *mount_ns(struct file_syst
+@@ -482,7 +484,7 @@ struct super_block *sget_userns(struct f
+       if (!(flags & (MS_KERNMOUNT|MS_SUBMOUNT)) &&
+           !(type->fs_flags & FS_USERNS_MOUNT) &&
+-          !capable(CAP_SYS_ADMIN))
++          !vx_capable(CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+               return ERR_PTR(-EPERM);
+ retry:
+       spin_lock(&sb_lock);
+@@ -563,7 +565,8 @@ struct super_block *sget(struct file_sys
+               user_ns = &init_user_ns;
+       /* Ensure the requestor has permissions over the target filesystem */
+-      if (!(flags & (MS_KERNMOUNT|MS_SUBMOUNT)) && !ns_capable(user_ns, CAP_SYS_ADMIN))
++      if (!(flags & (MS_KERNMOUNT|MS_SUBMOUNT)) &&
++          !vx_ns_capable(user_ns, CAP_SYS_ADMIN, VXC_SECURE_MOUNT))
+               return ERR_PTR(-EPERM);
+       return sget_userns(type, test, set, flags, user_ns, data);
+@@ -995,7 +998,8 @@ struct dentry *mount_ns(struct file_syst
        /* Don't allow mounting unless the caller has CAP_SYS_ADMIN
         * over the namespace.
         */
@@ -6452,8 +6456,8 @@ diff -NurpP --minimal linux-4.9.76/fs/super.c linux-4.9.76-vs2.3.9.5/fs/super.c
                return ERR_PTR(-EPERM);
  
        sb = sget_userns(fs_type, ns_test_super, ns_set_super, flags,
-@@ -1191,6 +1194,13 @@ mount_fs(struct file_system_type *type,
-       WARN_ON(!sb->s_bdi);
+@@ -1213,6 +1217,13 @@ mount_fs(struct file_system_type *type,
+       smp_wmb();
        sb->s_flags |= MS_BORN;
  
 +      error = -EPERM;
@@ -6466,9 +6470,9 @@ diff -NurpP --minimal linux-4.9.76/fs/super.c linux-4.9.76-vs2.3.9.5/fs/super.c
        error = security_sb_kern_mount(sb, flags, secdata);
        if (error)
                goto out_sb;
-diff -NurpP --minimal linux-4.9.76/fs/utimes.c linux-4.9.76-vs2.3.9.5/fs/utimes.c
---- linux-4.9.76/fs/utimes.c   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/utimes.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/utimes.c linux-4.9/fs/utimes.c
+--- linux-4.9/fs/utimes.c      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/fs/utimes.c      2021-02-24 15:47:45.084409345 +0100
 @@ -8,6 +8,8 @@
  #include <linux/stat.h>
  #include <linux/utime.h>
@@ -6499,9 +6503,9 @@ diff -NurpP --minimal linux-4.9.76/fs/utimes.c linux-4.9.76-vs2.3.9.5/fs/utimes.
        if (times && times[0].tv_nsec == UTIME_NOW &&
                     times[1].tv_nsec == UTIME_NOW)
                times = NULL;
-diff -NurpP --minimal linux-4.9.76/fs/xattr.c linux-4.9.76-vs2.3.9.5/fs/xattr.c
---- linux-4.9.76/fs/xattr.c    2018-01-13 21:28:58.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/fs/xattr.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/fs/xattr.c linux-4.9/fs/xattr.c
+--- linux-4.9/fs/xattr.c       2021-02-24 15:47:32.340677341 +0100
++++ linux-4.9/fs/xattr.c       2021-02-24 15:47:45.084409345 +0100
 @@ -21,6 +21,7 @@
  #include <linux/audit.h>
  #include <linux/vmalloc.h>
@@ -6519,9 +6523,9 @@ diff -NurpP --minimal linux-4.9.76/fs/xattr.c linux-4.9.76-vs2.3.9.5/fs/xattr.c
                        return (mask & MAY_WRITE) ? -EPERM : -ENODATA;
                return 0;
        }
-diff -NurpP --minimal linux-4.9.76/include/linux/capability.h linux-4.9.76-vs2.3.9.5/include/linux/capability.h
---- linux-4.9.76/include/linux/capability.h    2018-01-13 21:28:59.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/capability.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/capability.h linux-4.9/include/linux/capability.h
+--- linux-4.9/include/linux/capability.h       2021-02-24 15:47:32.377345154 +0100
++++ linux-4.9/include/linux/capability.h       2021-02-24 15:47:45.084409345 +0100
 @@ -78,7 +78,8 @@ extern const kernel_cap_t __cap_init_eff
  #else /* HAND-CODED capability initializers */
  
@@ -6532,10 +6536,10 @@ diff -NurpP --minimal linux-4.9.76/include/linux/capability.h linux-4.9.76-vs2.3
  
  # define CAP_EMPTY_SET    ((kernel_cap_t){{ 0, 0 }})
  # define CAP_FULL_SET     ((kernel_cap_t){{ ~0, CAP_LAST_U32_VALID_MASK }})
-diff -NurpP --minimal linux-4.9.76/include/linux/cred.h linux-4.9.76-vs2.3.9.5/include/linux/cred.h
---- linux-4.9.76/include/linux/cred.h  2018-01-13 21:28:59.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/cred.h        2018-01-13 21:30:31.000000000 +0000
-@@ -152,6 +152,7 @@ extern void exit_creds(struct task_struc
+diff -urNp -x '*.orig' linux-4.9/include/linux/cred.h linux-4.9/include/linux/cred.h
+--- linux-4.9/include/linux/cred.h     2021-02-24 15:47:32.380678592 +0100
++++ linux-4.9/include/linux/cred.h     2021-02-24 15:47:45.087742783 +0100
+@@ -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 *);
  extern struct cred *cred_alloc_blank(void);
@@ -6543,7 +6547,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/cred.h linux-4.9.76-vs2.3.9.5/i
  extern struct cred *prepare_creds(void);
  extern struct cred *prepare_exec_creds(void);
  extern int commit_creds(struct cred *);
-@@ -212,6 +213,31 @@ static inline bool cap_ambient_invariant
+@@ -216,6 +217,31 @@ static inline bool cap_ambient_invariant
                                          cred->cap_inheritable));
  }
  
@@ -6575,10 +6579,10 @@ diff -NurpP --minimal linux-4.9.76/include/linux/cred.h linux-4.9.76-vs2.3.9.5/i
  /**
   * get_new_cred - Get a reference on a new set of credentials
   * @cred: The new credentials to reference
-diff -NurpP --minimal linux-4.9.76/include/linux/dcache.h linux-4.9.76-vs2.3.9.5/include/linux/dcache.h
---- linux-4.9.76/include/linux/dcache.h        2018-01-13 21:28:59.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/dcache.h      2018-01-10 02:50:49.000000000 +0000
-@@ -307,8 +307,10 @@ extern char *dentry_path(struct dentry *
+diff -urNp -x '*.orig' linux-4.9/include/linux/dcache.h linux-4.9/include/linux/dcache.h
+--- linux-4.9/include/linux/dcache.h   2021-02-24 15:47:32.380678592 +0100
++++ linux-4.9/include/linux/dcache.h   2021-02-24 15:47:45.087742783 +0100
+@@ -308,8 +308,10 @@ extern char *dentry_path(struct dentry *
   */
  static inline struct dentry *dget_dlock(struct dentry *dentry)
  {
@@ -6590,19 +6594,19 @@ diff -NurpP --minimal linux-4.9.76/include/linux/dcache.h linux-4.9.76-vs2.3.9.5
        return dentry;
  }
  
-diff -NurpP --minimal linux-4.9.76/include/linux/devpts_fs.h linux-4.9.76-vs2.3.9.5/include/linux/devpts_fs.h
---- linux-4.9.76/include/linux/devpts_fs.h     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/devpts_fs.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/devpts_fs.h linux-4.9/include/linux/devpts_fs.h
+--- linux-4.9/include/linux/devpts_fs.h        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/devpts_fs.h        2021-02-24 15:47:45.087742783 +0100
 @@ -34,5 +34,4 @@ void devpts_pty_kill(struct dentry *);
  
  #endif
  
 -
  #endif /* _LINUX_DEVPTS_FS_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/include/linux/fs.h
---- linux-4.9.76/include/linux/fs.h    2018-01-13 21:28:59.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/fs.h  2018-01-13 22:18:13.000000000 +0000
-@@ -225,6 +225,7 @@ typedef int (dio_iodone_t)(struct kiocb
+diff -urNp -x '*.orig' linux-4.9/include/linux/fs.h linux-4.9/include/linux/fs.h
+--- linux-4.9/include/linux/fs.h       2021-02-24 15:47:32.384012030 +0100
++++ linux-4.9/include/linux/fs.h       2021-02-24 15:47:45.087742783 +0100
+@@ -231,6 +231,7 @@ typedef int (dio_iodone_t)(struct kiocb
  #define ATTR_OPEN     (1 << 15) /* Truncating from open(O_TRUNC) */
  #define ATTR_TIMES_SET        (1 << 16)
  #define ATTR_TOUCH    (1 << 17)
@@ -6610,7 +6614,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  
  /*
   * Whiteout is represented by a char device.  The following constants define the
-@@ -247,6 +248,7 @@ struct iattr {
+@@ -253,6 +254,7 @@ struct iattr {
        umode_t         ia_mode;
        kuid_t          ia_uid;
        kgid_t          ia_gid;
@@ -6618,7 +6622,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
        loff_t          ia_size;
        struct timespec ia_atime;
        struct timespec ia_mtime;
-@@ -606,7 +608,9 @@ struct inode {
+@@ -612,7 +614,9 @@ struct inode {
        unsigned short          i_opflags;
        kuid_t                  i_uid;
        kgid_t                  i_gid;
@@ -6629,7 +6633,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  
  #ifdef CONFIG_FS_POSIX_ACL
        struct posix_acl        *i_acl;
-@@ -635,6 +639,7 @@ struct inode {
+@@ -641,6 +645,7 @@ struct inode {
                unsigned int __i_nlink;
        };
        dev_t                   i_rdev;
@@ -6637,7 +6641,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
        loff_t                  i_size;
        struct timespec         i_atime;
        struct timespec         i_mtime;
-@@ -839,14 +844,19 @@ static inline void i_size_write(struct i
+@@ -846,14 +851,19 @@ static inline void i_size_write(struct i
  #endif
  }
  
@@ -6659,7 +6663,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  }
  
  extern struct block_device *I_BDEV(struct inode *inode);
-@@ -903,6 +913,7 @@ struct file {
+@@ -910,6 +920,7 @@ struct file {
        loff_t                  f_pos;
        struct fown_struct      f_owner;
        const struct cred       *f_cred;
@@ -6667,7 +6671,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
        struct file_ra_state    f_ra;
  
        u64                     f_version;
-@@ -1037,6 +1048,7 @@ struct file_lock {
+@@ -1044,6 +1055,7 @@ struct file_lock {
        struct file *fl_file;
        loff_t fl_start;
        loff_t fl_end;
@@ -6675,7 +6679,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  
        struct fasync_struct *  fl_fasync; /* for lease break notifications */
        /* for lease breaks: */
-@@ -1469,6 +1481,11 @@ static inline gid_t i_gid_read(const str
+@@ -1477,6 +1489,11 @@ static inline gid_t i_gid_read(const str
        return from_kgid(inode->i_sb->s_user_ns, inode->i_gid);
  }
  
@@ -6687,7 +6691,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  static inline void i_uid_write(struct inode *inode, uid_t uid)
  {
        inode->i_uid = make_kuid(inode->i_sb->s_user_ns, uid);
-@@ -1758,6 +1775,7 @@ struct inode_operations {
+@@ -1766,6 +1783,7 @@ struct inode_operations {
        int (*setattr) (struct dentry *, struct iattr *);
        int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
        ssize_t (*listxattr) (struct dentry *, char *, size_t);
@@ -6695,7 +6699,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
        int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
                      u64 len);
        int (*update_time)(struct inode *, struct timespec *, int);
-@@ -1772,6 +1790,7 @@ ssize_t rw_copy_check_uvector(int type,
+@@ -1780,6 +1798,7 @@ ssize_t rw_copy_check_uvector(int type,
                              unsigned long nr_segs, unsigned long fast_segs,
                              struct iovec *fast_pointer,
                              struct iovec **ret_pointer);
@@ -6703,7 +6707,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  
  extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
  extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *);
-@@ -1843,6 +1862,14 @@ struct super_operations {
+@@ -1851,6 +1870,14 @@ struct super_operations {
  #else
  #define S_DAX         0       /* Make all the DAX code disappear */
  #endif
@@ -6718,7 +6722,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  
  /*
   * Note that nosuid etc flags are inode-specific: setting some file-system
-@@ -1867,10 +1894,13 @@ struct super_operations {
+@@ -1875,10 +1902,13 @@ struct super_operations {
  #define IS_MANDLOCK(inode)    __IS_FLG(inode, MS_MANDLOCK)
  #define IS_NOATIME(inode)     __IS_FLG(inode, MS_RDONLY|MS_NOATIME)
  #define IS_I_VERSION(inode)   __IS_FLG(inode, MS_I_VERSION)
@@ -6732,7 +6736,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  #define IS_POSIXACL(inode)    __IS_FLG(inode, MS_POSIXACL)
  
  #define IS_DEADDIR(inode)     ((inode)->i_flags & S_DEAD)
-@@ -1890,6 +1920,16 @@ static inline bool HAS_UNMAPPED_ID(struc
+@@ -1898,6 +1928,16 @@ static inline bool HAS_UNMAPPED_ID(struc
        return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid);
  }
  
@@ -6749,7 +6753,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  /*
   * Inode state bits.  Protected by inode->i_lock
   *
-@@ -2155,6 +2195,9 @@ extern struct kobject *fs_kobj;
+@@ -2167,6 +2207,9 @@ extern struct kobject *fs_kobj;
  extern int locks_mandatory_locked(struct file *);
  extern int locks_mandatory_area(struct inode *, struct file *, loff_t, loff_t, unsigned char);
  
@@ -6759,7 +6763,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  /*
   * Candidates for mandatory locking have the setgid bit set
   * but no group execute bit -  an otherwise meaningless combination.
-@@ -2335,7 +2378,7 @@ struct filename {
+@@ -2347,7 +2390,7 @@ struct filename {
        const char              iname[];
  };
  
@@ -6768,7 +6772,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,
                       struct file *filp);
  extern int vfs_fallocate(struct file *file, int mode, loff_t offset,
-@@ -2965,6 +3008,7 @@ extern int dcache_dir_open(struct inode
+@@ -2978,6 +3021,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 *, struct dir_context *);
@@ -6776,9 +6780,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/fs.h linux-4.9.76-vs2.3.9.5/inc
  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-4.9.76/include/linux/init_task.h linux-4.9.76-vs2.3.9.5/include/linux/init_task.h
---- linux-4.9.76/include/linux/init_task.h     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/init_task.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/init_task.h linux-4.9/include/linux/init_task.h
+--- linux-4.9/include/linux/init_task.h        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/init_task.h        2021-02-24 15:47:45.087742783 +0100
 @@ -271,6 +271,10 @@ extern struct task_group root_task_group
        INIT_VTIME(tsk)                                                 \
        INIT_NUMA_BALANCING(tsk)                                        \
@@ -6790,9 +6794,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/init_task.h linux-4.9.76-vs2.3.
  }
  
  
-diff -NurpP --minimal linux-4.9.76/include/linux/ipc.h linux-4.9.76-vs2.3.9.5/include/linux/ipc.h
---- linux-4.9.76/include/linux/ipc.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/ipc.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/ipc.h linux-4.9/include/linux/ipc.h
+--- linux-4.9/include/linux/ipc.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/ipc.h      2021-02-24 15:47:45.087742783 +0100
 @@ -16,6 +16,7 @@ struct kern_ipc_perm
        key_t           key;
        kuid_t          uid;
@@ -6801,9 +6805,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/ipc.h linux-4.9.76-vs2.3.9.5/in
        kuid_t          cuid;
        kgid_t          cgid;
        umode_t         mode; 
-diff -NurpP --minimal linux-4.9.76/include/linux/memcontrol.h linux-4.9.76-vs2.3.9.5/include/linux/memcontrol.h
---- linux-4.9.76/include/linux/memcontrol.h    2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/memcontrol.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/memcontrol.h linux-4.9/include/linux/memcontrol.h
+--- linux-4.9/include/linux/memcontrol.h       2021-02-24 15:47:32.397345780 +0100
++++ linux-4.9/include/linux/memcontrol.h       2021-02-24 15:47:45.087742783 +0100
 @@ -92,6 +92,7 @@ enum mem_cgroup_events_target {
        MEM_CGROUP_NTARGETS,
  };
@@ -6812,21 +6816,22 @@ diff -NurpP --minimal linux-4.9.76/include/linux/memcontrol.h linux-4.9.76-vs2.3
  #ifdef CONFIG_MEMCG
  
  #define MEM_CGROUP_ID_SHIFT   16
-@@ -402,6 +403,11 @@ static inline bool mem_cgroup_is_descend
+@@ -402,6 +403,12 @@ static inline bool mem_cgroup_is_descend
        return cgroup_is_descendant(memcg->css.cgroup, root->css.cgroup);
  }
  
-+extern u64 mem_cgroup_mem_usage_pages(struct mem_cgroup *memcg);
-+extern u64 mem_cgroup_mem_limit_pages(struct mem_cgroup *memcg);
-+extern u64 mem_cgroup_memsw_usage_pages(struct mem_cgroup *memcg);
-+extern u64 mem_cgroup_memsw_limit_pages(struct mem_cgroup *memcg);
++extern unsigned long mem_cgroup_mem_usage_pages(struct mem_cgroup *memcg);
++extern unsigned long mem_cgroup_mem_limit_pages(struct mem_cgroup *memcg);
++extern unsigned long mem_cgroup_memsw_usage_pages(struct mem_cgroup *memcg);
++extern unsigned long mem_cgroup_memsw_limit_pages(struct mem_cgroup *memcg);
++extern void dump_mem_cgroup(struct mem_cgroup *memcg);
 +
  static inline bool mm_match_cgroup(struct mm_struct *mm,
                                   struct mem_cgroup *memcg)
  {
-diff -NurpP --minimal linux-4.9.76/include/linux/mount.h linux-4.9.76-vs2.3.9.5/include/linux/mount.h
---- linux-4.9.76/include/linux/mount.h 2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/mount.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/mount.h linux-4.9/include/linux/mount.h
+--- linux-4.9/include/linux/mount.h    2021-02-24 15:47:32.400679218 +0100
++++ linux-4.9/include/linux/mount.h    2021-02-24 15:47:45.087742783 +0100
 @@ -63,6 +63,9 @@ struct mnt_namespace;
  #define MNT_MARKED            0x4000000
  #define MNT_UMOUNT            0x8000000
@@ -6837,9 +6842,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/mount.h linux-4.9.76-vs2.3.9.5/
  struct vfsmount {
        struct dentry *mnt_root;        /* root of the mounted tree */
        struct super_block *mnt_sb;     /* pointer to superblock */
-diff -NurpP --minimal linux-4.9.76/include/linux/net.h linux-4.9.76-vs2.3.9.5/include/linux/net.h
---- linux-4.9.76/include/linux/net.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/net.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/net.h linux-4.9/include/linux/net.h
+--- linux-4.9/include/linux/net.h      2021-02-24 15:47:32.400679218 +0100
++++ linux-4.9/include/linux/net.h      2021-02-24 15:47:45.091076220 +0100
 @@ -44,6 +44,7 @@ struct net;
  #define SOCK_NOSPACE          2
  #define SOCK_PASSCRED         3
@@ -6848,10 +6853,10 @@ diff -NurpP --minimal linux-4.9.76/include/linux/net.h linux-4.9.76-vs2.3.9.5/in
  
  #ifndef ARCH_HAS_SOCKET_TYPES
  /**
-diff -NurpP --minimal linux-4.9.76/include/linux/netdevice.h linux-4.9.76-vs2.3.9.5/include/linux/netdevice.h
---- linux-4.9.76/include/linux/netdevice.h     2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/netdevice.h   2018-01-10 02:50:49.000000000 +0000
-@@ -2474,6 +2474,7 @@ static inline int dev_recursion_level(vo
+diff -urNp -x '*.orig' linux-4.9/include/linux/netdevice.h linux-4.9/include/linux/netdevice.h
+--- linux-4.9/include/linux/netdevice.h        2021-02-24 15:47:33.074033615 +0100
++++ linux-4.9/include/linux/netdevice.h        2021-02-24 15:47:45.087742783 +0100
+@@ -2489,6 +2489,7 @@ static inline int dev_recursion_level(vo
  
  struct net_device *dev_get_by_index(struct net *net, int ifindex);
  struct net_device *__dev_get_by_index(struct net *net, int ifindex);
@@ -6859,9 +6864,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/netdevice.h linux-4.9.76-vs2.3.
  struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);
  int netdev_get_name(struct net *net, char *name, int ifindex);
  int dev_restart(struct net_device *dev);
-diff -NurpP --minimal linux-4.9.76/include/linux/nsproxy.h linux-4.9.76-vs2.3.9.5/include/linux/nsproxy.h
---- linux-4.9.76/include/linux/nsproxy.h       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/nsproxy.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/nsproxy.h linux-4.9/include/linux/nsproxy.h
+--- linux-4.9/include/linux/nsproxy.h  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/nsproxy.h  2021-02-24 15:47:45.091076220 +0100
 @@ -3,6 +3,7 @@
  
  #include <linux/spinlock.h>
@@ -6911,9 +6916,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/nsproxy.h linux-4.9.76-vs2.3.9.
  }
  
  #endif
-diff -NurpP --minimal linux-4.9.76/include/linux/pid.h linux-4.9.76-vs2.3.9.5/include/linux/pid.h
---- linux-4.9.76/include/linux/pid.h   2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/pid.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/pid.h linux-4.9/include/linux/pid.h
+--- linux-4.9/include/linux/pid.h      2021-02-24 15:47:32.407346093 +0100
++++ linux-4.9/include/linux/pid.h      2021-02-24 15:47:45.091076220 +0100
 @@ -10,7 +10,8 @@ enum pid_type
        PIDTYPE_SID,
        PIDTYPE_MAX,
@@ -6932,9 +6937,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/pid.h linux-4.9.76-vs2.3.9.5/in
  pid_t pid_vnr(struct pid *pid);
  
  #define do_each_pid_task(pid, type, task)                             \
-diff -NurpP --minimal linux-4.9.76/include/linux/quotaops.h linux-4.9.76-vs2.3.9.5/include/linux/quotaops.h
---- linux-4.9.76/include/linux/quotaops.h      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/quotaops.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/quotaops.h linux-4.9/include/linux/quotaops.h
+--- linux-4.9/include/linux/quotaops.h 2021-02-24 15:47:32.410679531 +0100
++++ linux-4.9/include/linux/quotaops.h 2021-02-24 15:47:45.091076220 +0100
 @@ -8,6 +8,7 @@
  #define _LINUX_QUOTAOPS_
  
@@ -6943,7 +6948,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/quotaops.h linux-4.9.76-vs2.3.9
  
  #define DQUOT_SPACE_WARN      0x1
  #define DQUOT_SPACE_RESERVE   0x2
-@@ -214,11 +215,12 @@ static inline void dquot_drop(struct ino
+@@ -224,11 +225,12 @@ static inline void dquot_drop(struct ino
  
  static inline int dquot_alloc_inode(struct inode *inode)
  {
@@ -6957,7 +6962,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/quotaops.h linux-4.9.76-vs2.3.9
  }
  
  static inline int dquot_transfer(struct inode *inode, struct iattr *iattr)
-@@ -229,6 +231,10 @@ static inline int dquot_transfer(struct
+@@ -239,6 +241,10 @@ static inline int dquot_transfer(struct
  static inline int __dquot_alloc_space(struct inode *inode, qsize_t number,
                int flags)
  {
@@ -6968,7 +6973,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/quotaops.h linux-4.9.76-vs2.3.9
        if (!(flags & DQUOT_SPACE_RESERVE))
                inode_add_bytes(inode, number);
        return 0;
-@@ -239,6 +245,7 @@ static inline void __dquot_free_space(st
+@@ -249,6 +255,7 @@ static inline void __dquot_free_space(st
  {
        if (!(flags & DQUOT_SPACE_RESERVE))
                inode_sub_bytes(inode, number);
@@ -6976,10 +6981,10 @@ diff -NurpP --minimal linux-4.9.76/include/linux/quotaops.h linux-4.9.76-vs2.3.9
  }
  
  static inline int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
-diff -NurpP --minimal linux-4.9.76/include/linux/sched.h linux-4.9.76-vs2.3.9.5/include/linux/sched.h
---- linux-4.9.76/include/linux/sched.h 2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/sched.h       2018-01-10 02:50:49.000000000 +0000
-@@ -1717,6 +1717,14 @@ struct task_struct {
+diff -urNp -x '*.orig' linux-4.9/include/linux/sched.h linux-4.9/include/linux/sched.h
+--- linux-4.9/include/linux/sched.h    2021-02-24 15:47:32.414012968 +0100
++++ linux-4.9/include/linux/sched.h    2021-02-24 15:47:45.091076220 +0100
+@@ -1719,6 +1719,14 @@ struct task_struct {
  #endif
        struct seccomp seccomp;
  
@@ -6992,9 +6997,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/sched.h linux-4.9.76-vs2.3.9.5/
 +      vtag_t tag;
 +
  /* Thread group tracking */
-       u32 parent_exec_id;
-       u32 self_exec_id;
-@@ -2110,6 +2118,11 @@ struct pid_namespace;
+       u64 parent_exec_id;
+       u64 self_exec_id;
+@@ -2114,6 +2122,11 @@ struct pid_namespace;
  pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
                        struct pid_namespace *ns);
  
@@ -7006,7 +7011,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/sched.h linux-4.9.76-vs2.3.9.5/
  static inline pid_t task_pid_nr(struct task_struct *tsk)
  {
        return tsk->pid;
-@@ -2123,7 +2136,8 @@ static inline pid_t task_pid_nr_ns(struc
+@@ -2127,7 +2140,8 @@ static inline pid_t task_pid_nr_ns(struc
  
  static inline pid_t task_pid_vnr(struct task_struct *tsk)
  {
@@ -7016,9 +7021,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/sched.h linux-4.9.76-vs2.3.9.5/
  }
  
  
-diff -NurpP --minimal linux-4.9.76/include/linux/shmem_fs.h linux-4.9.76-vs2.3.9.5/include/linux/shmem_fs.h
---- linux-4.9.76/include/linux/shmem_fs.h      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/shmem_fs.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/shmem_fs.h linux-4.9/include/linux/shmem_fs.h
+--- linux-4.9/include/linux/shmem_fs.h 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/shmem_fs.h 2021-02-24 15:47:45.091076220 +0100
 @@ -10,6 +10,9 @@
  
  /* inode in-kernel data */
@@ -7029,9 +7034,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/shmem_fs.h linux-4.9.76-vs2.3.9
  struct shmem_inode_info {
        spinlock_t              lock;
        unsigned int            seals;          /* shmem seals */
-diff -NurpP --minimal linux-4.9.76/include/linux/stat.h linux-4.9.76-vs2.3.9.5/include/linux/stat.h
---- linux-4.9.76/include/linux/stat.h  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/stat.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/stat.h linux-4.9/include/linux/stat.h
+--- linux-4.9/include/linux/stat.h     2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/stat.h     2021-02-24 15:47:45.091076220 +0100
 @@ -25,6 +25,7 @@ struct kstat {
        unsigned int    nlink;
        kuid_t          uid;
@@ -7040,9 +7045,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/stat.h linux-4.9.76-vs2.3.9.5/i
        dev_t           rdev;
        loff_t          size;
        struct timespec  atime;
-diff -NurpP --minimal linux-4.9.76/include/linux/sunrpc/auth.h linux-4.9.76-vs2.3.9.5/include/linux/sunrpc/auth.h
---- linux-4.9.76/include/linux/sunrpc/auth.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/sunrpc/auth.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/sunrpc/auth.h linux-4.9/include/linux/sunrpc/auth.h
+--- linux-4.9/include/linux/sunrpc/auth.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/sunrpc/auth.h      2021-02-24 15:47:45.091076220 +0100
 @@ -46,6 +46,7 @@ enum {
  struct auth_cred {
        kuid_t  uid;
@@ -7051,9 +7056,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/sunrpc/auth.h linux-4.9.76-vs2.
        struct group_info *group_info;
        const char *principal;
        unsigned long ac_flags;
-diff -NurpP --minimal linux-4.9.76/include/linux/sunrpc/clnt.h linux-4.9.76-vs2.3.9.5/include/linux/sunrpc/clnt.h
---- linux-4.9.76/include/linux/sunrpc/clnt.h   2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/sunrpc/clnt.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/sunrpc/clnt.h linux-4.9/include/linux/sunrpc/clnt.h
+--- linux-4.9/include/linux/sunrpc/clnt.h      2021-02-24 15:47:32.417346405 +0100
++++ linux-4.9/include/linux/sunrpc/clnt.h      2021-02-24 15:47:45.091076220 +0100
 @@ -52,7 +52,8 @@ struct rpc_clnt {
                                cl_discrtry : 1,/* disconnect before retry */
                                cl_noretranstimeo: 1,/* No retransmit timeouts */
@@ -7064,9 +7069,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/sunrpc/clnt.h linux-4.9.76-vs2.
  
        struct rpc_rtt *        cl_rtt;         /* RTO estimator data */
        const struct rpc_timeout *cl_timeout;   /* Timeout strategy */
-diff -NurpP --minimal linux-4.9.76/include/linux/types.h linux-4.9.76-vs2.3.9.5/include/linux/types.h
---- linux-4.9.76/include/linux/types.h 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/types.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/types.h linux-4.9/include/linux/types.h
+--- linux-4.9/include/linux/types.h    2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/types.h    2021-02-24 15:47:45.091076220 +0100
 @@ -32,6 +32,9 @@ typedef __kernel_uid32_t     uid_t;
  typedef __kernel_gid32_t      gid_t;
  typedef __kernel_uid16_t        uid16_t;
@@ -7077,9 +7082,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/types.h linux-4.9.76-vs2.3.9.5/
  
  typedef unsigned long         uintptr_t;
  
-diff -NurpP --minimal linux-4.9.76/include/linux/uidgid.h linux-4.9.76-vs2.3.9.5/include/linux/uidgid.h
---- linux-4.9.76/include/linux/uidgid.h        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/uidgid.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/uidgid.h linux-4.9/include/linux/uidgid.h
+--- linux-4.9/include/linux/uidgid.h   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/linux/uidgid.h   2021-02-24 15:47:45.091076220 +0100
 @@ -21,13 +21,17 @@ typedef struct {
        uid_t val;
  } kuid_t;
@@ -7176,9 +7181,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/uidgid.h linux-4.9.76-vs2.3.9.5
  static inline uid_t from_kuid_munged(struct user_namespace *to, kuid_t kuid)
  {
        uid_t uid = from_kuid(to, kuid);
-diff -NurpP --minimal linux-4.9.76/include/linux/vroot.h linux-4.9.76-vs2.3.9.5/include/linux/vroot.h
---- linux-4.9.76/include/linux/vroot.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vroot.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vroot.h linux-4.9/include/linux/vroot.h
+--- linux-4.9/include/linux/vroot.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vroot.h    2021-02-24 15:47:45.091076220 +0100
 @@ -0,0 +1,51 @@
 +
 +/*
@@ -7231,9 +7236,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vroot.h linux-4.9.76-vs2.3.9.5/
 +#define VROOT_CLR_DEV         0x5601
 +
 +#endif /* _LINUX_VROOT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_base.h linux-4.9.76-vs2.3.9.5/include/linux/vs_base.h
---- linux-4.9.76/include/linux/vs_base.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_base.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_base.h linux-4.9/include/linux/vs_base.h
+--- linux-4.9/include/linux/vs_base.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_base.h  2021-02-24 15:47:45.091076220 +0100
 @@ -0,0 +1,10 @@
 +#ifndef _VS_BASE_H
 +#define _VS_BASE_H
@@ -7245,9 +7250,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_base.h linux-4.9.76-vs2.3.9.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_context.h linux-4.9.76-vs2.3.9.5/include/linux/vs_context.h
---- linux-4.9.76/include/linux/vs_context.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_context.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_context.h linux-4.9/include/linux/vs_context.h
+--- linux-4.9/include/linux/vs_context.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_context.h       2021-02-24 15:47:45.091076220 +0100
 @@ -0,0 +1,242 @@
 +#ifndef _VS_CONTEXT_H
 +#define _VS_CONTEXT_H
@@ -7491,9 +7496,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_context.h linux-4.9.76-vs2.3
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_cowbl.h linux-4.9.76-vs2.3.9.5/include/linux/vs_cowbl.h
---- linux-4.9.76/include/linux/vs_cowbl.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_cowbl.h    2018-01-13 22:17:14.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_cowbl.h linux-4.9/include/linux/vs_cowbl.h
+--- linux-4.9/include/linux/vs_cowbl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_cowbl.h 2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,48 @@
 +#ifndef _VS_COWBL_H
 +#define _VS_COWBL_H
@@ -7543,9 +7548,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_cowbl.h linux-4.9.76-vs2.3.9
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_cvirt.h linux-4.9.76-vs2.3.9.5/include/linux/vs_cvirt.h
---- linux-4.9.76/include/linux/vs_cvirt.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_cvirt.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_cvirt.h linux-4.9/include/linux/vs_cvirt.h
+--- linux-4.9/include/linux/vs_cvirt.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_cvirt.h 2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,50 @@
 +#ifndef _VS_CVIRT_H
 +#define _VS_CVIRT_H
@@ -7597,9 +7602,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_cvirt.h linux-4.9.76-vs2.3.9
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_device.h linux-4.9.76-vs2.3.9.5/include/linux/vs_device.h
---- linux-4.9.76/include/linux/vs_device.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_device.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_device.h linux-4.9/include/linux/vs_device.h
+--- linux-4.9/include/linux/vs_device.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_device.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,45 @@
 +#ifndef _VS_DEVICE_H
 +#define _VS_DEVICE_H
@@ -7646,9 +7651,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_device.h linux-4.9.76-vs2.3.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_dlimit.h linux-4.9.76-vs2.3.9.5/include/linux/vs_dlimit.h
---- linux-4.9.76/include/linux/vs_dlimit.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_dlimit.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_dlimit.h linux-4.9/include/linux/vs_dlimit.h
+--- linux-4.9/include/linux/vs_dlimit.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_dlimit.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,215 @@
 +#ifndef _VS_DLIMIT_H
 +#define _VS_DLIMIT_H
@@ -7865,9 +7870,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_dlimit.h linux-4.9.76-vs2.3.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_inet.h linux-4.9.76-vs2.3.9.5/include/linux/vs_inet.h
---- linux-4.9.76/include/linux/vs_inet.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_inet.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_inet.h linux-4.9/include/linux/vs_inet.h
+--- linux-4.9/include/linux/vs_inet.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_inet.h  2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,364 @@
 +#ifndef _VS_INET_H
 +#define _VS_INET_H
@@ -8233,10 +8238,10 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_inet.h linux-4.9.76-vs2.3.9.
 +#else
 +// #warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_inet6.h linux-4.9.76-vs2.3.9.5/include/linux/vs_inet6.h
---- linux-4.9.76/include/linux/vs_inet6.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_inet6.h    2018-01-10 02:50:49.000000000 +0000
-@@ -0,0 +1,257 @@
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_inet6.h linux-4.9/include/linux/vs_inet6.h
+--- linux-4.9/include/linux/vs_inet6.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_inet6.h 2021-02-24 15:47:45.097743096 +0100
+@@ -0,0 +1,264 @@
 +#ifndef _VS_INET6_H
 +#define _VS_INET6_H
 +
@@ -8486,6 +8491,13 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_inet6.h linux-4.9.76-vs2.3.9
 +      return 0;
 +}
 +
++static inline
++int v6_addr_in_nx_info(struct nx_info *nxi,
++      const struct in6_addr *addr, uint16_t mask)
++{
++      return 0;
++}
++
 +#endif /* CONFIG_IPV6 */
 +
 +#define current_nx_info_has_v6() \
@@ -8494,9 +8506,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_inet6.h linux-4.9.76-vs2.3.9
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_limit.h linux-4.9.76-vs2.3.9.5/include/linux/vs_limit.h
---- linux-4.9.76/include/linux/vs_limit.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_limit.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_limit.h linux-4.9/include/linux/vs_limit.h
+--- linux-4.9/include/linux/vs_limit.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_limit.h 2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,140 @@
 +#ifndef _VS_LIMIT_H
 +#define _VS_LIMIT_H
@@ -8638,9 +8650,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_limit.h linux-4.9.76-vs2.3.9
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_network.h linux-4.9.76-vs2.3.9.5/include/linux/vs_network.h
---- linux-4.9.76/include/linux/vs_network.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_network.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_network.h linux-4.9/include/linux/vs_network.h
+--- linux-4.9/include/linux/vs_network.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_network.h       2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,169 @@
 +#ifndef _NX_VS_NETWORK_H
 +#define _NX_VS_NETWORK_H
@@ -8811,9 +8823,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_network.h linux-4.9.76-vs2.3
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_pid.h linux-4.9.76-vs2.3.9.5/include/linux/vs_pid.h
---- linux-4.9.76/include/linux/vs_pid.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_pid.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_pid.h linux-4.9/include/linux/vs_pid.h
+--- linux-4.9/include/linux/vs_pid.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_pid.h   2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,50 @@
 +#ifndef _VS_PID_H
 +#define _VS_PID_H
@@ -8865,9 +8877,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_pid.h linux-4.9.76-vs2.3.9.5
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_sched.h linux-4.9.76-vs2.3.9.5/include/linux/vs_sched.h
---- linux-4.9.76/include/linux/vs_sched.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_sched.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_sched.h linux-4.9/include/linux/vs_sched.h
+--- linux-4.9/include/linux/vs_sched.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_sched.h 2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,40 @@
 +#ifndef _VS_SCHED_H
 +#define _VS_SCHED_H
@@ -8909,9 +8921,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_sched.h linux-4.9.76-vs2.3.9
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_socket.h linux-4.9.76-vs2.3.9.5/include/linux/vs_socket.h
---- linux-4.9.76/include/linux/vs_socket.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_socket.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_socket.h linux-4.9/include/linux/vs_socket.h
+--- linux-4.9/include/linux/vs_socket.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_socket.h        2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,67 @@
 +#ifndef _VS_SOCKET_H
 +#define _VS_SOCKET_H
@@ -8980,9 +8992,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_socket.h linux-4.9.76-vs2.3.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_tag.h linux-4.9.76-vs2.3.9.5/include/linux/vs_tag.h
---- linux-4.9.76/include/linux/vs_tag.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_tag.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_tag.h linux-4.9/include/linux/vs_tag.h
+--- linux-4.9/include/linux/vs_tag.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_tag.h   2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,47 @@
 +#ifndef _VS_TAG_H
 +#define _VS_TAG_H
@@ -9031,9 +9043,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_tag.h linux-4.9.76-vs2.3.9.5
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vs_time.h linux-4.9.76-vs2.3.9.5/include/linux/vs_time.h
---- linux-4.9.76/include/linux/vs_time.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vs_time.h     2018-01-10 09:27:12.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vs_time.h linux-4.9/include/linux/vs_time.h
+--- linux-4.9/include/linux/vs_time.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vs_time.h  2021-02-24 15:47:45.101076533 +0100
 @@ -0,0 +1,21 @@
 +#ifndef _VS_TIME_H
 +#define _VS_TIME_H
@@ -9045,7 +9057,7 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_time.h linux-4.9.76-vs2.3.9.
 +
 +extern void vx_adjust_timespec(struct timespec *ts);
 +extern int vx_settimeofday(const struct timespec *ts);
-+extern int vx_settimeofday64(const struct timespec *ts);
++extern int vx_settimeofday64(const struct timespec64 *ts);
 +
 +#else
 +#define       vx_adjust_timespec(t)   do { } while (0)
@@ -9056,9 +9068,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vs_time.h linux-4.9.76-vs2.3.9.
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/base.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/base.h
---- linux-4.9.76/include/linux/vserver/base.h  1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/base.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/base.h linux-4.9/include/linux/vserver/base.h
+--- linux-4.9/include/linux/vserver/base.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/base.h     2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,184 @@
 +#ifndef _VSERVER_BASE_H
 +#define _VSERVER_BASE_H
@@ -9244,9 +9256,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/base.h linux-4.9.76-vs2
 +#define nx_info_state(n, m)   (__nx_state(n) & (m))
 +
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct.h
---- linux-4.9.76/include/linux/vserver/cacct.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cacct.h linux-4.9/include/linux/vserver/cacct.h
+--- linux-4.9/include/linux/vserver/cacct.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cacct.h    2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,15 @@
 +#ifndef _VSERVER_CACCT_H
 +#define _VSERVER_CACCT_H
@@ -9263,9 +9275,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct.h linux-4.9.76-vs
 +};
 +
 +#endif        /* _VSERVER_CACCT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct_cmd.h
---- linux-4.9.76/include/linux/vserver/cacct_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cacct_cmd.h linux-4.9/include/linux/vserver/cacct_cmd.h
+--- linux-4.9/include/linux/vserver/cacct_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cacct_cmd.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,10 @@
 +#ifndef _VSERVER_CACCT_CMD_H
 +#define _VSERVER_CACCT_CMD_H
@@ -9277,9 +9289,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct_cmd.h linux-4.9.7
 +extern int vc_sock_stat(struct vx_info *, void __user *);
 +
 +#endif        /* _VSERVER_CACCT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct_def.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct_def.h
---- linux-4.9.76/include/linux/vserver/cacct_def.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct_def.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cacct_def.h linux-4.9/include/linux/vserver/cacct_def.h
+--- linux-4.9/include/linux/vserver/cacct_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cacct_def.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,43 @@
 +#ifndef _VSERVER_CACCT_DEF_H
 +#define _VSERVER_CACCT_DEF_H
@@ -9324,9 +9336,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct_def.h linux-4.9.7
 +#endif
 +
 +#endif        /* _VSERVER_CACCT_DEF_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct_int.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct_int.h
---- linux-4.9.76/include/linux/vserver/cacct_int.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cacct_int.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cacct_int.h linux-4.9/include/linux/vserver/cacct_int.h
+--- linux-4.9/include/linux/vserver/cacct_int.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cacct_int.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,17 @@
 +#ifndef _VSERVER_CACCT_INT_H
 +#define _VSERVER_CACCT_INT_H
@@ -9345,9 +9357,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cacct_int.h linux-4.9.7
 +}
 +
 +#endif        /* _VSERVER_CACCT_INT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/check.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/check.h
---- linux-4.9.76/include/linux/vserver/check.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/check.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/check.h linux-4.9/include/linux/vserver/check.h
+--- linux-4.9/include/linux/vserver/check.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/check.h    2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,89 @@
 +#ifndef _VSERVER_CHECK_H
 +#define _VSERVER_CHECK_H
@@ -9438,9 +9450,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/check.h linux-4.9.76-vs
 +#define nx_weak_check(c, m)   ((m) ? nx_check(c, m) : 1)
 +
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/context.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/context.h
---- linux-4.9.76/include/linux/vserver/context.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/context.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/context.h linux-4.9/include/linux/vserver/context.h
+--- linux-4.9/include/linux/vserver/context.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/context.h  2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,110 @@
 +#ifndef _VSERVER_CONTEXT_H
 +#define _VSERVER_CONTEXT_H
@@ -9552,9 +9564,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/context.h linux-4.9.76-
 +
 +
 +#endif        /* _VSERVER_CONTEXT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/context_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/context_cmd.h
---- linux-4.9.76/include/linux/vserver/context_cmd.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/context_cmd.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/context_cmd.h linux-4.9/include/linux/vserver/context_cmd.h
+--- linux-4.9/include/linux/vserver/context_cmd.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/context_cmd.h      2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,33 @@
 +#ifndef _VSERVER_CONTEXT_CMD_H
 +#define _VSERVER_CONTEXT_CMD_H
@@ -9589,20 +9601,13 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/context_cmd.h linux-4.9
 +extern int vc_set_badness(struct vx_info *, void __user *);
 +
 +#endif        /* _VSERVER_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cvirt.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cvirt.h
---- linux-4.9.76/include/linux/vserver/cvirt.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cvirt.h       2018-01-10 02:50:49.000000000 +0000
-@@ -0,0 +1,18 @@
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cvirt.h linux-4.9/include/linux/vserver/cvirt.h
+--- linux-4.9/include/linux/vserver/cvirt.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cvirt.h    2021-02-24 15:47:45.094409658 +0100
+@@ -0,0 +1,11 @@
 +#ifndef _VSERVER_CVIRT_H
 +#define _VSERVER_CVIRT_H
 +
-+struct timespec;
-+
-+void vx_vsi_boottime(struct timespec *);
-+
-+void vx_vsi_uptime(struct timespec *, struct timespec *);
-+
-+
 +struct vx_info;
 +
 +void vx_update_load(struct vx_info *);
@@ -9611,9 +9616,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cvirt.h linux-4.9.76-vs
 +int vx_do_syslog(int, char __user *, int);
 +
 +#endif        /* _VSERVER_CVIRT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cvirt_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cvirt_cmd.h
---- linux-4.9.76/include/linux/vserver/cvirt_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cvirt_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cvirt_cmd.h linux-4.9/include/linux/vserver/cvirt_cmd.h
+--- linux-4.9/include/linux/vserver/cvirt_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cvirt_cmd.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,13 @@
 +#ifndef _VSERVER_CVIRT_CMD_H
 +#define _VSERVER_CVIRT_CMD_H
@@ -9628,9 +9633,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cvirt_cmd.h linux-4.9.7
 +extern int vc_virt_stat(struct vx_info *, void __user *);
 +
 +#endif        /* _VSERVER_CVIRT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cvirt_def.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/cvirt_def.h
---- linux-4.9.76/include/linux/vserver/cvirt_def.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/cvirt_def.h   2018-01-10 10:07:41.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/cvirt_def.h linux-4.9/include/linux/vserver/cvirt_def.h
+--- linux-4.9/include/linux/vserver/cvirt_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/cvirt_def.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,80 @@
 +#ifndef _VSERVER_CVIRT_DEF_H
 +#define _VSERVER_CVIRT_DEF_H
@@ -9712,9 +9717,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/cvirt_def.h linux-4.9.7
 +#endif
 +
 +#endif        /* _VSERVER_CVIRT_DEF_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/debug.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/debug.h
---- linux-4.9.76/include/linux/vserver/debug.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/debug.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/debug.h linux-4.9/include/linux/vserver/debug.h
+--- linux-4.9/include/linux/vserver/debug.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/debug.h    2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,146 @@
 +#ifndef _VSERVER_DEBUG_H
 +#define _VSERVER_DEBUG_H
@@ -9862,9 +9867,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/debug.h linux-4.9.76-vs
 +
 +
 +#endif /* _VSERVER_DEBUG_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/debug_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/debug_cmd.h
---- linux-4.9.76/include/linux/vserver/debug_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/debug_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/debug_cmd.h linux-4.9/include/linux/vserver/debug_cmd.h
+--- linux-4.9/include/linux/vserver/debug_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/debug_cmd.h        2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,37 @@
 +#ifndef _VSERVER_DEBUG_CMD_H
 +#define _VSERVER_DEBUG_CMD_H
@@ -9903,9 +9908,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/debug_cmd.h linux-4.9.7
 +#endif  /* CONFIG_COMPAT */
 +
 +#endif        /* _VSERVER_DEBUG_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/device.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/device.h
---- linux-4.9.76/include/linux/vserver/device.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/device.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/device.h linux-4.9/include/linux/vserver/device.h
+--- linux-4.9/include/linux/vserver/device.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/device.h   2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,9 @@
 +#ifndef _VSERVER_DEVICE_H
 +#define _VSERVER_DEVICE_H
@@ -9916,9 +9921,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/device.h linux-4.9.76-v
 +#else /* _VSERVER_DEVICE_H */
 +#warning duplicate inclusion
 +#endif        /* _VSERVER_DEVICE_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/device_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/device_cmd.h
---- linux-4.9.76/include/linux/vserver/device_cmd.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/device_cmd.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/device_cmd.h linux-4.9/include/linux/vserver/device_cmd.h
+--- linux-4.9/include/linux/vserver/device_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/device_cmd.h       2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,31 @@
 +#ifndef _VSERVER_DEVICE_CMD_H
 +#define _VSERVER_DEVICE_CMD_H
@@ -9951,9 +9956,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/device_cmd.h linux-4.9.
 +#endif        /* CONFIG_COMPAT */
 +
 +#endif        /* _VSERVER_DEVICE_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/device_def.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/device_def.h
---- linux-4.9.76/include/linux/vserver/device_def.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/device_def.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/device_def.h linux-4.9/include/linux/vserver/device_def.h
+--- linux-4.9/include/linux/vserver/device_def.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/device_def.h       2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,17 @@
 +#ifndef _VSERVER_DEVICE_DEF_H
 +#define _VSERVER_DEVICE_DEF_H
@@ -9972,9 +9977,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/device_def.h linux-4.9.
 +};
 +
 +#endif        /* _VSERVER_DEVICE_DEF_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/dlimit.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/dlimit.h
---- linux-4.9.76/include/linux/vserver/dlimit.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/dlimit.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/dlimit.h linux-4.9/include/linux/vserver/dlimit.h
+--- linux-4.9/include/linux/vserver/dlimit.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/dlimit.h   2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,54 @@
 +#ifndef _VSERVER_DLIMIT_H
 +#define _VSERVER_DLIMIT_H
@@ -10030,9 +10035,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/dlimit.h linux-4.9.76-v
 +#else /* _VSERVER_DLIMIT_H */
 +#warning duplicate inclusion
 +#endif        /* _VSERVER_DLIMIT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/dlimit_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/dlimit_cmd.h
---- linux-4.9.76/include/linux/vserver/dlimit_cmd.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/dlimit_cmd.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/dlimit_cmd.h linux-4.9/include/linux/vserver/dlimit_cmd.h
+--- linux-4.9/include/linux/vserver/dlimit_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/dlimit_cmd.h       2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,46 @@
 +#ifndef _VSERVER_DLIMIT_CMD_H
 +#define _VSERVER_DLIMIT_CMD_H
@@ -10080,9 +10085,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/dlimit_cmd.h linux-4.9.
 +#endif        /* CONFIG_COMPAT */
 +
 +#endif        /* _VSERVER_DLIMIT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/global.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/global.h
---- linux-4.9.76/include/linux/vserver/global.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/global.h      2018-01-13 03:51:55.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/global.h linux-4.9/include/linux/vserver/global.h
+--- linux-4.9/include/linux/vserver/global.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/global.h   2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,20 @@
 +#ifndef _VSERVER_GLOBAL_H
 +#define _VSERVER_GLOBAL_H
@@ -10104,9 +10109,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/global.h linux-4.9.76-v
 +
 +
 +#endif /* _VSERVER_GLOBAL_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/history.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/history.h
---- linux-4.9.76/include/linux/vserver/history.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/history.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/history.h linux-4.9/include/linux/vserver/history.h
+--- linux-4.9/include/linux/vserver/history.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/history.h  2021-02-24 15:47:45.094409658 +0100
 @@ -0,0 +1,197 @@
 +#ifndef _VSERVER_HISTORY_H
 +#define _VSERVER_HISTORY_H
@@ -10305,9 +10310,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/history.h linux-4.9.76-
 +#endif /* CONFIG_VSERVER_HISTORY */
 +
 +#endif /* _VSERVER_HISTORY_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/inode.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/inode.h
---- linux-4.9.76/include/linux/vserver/inode.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/inode.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/inode.h linux-4.9/include/linux/vserver/inode.h
+--- linux-4.9/include/linux/vserver/inode.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/inode.h    2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,19 @@
 +#ifndef _VSERVER_INODE_H
 +#define _VSERVER_INODE_H
@@ -10328,9 +10333,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/inode.h linux-4.9.76-vs
 +#else /* _VSERVER_INODE_H */
 +#warning duplicate inclusion
 +#endif        /* _VSERVER_INODE_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/inode_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/inode_cmd.h
---- linux-4.9.76/include/linux/vserver/inode_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/inode_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/inode_cmd.h linux-4.9/include/linux/vserver/inode_cmd.h
+--- linux-4.9/include/linux/vserver/inode_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/inode_cmd.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,36 @@
 +#ifndef _VSERVER_INODE_CMD_H
 +#define _VSERVER_INODE_CMD_H
@@ -10368,9 +10373,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/inode_cmd.h linux-4.9.7
 +#endif        /* CONFIG_COMPAT */
 +
 +#endif        /* _VSERVER_INODE_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit.h
---- linux-4.9.76/include/linux/vserver/limit.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/limit.h linux-4.9/include/linux/vserver/limit.h
+--- linux-4.9/include/linux/vserver/limit.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/limit.h    2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,67 @@
 +#ifndef _VSERVER_LIMIT_H
 +#define _VSERVER_LIMIT_H
@@ -10439,9 +10444,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit.h linux-4.9.76-vs
 +#define NUM_LIMITS    24
 +
 +#endif        /* _VSERVER_LIMIT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit_cmd.h
---- linux-4.9.76/include/linux/vserver/limit_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/limit_cmd.h linux-4.9/include/linux/vserver/limit_cmd.h
+--- linux-4.9/include/linux/vserver/limit_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/limit_cmd.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,35 @@
 +#ifndef _VSERVER_LIMIT_CMD_H
 +#define _VSERVER_LIMIT_CMD_H
@@ -10478,9 +10483,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit_cmd.h linux-4.9.7
 +#endif        /* CONFIG_IA32_EMULATION */
 +
 +#endif        /* _VSERVER_LIMIT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit_def.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit_def.h
---- linux-4.9.76/include/linux/vserver/limit_def.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit_def.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/limit_def.h linux-4.9/include/linux/vserver/limit_def.h
+--- linux-4.9/include/linux/vserver/limit_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/limit_def.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,47 @@
 +#ifndef _VSERVER_LIMIT_DEF_H
 +#define _VSERVER_LIMIT_DEF_H
@@ -10529,9 +10534,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit_def.h linux-4.9.7
 +#endif
 +
 +#endif        /* _VSERVER_LIMIT_DEF_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit_int.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit_int.h
---- linux-4.9.76/include/linux/vserver/limit_int.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/limit_int.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/limit_int.h linux-4.9/include/linux/vserver/limit_int.h
+--- linux-4.9/include/linux/vserver/limit_int.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/limit_int.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,193 @@
 +#ifndef _VSERVER_LIMIT_INT_H
 +#define _VSERVER_LIMIT_INT_H
@@ -10726,9 +10731,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/limit_int.h linux-4.9.7
 +
 +
 +#endif        /* _VSERVER_LIMIT_INT_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/monitor.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/monitor.h
---- linux-4.9.76/include/linux/vserver/monitor.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/monitor.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/monitor.h linux-4.9/include/linux/vserver/monitor.h
+--- linux-4.9/include/linux/vserver/monitor.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/monitor.h  2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,6 @@
 +#ifndef _VSERVER_MONITOR_H
 +#define _VSERVER_MONITOR_H
@@ -10736,9 +10741,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/monitor.h linux-4.9.76-
 +#include <uapi/vserver/monitor.h>
 +
 +#endif /* _VSERVER_MONITOR_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/network.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/network.h
---- linux-4.9.76/include/linux/vserver/network.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/network.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/network.h linux-4.9/include/linux/vserver/network.h
+--- linux-4.9/include/linux/vserver/network.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/network.h  2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,76 @@
 +#ifndef _VSERVER_NETWORK_H
 +#define _VSERVER_NETWORK_H
@@ -10816,9 +10821,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/network.h linux-4.9.76-
 +#endif
 +
 +#endif        /* _VSERVER_NETWORK_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/network_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/network_cmd.h
---- linux-4.9.76/include/linux/vserver/network_cmd.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/network_cmd.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/network_cmd.h linux-4.9/include/linux/vserver/network_cmd.h
+--- linux-4.9/include/linux/vserver/network_cmd.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/network_cmd.h      2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,37 @@
 +#ifndef _VSERVER_NETWORK_CMD_H
 +#define _VSERVER_NETWORK_CMD_H
@@ -10857,9 +10862,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/network_cmd.h linux-4.9
 +extern int vc_set_ncaps(struct nx_info *, void __user *);
 +
 +#endif        /* _VSERVER_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/percpu.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/percpu.h
---- linux-4.9.76/include/linux/vserver/percpu.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/percpu.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/percpu.h linux-4.9/include/linux/vserver/percpu.h
+--- linux-4.9/include/linux/vserver/percpu.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/percpu.h   2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,14 @@
 +#ifndef _VSERVER_PERCPU_H
 +#define _VSERVER_PERCPU_H
@@ -10875,9 +10880,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/percpu.h linux-4.9.76-v
 +#define       PERCPU_PERCTX   (sizeof(struct _vx_percpu))
 +
 +#endif        /* _VSERVER_PERCPU_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/pid.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/pid.h
---- linux-4.9.76/include/linux/vserver/pid.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/pid.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/pid.h linux-4.9/include/linux/vserver/pid.h
+--- linux-4.9/include/linux/vserver/pid.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/pid.h      2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,51 @@
 +#ifndef _VSERVER_PID_H
 +#define _VSERVER_PID_H
@@ -10930,9 +10935,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/pid.h linux-4.9.76-vs2.
 +}
 +
 +#endif
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/sched.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/sched.h
---- linux-4.9.76/include/linux/vserver/sched.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/sched.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/sched.h linux-4.9/include/linux/vserver/sched.h
+--- linux-4.9/include/linux/vserver/sched.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/sched.h    2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,23 @@
 +#ifndef _VSERVER_SCHED_H
 +#define _VSERVER_SCHED_H
@@ -10957,9 +10962,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/sched.h linux-4.9.76-vs
 +#else /* _VSERVER_SCHED_H */
 +#warning duplicate inclusion
 +#endif        /* _VSERVER_SCHED_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/sched_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/sched_cmd.h
---- linux-4.9.76/include/linux/vserver/sched_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/sched_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/sched_cmd.h linux-4.9/include/linux/vserver/sched_cmd.h
+--- linux-4.9/include/linux/vserver/sched_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/sched_cmd.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,11 @@
 +#ifndef _VSERVER_SCHED_CMD_H
 +#define _VSERVER_SCHED_CMD_H
@@ -10972,9 +10977,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/sched_cmd.h linux-4.9.7
 +extern int vc_get_prio_bias(struct vx_info *, void __user *);
 +
 +#endif        /* _VSERVER_SCHED_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/sched_def.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/sched_def.h
---- linux-4.9.76/include/linux/vserver/sched_def.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/sched_def.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/sched_def.h linux-4.9/include/linux/vserver/sched_def.h
+--- linux-4.9/include/linux/vserver/sched_def.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/sched_def.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,38 @@
 +#ifndef _VSERVER_SCHED_DEF_H
 +#define _VSERVER_SCHED_DEF_H
@@ -11014,9 +11019,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/sched_def.h linux-4.9.7
 +#endif
 +
 +#endif        /* _VSERVER_SCHED_DEF_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/signal.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/signal.h
---- linux-4.9.76/include/linux/vserver/signal.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/signal.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/signal.h linux-4.9/include/linux/vserver/signal.h
+--- linux-4.9/include/linux/vserver/signal.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/signal.h   2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,14 @@
 +#ifndef _VSERVER_SIGNAL_H
 +#define _VSERVER_SIGNAL_H
@@ -11032,9 +11037,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/signal.h linux-4.9.76-v
 +#else /* _VSERVER_SIGNAL_H */
 +#warning duplicate inclusion
 +#endif        /* _VSERVER_SIGNAL_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/signal_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/signal_cmd.h
---- linux-4.9.76/include/linux/vserver/signal_cmd.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/signal_cmd.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/signal_cmd.h linux-4.9/include/linux/vserver/signal_cmd.h
+--- linux-4.9/include/linux/vserver/signal_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/signal_cmd.h       2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,14 @@
 +#ifndef _VSERVER_SIGNAL_CMD_H
 +#define _VSERVER_SIGNAL_CMD_H
@@ -11050,9 +11055,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/signal_cmd.h linux-4.9.
 +extern int vc_set_pflags(uint32_t pid, void __user *);
 +
 +#endif        /* _VSERVER_SIGNAL_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/space.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/space.h
---- linux-4.9.76/include/linux/vserver/space.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/space.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/space.h linux-4.9/include/linux/vserver/space.h
+--- linux-4.9/include/linux/vserver/space.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/space.h    2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,12 @@
 +#ifndef _VSERVER_SPACE_H
 +#define _VSERVER_SPACE_H
@@ -11066,9 +11071,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/space.h linux-4.9.76-vs
 +#else /* _VSERVER_SPACE_H */
 +#warning duplicate inclusion
 +#endif        /* _VSERVER_SPACE_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/space_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/space_cmd.h
---- linux-4.9.76/include/linux/vserver/space_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/space_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/space_cmd.h linux-4.9/include/linux/vserver/space_cmd.h
+--- linux-4.9/include/linux/vserver/space_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/space_cmd.h        2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,13 @@
 +#ifndef _VSERVER_SPACE_CMD_H
 +#define _VSERVER_SPACE_CMD_H
@@ -11083,9 +11088,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/space_cmd.h linux-4.9.7
 +extern int vc_get_space_mask(void __user *, int);
 +
 +#endif        /* _VSERVER_SPACE_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/switch.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/switch.h
---- linux-4.9.76/include/linux/vserver/switch.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/switch.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/switch.h linux-4.9/include/linux/vserver/switch.h
+--- linux-4.9/include/linux/vserver/switch.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/switch.h   2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,8 @@
 +#ifndef _VSERVER_SWITCH_H
 +#define _VSERVER_SWITCH_H
@@ -11095,9 +11100,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/switch.h linux-4.9.76-v
 +#include <uapi/vserver/switch.h>
 +
 +#endif        /* _VSERVER_SWITCH_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/tag.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/tag.h
---- linux-4.9.76/include/linux/vserver/tag.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/tag.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/tag.h linux-4.9/include/linux/vserver/tag.h
+--- linux-4.9/include/linux/vserver/tag.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/tag.h      2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,160 @@
 +#ifndef _DX_TAG_H
 +#define _DX_TAG_H
@@ -11259,9 +11264,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/tag.h linux-4.9.76-vs2.
 +#endif
 +
 +#endif /* _DX_TAG_H */
-diff -NurpP --minimal linux-4.9.76/include/linux/vserver/tag_cmd.h linux-4.9.76-vs2.3.9.5/include/linux/vserver/tag_cmd.h
---- linux-4.9.76/include/linux/vserver/tag_cmd.h       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/linux/vserver/tag_cmd.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/linux/vserver/tag_cmd.h linux-4.9/include/linux/vserver/tag_cmd.h
+--- linux-4.9/include/linux/vserver/tag_cmd.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/linux/vserver/tag_cmd.h  2021-02-24 15:47:45.097743096 +0100
 @@ -0,0 +1,10 @@
 +#ifndef _VSERVER_TAG_CMD_H
 +#define _VSERVER_TAG_CMD_H
@@ -11273,9 +11278,9 @@ diff -NurpP --minimal linux-4.9.76/include/linux/vserver/tag_cmd.h linux-4.9.76-
 +extern int vc_tag_migrate(uint32_t);
 +
 +#endif        /* _VSERVER_TAG_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/net/addrconf.h linux-4.9.76-vs2.3.9.5/include/net/addrconf.h
---- linux-4.9.76/include/net/addrconf.h        2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/net/addrconf.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/net/addrconf.h linux-4.9/include/net/addrconf.h
+--- linux-4.9/include/net/addrconf.h   2021-02-24 15:47:32.424013281 +0100
++++ linux-4.9/include/net/addrconf.h   2021-02-24 15:47:45.101076533 +0100
 @@ -85,7 +85,7 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str
  
  int ipv6_dev_get_saddr(struct net *net, const struct net_device *dev,
@@ -11285,9 +11290,9 @@ diff -NurpP --minimal linux-4.9.76/include/net/addrconf.h linux-4.9.76-vs2.3.9.5
  int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
                      u32 banned_flags);
  int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
-diff -NurpP --minimal linux-4.9.76/include/net/af_unix.h linux-4.9.76-vs2.3.9.5/include/net/af_unix.h
---- linux-4.9.76/include/net/af_unix.h 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/net/af_unix.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/net/af_unix.h linux-4.9/include/net/af_unix.h
+--- linux-4.9/include/net/af_unix.h    2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/net/af_unix.h    2021-02-24 15:47:45.101076533 +0100
 @@ -4,6 +4,7 @@
  #include <linux/socket.h>
  #include <linux/un.h>
@@ -11296,10 +11301,10 @@ diff -NurpP --minimal linux-4.9.76/include/net/af_unix.h linux-4.9.76-vs2.3.9.5/
  #include <net/sock.h>
  
  void unix_inflight(struct user_struct *user, struct file *fp);
-diff -NurpP --minimal linux-4.9.76/include/net/inet_timewait_sock.h linux-4.9.76-vs2.3.9.5/include/net/inet_timewait_sock.h
---- linux-4.9.76/include/net/inet_timewait_sock.h      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/net/inet_timewait_sock.h    2018-01-10 02:50:49.000000000 +0000
-@@ -71,6 +71,10 @@ struct inet_timewait_sock {
+diff -urNp -x '*.orig' linux-4.9/include/net/inet_timewait_sock.h linux-4.9/include/net/inet_timewait_sock.h
+--- linux-4.9/include/net/inet_timewait_sock.h 2021-02-24 15:47:32.427346719 +0100
++++ linux-4.9/include/net/inet_timewait_sock.h 2021-02-24 15:47:45.101076533 +0100
+@@ -72,6 +72,10 @@ struct inet_timewait_sock {
  #define tw_num                        __tw_common.skc_num
  #define tw_cookie             __tw_common.skc_cookie
  #define tw_dr                 __tw_common.skc_tw_dr
@@ -11310,9 +11315,9 @@ diff -NurpP --minimal linux-4.9.76/include/net/inet_timewait_sock.h linux-4.9.76
  
        int                     tw_timeout;
        volatile unsigned char  tw_substate;
-diff -NurpP --minimal linux-4.9.76/include/net/ip6_route.h linux-4.9.76-vs2.3.9.5/include/net/ip6_route.h
---- linux-4.9.76/include/net/ip6_route.h       2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/net/ip6_route.h     2018-01-13 06:10:51.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/net/ip6_route.h linux-4.9/include/net/ip6_route.h
+--- linux-4.9/include/net/ip6_route.h  2021-02-24 15:47:32.427346719 +0100
++++ linux-4.9/include/net/ip6_route.h  2021-02-24 15:47:45.101076533 +0100
 @@ -26,6 +26,7 @@ struct route_info {
  #include <linux/ip.h>
  #include <linux/ipv6.h>
@@ -11344,10 +11349,10 @@ diff -NurpP --minimal linux-4.9.76/include/net/ip6_route.h linux-4.9.76-vs2.3.9.
  
        return err;
  }
-diff -NurpP --minimal linux-4.9.76/include/net/route.h linux-4.9.76-vs2.3.9.5/include/net/route.h
---- linux-4.9.76/include/net/route.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/net/route.h 2018-01-10 07:57:27.000000000 +0000
-@@ -225,6 +225,9 @@ static inline void ip_rt_put(struct rtab
+diff -urNp -x '*.orig' linux-4.9/include/net/route.h linux-4.9/include/net/route.h
+--- linux-4.9/include/net/route.h      2021-02-24 15:47:32.434013594 +0100
++++ linux-4.9/include/net/route.h      2021-02-24 15:47:45.101076533 +0100
+@@ -226,6 +226,9 @@ static inline void ip_rt_put(struct rtab
        dst_release(&rt->dst);
  }
  
@@ -11357,7 +11362,7 @@ diff -NurpP --minimal linux-4.9.76/include/net/route.h linux-4.9.76-vs2.3.9.5/in
  #define IPTOS_RT_MASK (IPTOS_TOS_MASK & ~3)
  
  extern const __u8 ip_tos2prio[16];
-@@ -272,6 +275,9 @@ static inline void ip_route_connect_init
+@@ -273,6 +276,9 @@ static inline void ip_route_connect_init
                           protocol, flow_flags, dst, src, dport, sport);
  }
  
@@ -11367,7 +11372,7 @@ diff -NurpP --minimal linux-4.9.76/include/net/route.h linux-4.9.76-vs2.3.9.5/in
  static inline struct rtable *ip_route_connect(struct flowi4 *fl4,
                                              __be32 dst, __be32 src, u32 tos,
                                              int oif, u8 protocol,
-@@ -280,11 +286,25 @@ static inline struct rtable *ip_route_co
+@@ -281,11 +287,25 @@ static inline struct rtable *ip_route_co
  {
        struct net *net = sock_net(sk);
        struct rtable *rt;
@@ -11394,9 +11399,9 @@ diff -NurpP --minimal linux-4.9.76/include/net/route.h linux-4.9.76-vs2.3.9.5/in
                rt = __ip_route_output_key(net, fl4);
                if (IS_ERR(rt))
                        return rt;
-diff -NurpP --minimal linux-4.9.76/include/net/sock.h linux-4.9.76-vs2.3.9.5/include/net/sock.h
---- linux-4.9.76/include/net/sock.h    2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/net/sock.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/net/sock.h linux-4.9/include/net/sock.h
+--- linux-4.9/include/net/sock.h       2021-02-24 15:47:32.434013594 +0100
++++ linux-4.9/include/net/sock.h       2021-02-24 15:47:45.101076533 +0100
 @@ -187,6 +187,10 @@ struct sock_common {
        struct in6_addr         skc_v6_daddr;
        struct in6_addr         skc_v6_rcv_saddr;
@@ -11408,7 +11413,7 @@ diff -NurpP --minimal linux-4.9.76/include/net/sock.h linux-4.9.76-vs2.3.9.5/inc
  
        atomic64_t              skc_cookie;
  
-@@ -336,8 +340,12 @@ struct sock {
+@@ -337,8 +341,12 @@ struct sock {
  #define sk_prot                       __sk_common.skc_prot
  #define sk_net                        __sk_common.skc_net
  #define sk_v6_daddr           __sk_common.skc_v6_daddr
@@ -11422,18 +11427,18 @@ diff -NurpP --minimal linux-4.9.76/include/net/sock.h linux-4.9.76-vs2.3.9.5/inc
  #define sk_incoming_cpu               __sk_common.skc_incoming_cpu
  #define sk_flags              __sk_common.skc_flags
  #define sk_rxhash             __sk_common.skc_rxhash
-diff -NurpP --minimal linux-4.9.76/include/uapi/Kbuild linux-4.9.76-vs2.3.9.5/include/uapi/Kbuild
---- linux-4.9.76/include/uapi/Kbuild   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/Kbuild 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/Kbuild linux-4.9/include/uapi/Kbuild
+--- linux-4.9/include/uapi/Kbuild      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/Kbuild      2021-02-24 15:47:45.101076533 +0100
 @@ -13,3 +13,4 @@ header-y += drm/
  header-y += xen/
  header-y += scsi/
  header-y += misc/
 +header-y += vserver/
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/btrfs_tree.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/btrfs_tree.h
---- linux-4.9.76/include/uapi/linux/btrfs_tree.h       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/btrfs_tree.h     2018-01-13 01:45:34.000000000 +0000
-@@ -563,11 +563,14 @@ struct btrfs_inode_item {
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/btrfs_tree.h linux-4.9/include/uapi/linux/btrfs_tree.h
+--- linux-4.9/include/uapi/linux/btrfs_tree.h  2021-02-24 15:47:32.444013907 +0100
++++ linux-4.9/include/uapi/linux/btrfs_tree.h  2021-02-24 15:47:45.101076533 +0100
+@@ -566,11 +566,14 @@ struct btrfs_inode_item {
        /* modification sequence number for NFS */
        __le64 sequence;
  
@@ -11449,9 +11454,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/btrfs_tree.h linux-4.9.76-
        struct btrfs_timespec atime;
        struct btrfs_timespec ctime;
        struct btrfs_timespec mtime;
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/capability.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/capability.h
---- linux-4.9.76/include/uapi/linux/capability.h       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/capability.h     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/capability.h linux-4.9/include/uapi/linux/capability.h
+--- linux-4.9/include/uapi/linux/capability.h  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/linux/capability.h  2021-02-24 15:47:45.101076533 +0100
 @@ -257,6 +257,7 @@ struct vfs_cap_data {
     arbitrary SCSI commands */
  /* Allow setting encryption key on loopback filesystem */
@@ -11474,9 +11479,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/capability.h linux-4.9.76-
  
  /*
   * Bit location of each capability (used by user-space library and kernel)
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/fs.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/fs.h
---- linux-4.9.76/include/uapi/linux/fs.h       2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/fs.h     2018-01-10 08:09:10.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/fs.h linux-4.9/include/uapi/linux/fs.h
+--- linux-4.9/include/uapi/linux/fs.h  2021-02-24 15:47:32.444013907 +0100
++++ linux-4.9/include/uapi/linux/fs.h  2021-02-24 15:47:45.101076533 +0100
 @@ -130,6 +130,9 @@ struct inodes_stat_t {
  #define MS_I_VERSION  (1<<23) /* Update inode I_version field */
  #define MS_STRICTATIME        (1<<24) /* Always perform atime updates */
@@ -11506,9 +11511,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/fs.h linux-4.9.76-vs2.3.9.
  
  #define SYNC_FILE_RANGE_WAIT_BEFORE   1
  #define SYNC_FILE_RANGE_WRITE         2
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/gfs2_ondisk.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/gfs2_ondisk.h
---- linux-4.9.76/include/uapi/linux/gfs2_ondisk.h      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/gfs2_ondisk.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/gfs2_ondisk.h linux-4.9/include/uapi/linux/gfs2_ondisk.h
+--- linux-4.9/include/uapi/linux/gfs2_ondisk.h 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/linux/gfs2_ondisk.h 2021-02-24 15:47:45.104409971 +0100
 @@ -225,6 +225,9 @@ enum {
        gfs2fl_Sync             = 8,
        gfs2fl_System           = 9,
@@ -11529,9 +11534,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/gfs2_ondisk.h linux-4.9.76
  #define GFS2_DIF_TRUNC_IN_PROG                0x20000000 /* New in gfs2 */
  #define GFS2_DIF_INHERIT_DIRECTIO     0x40000000 /* only in gfs1 */
  #define GFS2_DIF_INHERIT_JDATA                0x80000000
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/if_tun.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/if_tun.h
---- linux-4.9.76/include/uapi/linux/if_tun.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/if_tun.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/if_tun.h linux-4.9/include/uapi/linux/if_tun.h
+--- linux-4.9/include/uapi/linux/if_tun.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/linux/if_tun.h      2021-02-24 15:47:45.104409971 +0100
 @@ -56,6 +56,7 @@
   */
  #define TUNSETVNETBE _IOW('T', 222, int)
@@ -11540,9 +11545,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/if_tun.h linux-4.9.76-vs2.
  
  /* TUNSETIFF ifr flags */
  #define IFF_TUN               0x0001
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/major.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/major.h
---- linux-4.9.76/include/uapi/linux/major.h    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/major.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/major.h linux-4.9/include/uapi/linux/major.h
+--- linux-4.9/include/uapi/linux/major.h       2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/linux/major.h       2021-02-24 15:47:45.104409971 +0100
 @@ -15,6 +15,7 @@
  #define HD_MAJOR              IDE0_MAJOR
  #define PTY_SLAVE_MAJOR               3
@@ -11551,9 +11556,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/major.h linux-4.9.76-vs2.3
  #define TTYAUX_MAJOR          5
  #define LP_MAJOR              6
  #define VCS_MAJOR             7
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/nfs_mount.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/nfs_mount.h
---- linux-4.9.76/include/uapi/linux/nfs_mount.h        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/nfs_mount.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/nfs_mount.h linux-4.9/include/uapi/linux/nfs_mount.h
+--- linux-4.9/include/uapi/linux/nfs_mount.h   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/linux/nfs_mount.h   2021-02-24 15:47:45.104409971 +0100
 @@ -63,7 +63,8 @@ struct nfs_mount_data {
  #define NFS_MOUNT_SECFLAVOUR  0x2000  /* 5 non-text parsed mount data only */
  #define NFS_MOUNT_NORDIRPLUS  0x4000  /* 5 */
@@ -11564,9 +11569,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/nfs_mount.h linux-4.9.76-v
  
  /* The following are for internal use only */
  #define NFS_MOUNT_LOOKUP_CACHE_NONEG  0x10000
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/reboot.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/reboot.h
---- linux-4.9.76/include/uapi/linux/reboot.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/reboot.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/reboot.h linux-4.9/include/uapi/linux/reboot.h
+--- linux-4.9/include/uapi/linux/reboot.h      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/include/uapi/linux/reboot.h      2021-02-24 15:47:45.104409971 +0100
 @@ -33,7 +33,7 @@
  #define       LINUX_REBOOT_CMD_RESTART2       0xA1B2C3D4
  #define       LINUX_REBOOT_CMD_SW_SUSPEND     0xD000FCE2
@@ -11576,9 +11581,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/reboot.h linux-4.9.76-vs2.
  
  
  #endif /* _UAPI_LINUX_REBOOT_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/linux/sysctl.h linux-4.9.76-vs2.3.9.5/include/uapi/linux/sysctl.h
---- linux-4.9.76/include/uapi/linux/sysctl.h   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/linux/sysctl.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/linux/sysctl.h linux-4.9/include/uapi/linux/sysctl.h
+--- linux-4.9/include/uapi/linux/sysctl.h      2021-02-24 15:47:32.450680782 +0100
++++ linux-4.9/include/uapi/linux/sysctl.h      2021-02-24 15:47:45.104409971 +0100
 @@ -58,6 +58,7 @@ enum
        CTL_ABI=9,              /* Binary emulation */
        CTL_CPU=10,             /* CPU stuff (speed scaling, etc) */
@@ -11595,9 +11600,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/linux/sysctl.h linux-4.9.76-vs2.
  
        KERN_SPARC_REBOOT=21,   /* reboot command on Sparc */
        KERN_CTLALTDEL=22,      /* int: allow ctl-alt-del to reboot */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/Kbuild linux-4.9.76-vs2.3.9.5/include/uapi/vserver/Kbuild
---- linux-4.9.76/include/uapi/vserver/Kbuild   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/Kbuild 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/Kbuild linux-4.9/include/uapi/vserver/Kbuild
+--- linux-4.9/include/uapi/vserver/Kbuild      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/Kbuild      2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,9 @@
 +
 +header-y += context_cmd.h network_cmd.h space_cmd.h \
@@ -11608,9 +11613,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/Kbuild linux-4.9.76-vs2.
 +header-y += switch.h context.h network.h monitor.h \
 +      limit.h inode.h device.h
 +
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/cacct_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/cacct_cmd.h
---- linux-4.9.76/include/uapi/vserver/cacct_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/cacct_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/cacct_cmd.h linux-4.9/include/uapi/vserver/cacct_cmd.h
+--- linux-4.9/include/uapi/vserver/cacct_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/cacct_cmd.h 2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,15 @@
 +#ifndef _UAPI_VS_CACCT_CMD_H
 +#define _UAPI_VS_CACCT_CMD_H
@@ -11627,9 +11632,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/cacct_cmd.h linux-4.9.76
 +};
 +
 +#endif /* _UAPI_VS_CACCT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/context.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/context.h
---- linux-4.9.76/include/uapi/vserver/context.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/context.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/context.h linux-4.9/include/uapi/vserver/context.h
+--- linux-4.9/include/uapi/vserver/context.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/context.h   2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,81 @@
 +#ifndef _UAPI_VS_CONTEXT_H
 +#define _UAPI_VS_CONTEXT_H
@@ -11712,9 +11717,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/context.h linux-4.9.76-v
 +#define VXC_NAMESPACE         0x02000000
 +
 +#endif /* _UAPI_VS_CONTEXT_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/context_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/context_cmd.h
---- linux-4.9.76/include/uapi/vserver/context_cmd.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/context_cmd.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/context_cmd.h linux-4.9/include/uapi/vserver/context_cmd.h
+--- linux-4.9/include/uapi/vserver/context_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/context_cmd.h       2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,115 @@
 +#ifndef _UAPI_VS_CONTEXT_CMD_H
 +#define _UAPI_VS_CONTEXT_CMD_H
@@ -11831,9 +11836,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/context_cmd.h linux-4.9.
 +};
 +
 +#endif /* _UAPI_VS_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/cvirt_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/cvirt_cmd.h
---- linux-4.9.76/include/uapi/vserver/cvirt_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/cvirt_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/cvirt_cmd.h linux-4.9/include/uapi/vserver/cvirt_cmd.h
+--- linux-4.9/include/uapi/vserver/cvirt_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/cvirt_cmd.h 2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,41 @@
 +#ifndef _UAPI_VS_CVIRT_CMD_H
 +#define _UAPI_VS_CVIRT_CMD_H
@@ -11876,9 +11881,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/cvirt_cmd.h linux-4.9.76
 +};
 +
 +#endif /* _UAPI_VS_CVIRT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/debug_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/debug_cmd.h
---- linux-4.9.76/include/uapi/vserver/debug_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/debug_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/debug_cmd.h linux-4.9/include/uapi/vserver/debug_cmd.h
+--- linux-4.9/include/uapi/vserver/debug_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/debug_cmd.h 2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,24 @@
 +#ifndef _UAPI_VS_DEBUG_CMD_H
 +#define _UAPI_VS_DEBUG_CMD_H
@@ -11904,9 +11909,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/debug_cmd.h linux-4.9.76
 +};
 +
 +#endif /* _UAPI_VS_DEBUG_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/device.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/device.h
---- linux-4.9.76/include/uapi/vserver/device.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/device.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/device.h linux-4.9/include/uapi/vserver/device.h
+--- linux-4.9/include/uapi/vserver/device.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/device.h    2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,12 @@
 +#ifndef _UAPI_VS_DEVICE_H
 +#define _UAPI_VS_DEVICE_H
@@ -11920,9 +11925,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/device.h linux-4.9.76-vs
 +#define DATTR_MASK    0x00000013
 +
 +#endif        /* _UAPI_VS_DEVICE_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/device_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/device_cmd.h
---- linux-4.9.76/include/uapi/vserver/device_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/device_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/device_cmd.h linux-4.9/include/uapi/vserver/device_cmd.h
+--- linux-4.9/include/uapi/vserver/device_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/device_cmd.h        2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,16 @@
 +#ifndef _UAPI_VS_DEVICE_CMD_H
 +#define _UAPI_VS_DEVICE_CMD_H
@@ -11940,9 +11945,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/device_cmd.h linux-4.9.7
 +};
 +
 +#endif /* _UAPI_VS_DEVICE_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/dlimit_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/dlimit_cmd.h
---- linux-4.9.76/include/uapi/vserver/dlimit_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/dlimit_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/dlimit_cmd.h linux-4.9/include/uapi/vserver/dlimit_cmd.h
+--- linux-4.9/include/uapi/vserver/dlimit_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/dlimit_cmd.h        2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,67 @@
 +#ifndef _UAPI_VS_DLIMIT_CMD_H
 +#define _UAPI_VS_DLIMIT_CMD_H
@@ -12011,9 +12016,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/dlimit_cmd.h linux-4.9.7
 +}
 +
 +#endif /* _UAPI_VS_DLIMIT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/inode.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/inode.h
---- linux-4.9.76/include/uapi/vserver/inode.h  1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/inode.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/inode.h linux-4.9/include/uapi/vserver/inode.h
+--- linux-4.9/include/uapi/vserver/inode.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/inode.h     2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,23 @@
 +#ifndef _UAPI_VS_INODE_H
 +#define _UAPI_VS_INODE_H
@@ -12038,9 +12043,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/inode.h linux-4.9.76-vs2
 +#define FIOC_SETXFLG  _IOW('x', 6, long)
 +
 +#endif        /* _UAPI_VS_INODE_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/inode_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/inode_cmd.h
---- linux-4.9.76/include/uapi/vserver/inode_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/inode_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/inode_cmd.h linux-4.9/include/uapi/vserver/inode_cmd.h
+--- linux-4.9/include/uapi/vserver/inode_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/inode_cmd.h 2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,26 @@
 +#ifndef _UAPI_VS_INODE_CMD_H
 +#define _UAPI_VS_INODE_CMD_H
@@ -12068,9 +12073,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/inode_cmd.h linux-4.9.76
 +};
 +
 +#endif /* _UAPI_VS_INODE_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/limit.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/limit.h
---- linux-4.9.76/include/uapi/vserver/limit.h  1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/limit.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/limit.h linux-4.9/include/uapi/vserver/limit.h
+--- linux-4.9/include/uapi/vserver/limit.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/limit.h     2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,14 @@
 +#ifndef _UAPI_VS_LIMIT_H
 +#define _UAPI_VS_LIMIT_H
@@ -12086,9 +12091,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/limit.h linux-4.9.76-vs2
 +#define VLIMIT_MAPPED 23
 +
 +#endif /* _UAPI_VS_LIMIT_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/limit_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/limit_cmd.h
---- linux-4.9.76/include/uapi/vserver/limit_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/limit_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/limit_cmd.h linux-4.9/include/uapi/vserver/limit_cmd.h
+--- linux-4.9/include/uapi/vserver/limit_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/limit_cmd.h 2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,40 @@
 +#ifndef _UAPI_VS_LIMIT_CMD_H
 +#define _UAPI_VS_LIMIT_CMD_H
@@ -12130,9 +12135,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/limit_cmd.h linux-4.9.76
 +#define CRLIM_KEEP            (~1ULL)
 +
 +#endif /* _UAPI_VS_LIMIT_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/monitor.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/monitor.h
---- linux-4.9.76/include/uapi/vserver/monitor.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/monitor.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/monitor.h linux-4.9/include/uapi/vserver/monitor.h
+--- linux-4.9/include/uapi/vserver/monitor.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/monitor.h   2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,96 @@
 +#ifndef _UAPI_VS_MONITOR_H
 +#define _UAPI_VS_MONITOR_H
@@ -12230,9 +12235,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/monitor.h linux-4.9.76-v
 +};
 +
 +#endif /* _UAPI_VS_MONITOR_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/network.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/network.h
---- linux-4.9.76/include/uapi/vserver/network.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/network.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/network.h linux-4.9/include/uapi/vserver/network.h
+--- linux-4.9/include/uapi/vserver/network.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/network.h   2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,76 @@
 +#ifndef _UAPI_VS_NETWORK_H
 +#define _UAPI_VS_NETWORK_H
@@ -12310,9 +12315,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/network.h linux-4.9.76-v
 +#define NXA_MASK_SHOW         (NXA_MASK_ALL | NXA_LOOPBACK)
 +
 +#endif /* _UAPI_VS_NETWORK_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/network_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/network_cmd.h
---- linux-4.9.76/include/uapi/vserver/network_cmd.h    1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/network_cmd.h  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/network_cmd.h linux-4.9/include/uapi/vserver/network_cmd.h
+--- linux-4.9/include/uapi/vserver/network_cmd.h       1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/network_cmd.h       2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,123 @@
 +#ifndef _UAPI_VS_NETWORK_CMD_H
 +#define _UAPI_VS_NETWORK_CMD_H
@@ -12437,9 +12442,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/network_cmd.h linux-4.9.
 +};
 +
 +#endif /* _UAPI_VS_NETWORK_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/sched_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/sched_cmd.h
---- linux-4.9.76/include/uapi/vserver/sched_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/sched_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/sched_cmd.h linux-4.9/include/uapi/vserver/sched_cmd.h
+--- linux-4.9/include/uapi/vserver/sched_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/sched_cmd.h 2021-02-24 15:47:45.104409971 +0100
 @@ -0,0 +1,13 @@
 +#ifndef _UAPI_VS_SCHED_CMD_H
 +#define _UAPI_VS_SCHED_CMD_H
@@ -12454,9 +12459,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/sched_cmd.h linux-4.9.76
 +#define VCMD_get_prio_bias    VC_CMD(SCHED, 5, 0)
 +
 +#endif /* _UAPI_VS_SCHED_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/signal_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/signal_cmd.h
---- linux-4.9.76/include/uapi/vserver/signal_cmd.h     1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/signal_cmd.h   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/signal_cmd.h linux-4.9/include/uapi/vserver/signal_cmd.h
+--- linux-4.9/include/uapi/vserver/signal_cmd.h        1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/signal_cmd.h        2021-02-24 15:47:45.107743409 +0100
 @@ -0,0 +1,31 @@
 +#ifndef _UAPI_VS_SIGNAL_CMD_H
 +#define _UAPI_VS_SIGNAL_CMD_H
@@ -12489,9 +12494,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/signal_cmd.h linux-4.9.7
 +};
 +
 +#endif /* _UAPI_VS_SIGNAL_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/space_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/space_cmd.h
---- linux-4.9.76/include/uapi/vserver/space_cmd.h      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/space_cmd.h    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/space_cmd.h linux-4.9/include/uapi/vserver/space_cmd.h
+--- linux-4.9/include/uapi/vserver/space_cmd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/space_cmd.h 2021-02-24 15:47:45.107743409 +0100
 @@ -0,0 +1,28 @@
 +#ifndef _UAPI_VS_SPACE_CMD_H
 +#define _UAPI_VS_SPACE_CMD_H
@@ -12521,9 +12526,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/space_cmd.h linux-4.9.76
 +};
 +
 +#endif /* _UAPI_VS_SPACE_CMD_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/switch.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/switch.h
---- linux-4.9.76/include/uapi/vserver/switch.h 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/switch.h       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/switch.h linux-4.9/include/uapi/vserver/switch.h
+--- linux-4.9/include/uapi/vserver/switch.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/switch.h    2021-02-24 15:47:45.107743409 +0100
 @@ -0,0 +1,90 @@
 +#ifndef _UAPI_VS_SWITCH_H
 +#define _UAPI_VS_SWITCH_H
@@ -12615,9 +12620,9 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/switch.h linux-4.9.76-vs
 +#define VCMD_get_vci          VC_CMD(VERSION, 1, 0)
 +
 +#endif /* _UAPI_VS_SWITCH_H */
-diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/tag_cmd.h linux-4.9.76-vs2.3.9.5/include/uapi/vserver/tag_cmd.h
---- linux-4.9.76/include/uapi/vserver/tag_cmd.h        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/include/uapi/vserver/tag_cmd.h      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/include/uapi/vserver/tag_cmd.h linux-4.9/include/uapi/vserver/tag_cmd.h
+--- linux-4.9/include/uapi/vserver/tag_cmd.h   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/include/uapi/vserver/tag_cmd.h   2021-02-24 15:47:45.107743409 +0100
 @@ -0,0 +1,14 @@
 +#ifndef _UAPI_VS_TAG_CMD_H
 +#define _UAPI_VS_TAG_CMD_H
@@ -12633,10 +12638,10 @@ diff -NurpP --minimal linux-4.9.76/include/uapi/vserver/tag_cmd.h linux-4.9.76-v
 +#define VCMD_tag_migrate      VC_CMD(TAGMIG, 1, 0)
 +
 +#endif /* _UAPI_VS_TAG_CMD_H */
-diff -NurpP --minimal linux-4.9.76/init/Kconfig linux-4.9.76-vs2.3.9.5/init/Kconfig
---- linux-4.9.76/init/Kconfig  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/init/Kconfig        2018-01-10 02:50:49.000000000 +0000
-@@ -958,6 +958,7 @@ config NUMA_BALANCING_DEFAULT_ENABLED
+diff -urNp -x '*.orig' linux-4.9/init/Kconfig linux-4.9/init/Kconfig
+--- linux-4.9/init/Kconfig     2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/init/Kconfig     2021-02-24 15:47:45.107743409 +0100
+@@ -959,6 +959,7 @@ config NUMA_BALANCING_DEFAULT_ENABLED
  menuconfig CGROUPS
        bool "Control Group support"
        select KERNFS
@@ -12644,20 +12649,20 @@ diff -NurpP --minimal linux-4.9.76/init/Kconfig linux-4.9.76-vs2.3.9.5/init/Kcon
        help
          This option adds support for grouping sets of processes together, for
          use with process control subsystems such as Cpusets, CFS, memory
-diff -NurpP --minimal linux-4.9.76/init/main.c linux-4.9.76-vs2.3.9.5/init/main.c
---- linux-4.9.76/init/main.c   2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/init/main.c 2018-01-10 02:50:49.000000000 +0000
-@@ -81,6 +81,7 @@
- #include <linux/proc_ns.h>
+diff -urNp -x '*.orig' linux-4.9/init/main.c linux-4.9/init/main.c
+--- linux-4.9/init/main.c      2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/init/main.c      2021-02-24 15:47:45.107743409 +0100
+@@ -82,6 +82,7 @@
  #include <linux/io.h>
  #include <linux/kaiser.h>
+ #include <linux/cache.h>
 +#include <linux/vserver/percpu.h>
  
  #include <asm/io.h>
  #include <asm/bugs.h>
-diff -NurpP --minimal linux-4.9.76/ipc/mqueue.c linux-4.9.76-vs2.3.9.5/ipc/mqueue.c
---- linux-4.9.76/ipc/mqueue.c  2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/ipc/mqueue.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/ipc/mqueue.c linux-4.9/ipc/mqueue.c
+--- linux-4.9/ipc/mqueue.c     2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/ipc/mqueue.c     2021-02-24 15:47:45.107743409 +0100
 @@ -35,6 +35,8 @@
  #include <linux/ipc_namespace.h>
  #include <linux/user_namespace.h>
@@ -12713,19 +12718,23 @@ diff -NurpP --minimal linux-4.9.76/ipc/mqueue.c linux-4.9.76-vs2.3.9.5/ipc/mqueu
        } else if (S_ISDIR(mode)) {
                inc_nlink(inode);
                /* Some things misbehave if size == 0 on a directory */
-@@ -396,8 +404,11 @@ static void mqueue_evict_inode(struct in
+@@ -393,6 +401,7 @@ static void mqueue_evict_inode(struct in
  
        user = info->user;
        if (user) {
 +              struct vx_info *vxi = info->vxi;
-+
+               unsigned long mq_bytes, mq_treesize;
+               /* Total amount of bytes accounted for the mqueue */
+@@ -405,6 +414,7 @@ static void mqueue_evict_inode(struct in
                spin_lock(&mq_lock);
                user->mq_bytes -= mq_bytes;
 +              vx_ipcmsg_sub(vxi, user, mq_bytes);
                /*
                 * get_ns_from_inode() ensures that the
                 * (ipc_ns = sb->s_fs_info) is either a valid ipc_ns
-@@ -407,6 +418,7 @@ static void mqueue_evict_inode(struct in
+@@ -414,6 +424,7 @@ static void mqueue_evict_inode(struct in
                if (ipc_ns)
                        ipc_ns->mq_queues_count--;
                spin_unlock(&mq_lock);
@@ -12733,9 +12742,9 @@ diff -NurpP --minimal linux-4.9.76/ipc/mqueue.c linux-4.9.76-vs2.3.9.5/ipc/mqueu
                free_uid(user);
        }
        if (ipc_ns)
-diff -NurpP --minimal linux-4.9.76/ipc/msg.c linux-4.9.76-vs2.3.9.5/ipc/msg.c
---- linux-4.9.76/ipc/msg.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/ipc/msg.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/ipc/msg.c linux-4.9/ipc/msg.c
+--- linux-4.9/ipc/msg.c        2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/ipc/msg.c        2021-02-24 15:47:45.107743409 +0100
 @@ -37,6 +37,7 @@
  #include <linux/rwsem.h>
  #include <linux/nsproxy.h>
@@ -12752,9 +12761,9 @@ diff -NurpP --minimal linux-4.9.76/ipc/msg.c linux-4.9.76-vs2.3.9.5/ipc/msg.c
  
        msq->q_perm.security = NULL;
        retval = security_msg_queue_alloc(msq);
-diff -NurpP --minimal linux-4.9.76/ipc/namespace.c linux-4.9.76-vs2.3.9.5/ipc/namespace.c
---- linux-4.9.76/ipc/namespace.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/ipc/namespace.c     2018-01-13 03:52:55.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/ipc/namespace.c linux-4.9/ipc/namespace.c
+--- linux-4.9/ipc/namespace.c  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/ipc/namespace.c  2021-02-24 15:47:45.107743409 +0100
 @@ -13,6 +13,7 @@
  #include <linux/mount.h>
  #include <linux/user_namespace.h>
@@ -12779,9 +12788,9 @@ diff -NurpP --minimal linux-4.9.76/ipc/namespace.c linux-4.9.76-vs2.3.9.5/ipc/na
        kfree(ns);
  }
  
-diff -NurpP --minimal linux-4.9.76/ipc/sem.c linux-4.9.76-vs2.3.9.5/ipc/sem.c
---- linux-4.9.76/ipc/sem.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/ipc/sem.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/ipc/sem.c linux-4.9/ipc/sem.c
+--- linux-4.9/ipc/sem.c        2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/ipc/sem.c        2021-02-24 15:47:45.107743409 +0100
 @@ -85,6 +85,8 @@
  #include <linux/rwsem.h>
  #include <linux/nsproxy.h>
@@ -12819,9 +12828,9 @@ diff -NurpP --minimal linux-4.9.76/ipc/sem.c linux-4.9.76-vs2.3.9.5/ipc/sem.c
        ipc_rcu_putref(sma, sem_rcu_free);
  }
  
-diff -NurpP --minimal linux-4.9.76/ipc/shm.c linux-4.9.76-vs2.3.9.5/ipc/shm.c
---- linux-4.9.76/ipc/shm.c     2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/ipc/shm.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/ipc/shm.c linux-4.9/ipc/shm.c
+--- linux-4.9/ipc/shm.c        2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/ipc/shm.c        2021-02-24 15:47:45.107743409 +0100
 @@ -42,6 +42,8 @@
  #include <linux/nsproxy.h>
  #include <linux/mount.h>
@@ -12831,7 +12840,7 @@ diff -NurpP --minimal linux-4.9.76/ipc/shm.c linux-4.9.76-vs2.3.9.5/ipc/shm.c
  
  #include <linux/uaccess.h>
  
-@@ -228,10 +230,14 @@ static void shm_open(struct vm_area_stru
+@@ -234,10 +236,14 @@ static void shm_open(struct vm_area_stru
  static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp)
  {
        struct file *shm_file;
@@ -12844,10 +12853,10 @@ diff -NurpP --minimal linux-4.9.76/ipc/shm.c linux-4.9.76-vs2.3.9.5/ipc/shm.c
 +      vx_ipcshm_sub(vxi, shp, numpages);
 +      ns->shm_tot -= numpages;
 +
-       shm_rmid(ns, shp);
+       shm_rmid(shp);
        shm_unlock(shp);
        if (!is_file_hugepages(shm_file))
-@@ -240,6 +246,7 @@ static void shm_destroy(struct ipc_names
+@@ -246,6 +252,7 @@ static void shm_destroy(struct ipc_names
                user_shm_unlock(i_size_read(file_inode(shm_file)),
                                shp->mlock_user);
        fput(shm_file);
@@ -12855,7 +12864,7 @@ diff -NurpP --minimal linux-4.9.76/ipc/shm.c linux-4.9.76-vs2.3.9.5/ipc/shm.c
        ipc_rcu_putref(shp, shm_rcu_free);
  }
  
-@@ -539,11 +546,15 @@ static int newseg(struct ipc_namespace *
+@@ -559,11 +566,15 @@ static int newseg(struct ipc_namespace *
                        ns->shm_tot + numpages > ns->shm_ctlall)
                return -ENOSPC;
  
@@ -12871,7 +12880,7 @@ diff -NurpP --minimal linux-4.9.76/ipc/shm.c linux-4.9.76-vs2.3.9.5/ipc/shm.c
        shp->shm_perm.mode = (shmflg & S_IRWXUGO);
        shp->mlock_user = NULL;
  
-@@ -614,6 +625,7 @@ static int newseg(struct ipc_namespace *
+@@ -634,6 +645,7 @@ static int newseg(struct ipc_namespace *
  
        ipc_unlock_object(&shp->shm_perm);
        rcu_read_unlock();
@@ -12879,10 +12888,10 @@ diff -NurpP --minimal linux-4.9.76/ipc/shm.c linux-4.9.76-vs2.3.9.5/ipc/shm.c
        return error;
  
  no_id:
-diff -NurpP --minimal linux-4.9.76/kernel/Makefile linux-4.9.76-vs2.3.9.5/kernel/Makefile
---- linux-4.9.76/kernel/Makefile       2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/Makefile     2018-01-10 02:50:49.000000000 +0000
-@@ -39,6 +39,7 @@ obj-y += printk/
+diff -urNp -x '*.orig' linux-4.9/kernel/Makefile linux-4.9/kernel/Makefile
+--- linux-4.9/kernel/Makefile  2021-02-24 15:47:32.454014219 +0100
++++ linux-4.9/kernel/Makefile  2021-02-24 15:47:45.111076846 +0100
+@@ -40,6 +40,7 @@ obj-y += printk/
  obj-y += irq/
  obj-y += rcu/
  obj-y += livepatch/
@@ -12890,10 +12899,10 @@ diff -NurpP --minimal linux-4.9.76/kernel/Makefile linux-4.9.76-vs2.3.9.5/kernel
  
  obj-$(CONFIG_CHECKPOINT_RESTORE) += kcmp.o
  obj-$(CONFIG_FREEZER) += freezer.o
-diff -NurpP --minimal linux-4.9.76/kernel/auditsc.c linux-4.9.76-vs2.3.9.5/kernel/auditsc.c
---- linux-4.9.76/kernel/auditsc.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/auditsc.c    2018-01-10 02:50:49.000000000 +0000
-@@ -1965,7 +1965,7 @@ static int audit_set_loginuid_perm(kuid_
+diff -urNp -x '*.orig' linux-4.9/kernel/auditsc.c linux-4.9/kernel/auditsc.c
+--- linux-4.9/kernel/auditsc.c 2021-02-24 15:47:32.457347657 +0100
++++ linux-4.9/kernel/auditsc.c 2021-02-24 15:47:45.107743409 +0100
+@@ -1967,7 +1967,7 @@ static int audit_set_loginuid_perm(kuid_
        if (is_audit_feature_set(AUDIT_FEATURE_LOGINUID_IMMUTABLE))
                return -EPERM;
        /* it is set, you need permission */
@@ -12902,9 +12911,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/auditsc.c linux-4.9.76-vs2.3.9.5/kerne
                return -EPERM;
        /* reject if this is not an unset and we don't allow that */
        if (is_audit_feature_set(AUDIT_FEATURE_ONLY_UNSET_LOGINUID) && uid_valid(loginuid))
-diff -NurpP --minimal linux-4.9.76/kernel/capability.c linux-4.9.76-vs2.3.9.5/kernel/capability.c
---- linux-4.9.76/kernel/capability.c   2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/capability.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/capability.c linux-4.9/kernel/capability.c
+--- linux-4.9/kernel/capability.c      2021-02-24 15:47:32.460681095 +0100
++++ linux-4.9/kernel/capability.c      2021-02-24 15:47:45.111076846 +0100
 @@ -17,6 +17,7 @@
  #include <linux/syscalls.h>
  #include <linux/pid_namespace.h>
@@ -12930,9 +12939,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/capability.c linux-4.9.76-vs2.3.9.5/ke
  /**
   * has_capability_noaudit - Does a task have a capability (unaudited) in the
   * initial user ns
-diff -NurpP --minimal linux-4.9.76/kernel/compat.c linux-4.9.76-vs2.3.9.5/kernel/compat.c
---- linux-4.9.76/kernel/compat.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/compat.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/compat.c linux-4.9/kernel/compat.c
+--- linux-4.9/kernel/compat.c  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/kernel/compat.c  2021-02-24 15:47:45.111076846 +0100
 @@ -27,6 +27,7 @@
  #include <linux/times.h>
  #include <linux/ptrace.h>
@@ -12950,9 +12959,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/compat.c linux-4.9.76-vs2.3.9.5/kernel
        return 0;
  }
  
-diff -NurpP --minimal linux-4.9.76/kernel/cred.c linux-4.9.76-vs2.3.9.5/kernel/cred.c
---- linux-4.9.76/kernel/cred.c 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/cred.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/cred.c linux-4.9/kernel/cred.c
+--- linux-4.9/kernel/cred.c    2021-02-24 15:47:32.460681095 +0100
++++ linux-4.9/kernel/cred.c    2021-02-24 15:47:45.111076846 +0100
 @@ -64,31 +64,6 @@ struct cred init_cred = {
        .group_info             = &init_groups,
  };
@@ -12985,7 +12994,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/cred.c linux-4.9.76-vs2.3.9.5/kernel/c
  /*
   * The RCU callback to actually dispose of a set of credentials
   */
-@@ -240,21 +215,16 @@ error:
+@@ -243,21 +218,16 @@ error:
   *
   * Call commit_creds() or abort_creds() to clean up.
   */
@@ -13007,8 +13016,8 @@ diff -NurpP --minimal linux-4.9.76/kernel/cred.c linux-4.9.76-vs2.3.9.5/kernel/c
 -      old = task->cred;
        memcpy(new, old, sizeof(struct cred));
  
-       atomic_set(&new->usage, 1);
-@@ -283,6 +253,13 @@ error:
+       new->non_rcu = 0;
+@@ -287,6 +257,13 @@ error:
        abort_creds(new);
        return NULL;
  }
@@ -13022,9 +13031,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/cred.c linux-4.9.76-vs2.3.9.5/kernel/c
  EXPORT_SYMBOL(prepare_creds);
  
  /*
-diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/exit.c
---- linux-4.9.76/kernel/exit.c 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/exit.c       2018-01-10 09:02:31.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/exit.c linux-4.9/kernel/exit.c
+--- linux-4.9/kernel/exit.c    2021-02-24 15:47:32.467347970 +0100
++++ linux-4.9/kernel/exit.c    2021-02-24 15:47:45.111076846 +0100
 @@ -48,6 +48,10 @@
  #include <linux/fs_struct.h>
  #include <linux/init_task.h>
@@ -13036,12 +13045,13 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
  #include <trace/events/sched.h>
  #include <linux/hw_breakpoint.h>
  #include <linux/oom.h>
-@@ -531,14 +535,24 @@ static struct task_struct *find_child_re
+@@ -535,15 +539,25 @@ static struct task_struct *find_child_re
  {
        struct pid_namespace *pid_ns = task_active_pid_ns(father);
        struct task_struct *reaper = pid_ns->child_reaper;
 +      struct vx_info *vxi = task_get_vx_info(father);
-+
+       struct task_struct *p, *n;
 +      if (vxi) {
 +              BUG_ON(!vxi->vx_reaper);
 +              if (vxi->vx_reaper != init_pid_ns.child_reaper &&
@@ -13050,7 +13060,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
 +                      goto out_put;
 +              }
 +      }
++
        if (likely(reaper != father))
 -              return reaper;
 +              goto out_put;
@@ -13063,7 +13073,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
        }
  
        write_unlock_irq(&tasklist_lock);
-@@ -549,7 +563,10 @@ static struct task_struct *find_child_re
+@@ -560,7 +574,10 @@ static struct task_struct *find_child_re
        zap_pid_ns_processes(pid_ns);
        write_lock_irq(&tasklist_lock);
  
@@ -13075,7 +13085,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
  }
  
  /*
-@@ -637,9 +654,13 @@ static void forget_original_parent(struc
+@@ -648,9 +665,13 @@ static void forget_original_parent(struc
                return;
  
        reaper = find_new_reaper(father, reaper);
@@ -13091,7 +13101,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
                        BUG_ON((!t->ptrace) != (t->parent == father));
                        if (likely(!t->ptrace))
                                t->parent = t->real_parent;
-@@ -651,10 +672,13 @@ static void forget_original_parent(struc
+@@ -662,10 +683,13 @@ static void forget_original_parent(struc
                 * If this is a threaded reparent there is no need to
                 * notify anyone anything has happened.
                 */
@@ -13107,7 +13117,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
  }
  
  /*
-@@ -844,6 +868,9 @@ void __noreturn do_exit(long code)
+@@ -843,6 +867,9 @@ void __noreturn do_exit(long code)
         */
        flush_ptrace_hw_breakpoint(tsk);
  
@@ -13117,20 +13127,20 @@ diff -NurpP --minimal linux-4.9.76/kernel/exit.c linux-4.9.76-vs2.3.9.5/kernel/e
        TASKS_RCU(preempt_disable());
        TASKS_RCU(tasks_rcu_i = __srcu_read_lock(&tasks_rcu_exit_srcu));
        TASKS_RCU(preempt_enable());
-@@ -883,6 +910,10 @@ void __noreturn do_exit(long code)
-       exit_rcu();
-       TASKS_RCU(__srcu_read_unlock(&tasks_rcu_exit_srcu, tasks_rcu_i));
+@@ -869,6 +896,10 @@ void __noreturn do_exit(long code)
+       validate_creds_for_do_exit(tsk);
  
-+      /* needs to stay after exit_notify() */
++      /* needs to stay after exit_notify() and before preempt_disable() */
 +      exit_vx_info(tsk, code);
 +      exit_nx_info(tsk);
 +
-       do_task_dead();
- }
- EXPORT_SYMBOL_GPL(do_exit);
-diff -NurpP --minimal linux-4.9.76/kernel/fork.c linux-4.9.76-vs2.3.9.5/kernel/fork.c
---- linux-4.9.76/kernel/fork.c 2018-01-13 21:29:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/fork.c       2018-01-10 09:23:14.000000000 +0000
+       check_stack_usage();
+       preempt_disable();
+       if (tsk->nr_dirtied)
+diff -urNp -x '*.orig' linux-4.9/kernel/fork.c linux-4.9/kernel/fork.c
+--- linux-4.9/kernel/fork.c    2021-02-24 15:47:32.467347970 +0100
++++ linux-4.9/kernel/fork.c    2021-02-24 15:47:45.111076846 +0100
 @@ -77,6 +77,9 @@
  #include <linux/compiler.h>
  #include <linux/sysctl.h>
@@ -13141,7 +13151,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/fork.c linux-4.9.76-vs2.3.9.5/kernel/f
  
  #include <asm/pgtable.h>
  #include <asm/pgalloc.h>
-@@ -353,6 +356,8 @@ void free_task(struct task_struct *tsk)
+@@ -356,6 +359,8 @@ void free_task(struct task_struct *tsk)
        WARN_ON_ONCE(atomic_read(&tsk->stack_refcount) != 0);
  #endif
        rt_mutex_debug_task_free(tsk);
@@ -13150,7 +13160,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/fork.c linux-4.9.76-vs2.3.9.5/kernel/f
        ftrace_graph_exit_task(tsk);
        put_seccomp_filter(tsk);
        arch_release_task_struct(tsk);
-@@ -1475,6 +1480,8 @@ static __latent_entropy struct task_stru
+@@ -1476,6 +1481,8 @@ static __latent_entropy struct task_stru
  {
        int retval;
        struct task_struct *p;
@@ -13159,7 +13169,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/fork.c linux-4.9.76-vs2.3.9.5/kernel/f
  
        if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
                return ERR_PTR(-EINVAL);
-@@ -1535,7 +1542,12 @@ static __latent_entropy struct task_stru
+@@ -1548,7 +1555,12 @@ static __latent_entropy struct task_stru
        DEBUG_LOCKS_WARN_ON(!p->hardirqs_enabled);
        DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled);
  #endif
@@ -13172,7 +13182,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/fork.c linux-4.9.76-vs2.3.9.5/kernel/f
        if (atomic_read(&p->real_cred->user->processes) >=
                        task_rlimit(p, RLIMIT_NPROC)) {
                if (p->real_cred->user != INIT_USER &&
-@@ -1832,6 +1844,18 @@ static __latent_entropy struct task_stru
+@@ -1843,6 +1855,18 @@ static __latent_entropy struct task_stru
        total_forks++;
        spin_unlock(&current->sighand->siglock);
        syscall_tracepoint_update(p);
@@ -13191,9 +13201,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/fork.c linux-4.9.76-vs2.3.9.5/kernel/f
        write_unlock_irq(&tasklist_lock);
  
        proc_fork_connector(p);
-diff -NurpP --minimal linux-4.9.76/kernel/kthread.c linux-4.9.76-vs2.3.9.5/kernel/kthread.c
---- linux-4.9.76/kernel/kthread.c      2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/kthread.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/kthread.c linux-4.9/kernel/kthread.c
+--- linux-4.9/kernel/kthread.c 2021-02-24 15:47:32.474014845 +0100
++++ linux-4.9/kernel/kthread.c 2021-02-24 15:47:45.111076846 +0100
 @@ -19,6 +19,7 @@
  #include <linux/ptrace.h>
  #include <linux/uaccess.h>
@@ -13202,9 +13212,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/kthread.c linux-4.9.76-vs2.3.9.5/kerne
  #include <trace/events/sched.h>
  
  static DEFINE_SPINLOCK(kthread_create_lock);
-diff -NurpP --minimal linux-4.9.76/kernel/nsproxy.c linux-4.9.76-vs2.3.9.5/kernel/nsproxy.c
---- linux-4.9.76/kernel/nsproxy.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/nsproxy.c    2018-01-14 06:25:23.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/nsproxy.c linux-4.9/kernel/nsproxy.c
+--- linux-4.9/kernel/nsproxy.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/kernel/nsproxy.c 2021-02-24 15:47:45.111076846 +0100
 @@ -20,12 +20,15 @@
  #include <linux/mnt_namespace.h>
  #include <linux/utsname.h>
@@ -13401,9 +13411,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/nsproxy.c linux-4.9.76-vs2.3.9.5/kerne
                return -EPERM;
  
        *new_nsp = create_new_namespaces(unshare_flags, current, user_ns,
-diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pid.c
---- linux-4.9.76/kernel/pid.c  2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/pid.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/pid.c linux-4.9/kernel/pid.c
+--- linux-4.9/kernel/pid.c     2021-02-24 15:47:32.477348283 +0100
++++ linux-4.9/kernel/pid.c     2021-02-24 15:47:45.111076846 +0100
 @@ -38,6 +38,7 @@
  #include <linux/syscalls.h>
  #include <linux/proc_ns.h>
@@ -13412,7 +13422,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pi
  
  #define pid_hashfn(nr, ns)    \
        hash_long((unsigned long)nr + (unsigned long)ns, pidhash_shift)
-@@ -379,7 +380,7 @@ EXPORT_SYMBOL_GPL(find_pid_ns);
+@@ -381,7 +382,7 @@ EXPORT_SYMBOL_GPL(find_pid_ns);
  
  struct pid *find_vpid(int nr)
  {
@@ -13421,7 +13431,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pi
  }
  EXPORT_SYMBOL_GPL(find_vpid);
  
-@@ -435,6 +436,9 @@ void transfer_pid(struct task_struct *ol
+@@ -437,6 +438,9 @@ void transfer_pid(struct task_struct *ol
  struct task_struct *pid_task(struct pid *pid, enum pid_type type)
  {
        struct task_struct *result = NULL;
@@ -13431,7 +13441,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pi
        if (pid) {
                struct hlist_node *first;
                first = rcu_dereference_check(hlist_first_rcu(&pid->tasks[type]),
-@@ -453,7 +457,7 @@ struct task_struct *find_task_by_pid_ns(
+@@ -455,7 +459,7 @@ struct task_struct *find_task_by_pid_ns(
  {
        RCU_LOCKDEP_WARN(!rcu_read_lock_held(),
                         "find_task_by_pid_ns() needs rcu_read_lock() protection");
@@ -13440,7 +13450,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pi
  }
  
  struct task_struct *find_task_by_vpid(pid_t vnr)
-@@ -497,7 +501,7 @@ struct pid *find_get_pid(pid_t nr)
+@@ -499,7 +503,7 @@ struct pid *find_get_pid(pid_t nr)
  }
  EXPORT_SYMBOL_GPL(find_get_pid);
  
@@ -13449,7 +13459,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pi
  {
        struct upid *upid;
        pid_t nr = 0;
-@@ -511,6 +515,11 @@ pid_t pid_nr_ns(struct pid *pid, struct
+@@ -513,6 +517,11 @@ pid_t pid_nr_ns(struct pid *pid, struct
  }
  EXPORT_SYMBOL_GPL(pid_nr_ns);
  
@@ -13461,9 +13471,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid.c linux-4.9.76-vs2.3.9.5/kernel/pi
  pid_t pid_vnr(struct pid *pid)
  {
        return pid_nr_ns(pid, task_active_pid_ns(current));
-diff -NurpP --minimal linux-4.9.76/kernel/pid_namespace.c linux-4.9.76-vs2.3.9.5/kernel/pid_namespace.c
---- linux-4.9.76/kernel/pid_namespace.c        2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/pid_namespace.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/pid_namespace.c linux-4.9/kernel/pid_namespace.c
+--- linux-4.9/kernel/pid_namespace.c   2021-02-24 15:47:32.477348283 +0100
++++ linux-4.9/kernel/pid_namespace.c   2021-02-24 15:47:45.111076846 +0100
 @@ -18,6 +18,7 @@
  #include <linux/proc_ns.h>
  #include <linux/reboot.h>
@@ -13488,9 +13498,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/pid_namespace.c linux-4.9.76-vs2.3.9.5
        kmem_cache_free(pid_ns_cachep, ns);
  out_dec:
        dec_pid_namespaces(ucounts);
-diff -NurpP --minimal linux-4.9.76/kernel/printk/printk.c linux-4.9.76-vs2.3.9.5/kernel/printk/printk.c
---- linux-4.9.76/kernel/printk/printk.c        2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/printk/printk.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/printk/printk.c linux-4.9/kernel/printk/printk.c
+--- linux-4.9/kernel/printk/printk.c   2021-02-24 15:47:32.480681720 +0100
++++ linux-4.9/kernel/printk/printk.c   2021-02-24 15:47:45.114410284 +0100
 @@ -45,6 +45,7 @@
  #include <linux/utsname.h>
  #include <linux/ctype.h>
@@ -13499,7 +13509,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/printk/printk.c linux-4.9.76-vs2.3.9.5
  
  #include <asm/uaccess.h>
  #include <asm/sections.h>
-@@ -612,7 +613,7 @@ int check_syslog_permissions(int type, i
+@@ -611,7 +612,7 @@ int check_syslog_permissions(int type, i
                goto ok;
  
        if (syslog_action_restricted(type)) {
@@ -13508,7 +13518,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/printk/printk.c linux-4.9.76-vs2.3.9.5
                        goto ok;
                /*
                 * For historical reasons, accept CAP_SYS_ADMIN too, with
-@@ -1432,12 +1433,9 @@ int do_syslog(int type, char __user *buf
+@@ -1398,12 +1399,9 @@ int do_syslog(int type, char __user *buf
        if (error)
                goto out;
  
@@ -13524,7 +13534,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/printk/printk.c linux-4.9.76-vs2.3.9.5
                error = -EINVAL;
                if (!buf || len < 0)
                        goto out;
-@@ -1448,6 +1446,16 @@ int do_syslog(int type, char __user *buf
+@@ -1414,6 +1412,16 @@ int do_syslog(int type, char __user *buf
                        error = -EFAULT;
                        goto out;
                }
@@ -13541,7 +13551,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/printk/printk.c linux-4.9.76-vs2.3.9.5
                error = wait_event_interruptible(log_wait,
                                                 syslog_seq != log_next_seq);
                if (error)
-@@ -1460,16 +1468,6 @@ int do_syslog(int type, char __user *buf
+@@ -1426,16 +1434,6 @@ int do_syslog(int type, char __user *buf
                /* FALL THRU */
        /* Read last kernel messages */
        case SYSLOG_ACTION_READ_ALL:
@@ -13558,9 +13568,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/printk/printk.c linux-4.9.76-vs2.3.9.5
                error = syslog_print_all(buf, len, clear);
                break;
        /* Clear ring buffer */
-diff -NurpP --minimal linux-4.9.76/kernel/ptrace.c linux-4.9.76-vs2.3.9.5/kernel/ptrace.c
---- linux-4.9.76/kernel/ptrace.c       2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/ptrace.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/ptrace.c linux-4.9/kernel/ptrace.c
+--- linux-4.9/kernel/ptrace.c  2021-02-24 15:47:32.480681720 +0100
++++ linux-4.9/kernel/ptrace.c  2021-02-24 15:47:45.114410284 +0100
 @@ -23,6 +23,7 @@
  #include <linux/syscalls.h>
  #include <linux/uaccess.h>
@@ -13569,7 +13579,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/ptrace.c linux-4.9.76-vs2.3.9.5/kernel
  #include <linux/hw_breakpoint.h>
  #include <linux/cn_proc.h>
  #include <linux/compat.h>
-@@ -325,6 +326,11 @@ ok:
+@@ -336,6 +337,11 @@ ok:
             !ptrace_has_cap(mm->user_ns, mode)))
            return -EPERM;
  
@@ -13578,12 +13588,12 @@ diff -NurpP --minimal linux-4.9.76/kernel/ptrace.c linux-4.9.76-vs2.3.9.5/kernel
 +      if (!vx_check(task->xid, VS_IDENT) &&
 +              !task_vx_flags(task, VXF_STATE_ADMIN, 0))
 +              return -EACCES;
+       if (mode & PTRACE_MODE_SCHED)
+               return 0;
        return security_ptrace_access_check(task, mode);
- }
-diff -NurpP --minimal linux-4.9.76/kernel/reboot.c linux-4.9.76-vs2.3.9.5/kernel/reboot.c
---- linux-4.9.76/kernel/reboot.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/reboot.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/reboot.c linux-4.9/kernel/reboot.c
+--- linux-4.9/kernel/reboot.c  2021-02-24 15:47:32.484015158 +0100
++++ linux-4.9/kernel/reboot.c  2021-02-24 15:47:45.114410284 +0100
 @@ -16,6 +16,7 @@
  #include <linux/syscalls.h>
  #include <linux/syscore_ops.h>
@@ -13611,9 +13621,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/reboot.c linux-4.9.76-vs2.3.9.5/kernel
        mutex_lock(&reboot_mutex);
        switch (cmd) {
        case LINUX_REBOOT_CMD_RESTART:
-diff -NurpP --minimal linux-4.9.76/kernel/sched/core.c linux-4.9.76-vs2.3.9.5/kernel/sched/core.c
---- linux-4.9.76/kernel/sched/core.c   2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/sched/core.c 2018-01-10 09:06:27.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/sched/core.c linux-4.9/kernel/sched/core.c
+--- linux-4.9/kernel/sched/core.c      2021-02-24 15:47:32.484015158 +0100
++++ linux-4.9/kernel/sched/core.c      2021-02-24 15:47:45.114410284 +0100
 @@ -75,6 +75,8 @@
  #include <linux/compiler.h>
  #include <linux/frame.h>
@@ -13623,7 +13633,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/core.c linux-4.9.76-vs2.3.9.5/ke
  
  #include <asm/switch_to.h>
  #include <asm/tlb.h>
-@@ -3429,6 +3431,7 @@ void __noreturn do_task_dead(void)
+@@ -3431,6 +3433,7 @@ void __noreturn do_task_dead(void)
        __set_current_state(TASK_DEAD);
        current->flags |= PF_NOFREEZE;  /* tell freezer to ignore us */
        __schedule(false);
@@ -13631,7 +13641,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/core.c linux-4.9.76-vs2.3.9.5/ke
        BUG();
        /* Avoid "noreturn function does return".  */
        for (;;)
-@@ -3822,7 +3825,7 @@ SYSCALL_DEFINE1(nice, int, increment)
+@@ -3825,7 +3828,7 @@ SYSCALL_DEFINE1(nice, int, increment)
  
        nice = clamp_val(nice, MIN_NICE, MAX_NICE);
        if (increment < 0 && !can_nice(current, nice))
@@ -13640,9 +13650,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/core.c linux-4.9.76-vs2.3.9.5/ke
  
        retval = security_task_setnice(current, nice);
        if (retval)
-diff -NurpP --minimal linux-4.9.76/kernel/sched/cputime.c linux-4.9.76-vs2.3.9.5/kernel/sched/cputime.c
---- linux-4.9.76/kernel/sched/cputime.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/sched/cputime.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/sched/cputime.c linux-4.9/kernel/sched/cputime.c
+--- linux-4.9/kernel/sched/cputime.c   2021-02-24 15:47:32.484015158 +0100
++++ linux-4.9/kernel/sched/cputime.c   2021-02-24 15:47:45.114410284 +0100
 @@ -4,6 +4,7 @@
  #include <linux/kernel_stat.h>
  #include <linux/static_key.h>
@@ -13651,7 +13661,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/cputime.c linux-4.9.76-vs2.3.9.5
  #include "sched.h"
  #ifdef CONFIG_PARAVIRT
  #include <asm/paravirt.h>
-@@ -133,14 +134,17 @@ static inline void task_group_account_fi
+@@ -125,14 +126,17 @@ static inline void task_group_account_fi
  void account_user_time(struct task_struct *p, cputime_t cputime,
                       cputime_t cputime_scaled)
  {
@@ -13669,8 +13679,8 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/cputime.c linux-4.9.76-vs2.3.9.5
 +      index = (nice) ? CPUTIME_NICE : CPUTIME_USER;
  
        /* Add user time to cpustat. */
-       task_group_account_field(p, index, (__force u64) cputime);
-@@ -187,9 +191,12 @@ static inline
+       task_group_account_field(p, index, cputime_to_nsecs(cputime));
+@@ -179,9 +183,12 @@ static inline
  void __account_system_time(struct task_struct *p, cputime_t cputime,
                        cputime_t cputime_scaled, int index)
  {
@@ -13683,9 +13693,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/cputime.c linux-4.9.76-vs2.3.9.5
        account_group_system_time(p, cputime);
  
        /* Add system time to cpustat. */
-diff -NurpP --minimal linux-4.9.76/kernel/sched/fair.c linux-4.9.76-vs2.3.9.5/kernel/sched/fair.c
---- linux-4.9.76/kernel/sched/fair.c   2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/sched/fair.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/sched/fair.c linux-4.9/kernel/sched/fair.c
+--- linux-4.9/kernel/sched/fair.c      2021-02-24 15:47:32.487348596 +0100
++++ linux-4.9/kernel/sched/fair.c      2021-02-24 15:47:45.117743722 +0100
 @@ -30,6 +30,7 @@
  #include <linux/mempolicy.h>
  #include <linux/migrate.h>
@@ -13694,7 +13704,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/fair.c linux-4.9.76-vs2.3.9.5/ke
  
  #include <trace/events/sched.h>
  
-@@ -3410,6 +3411,8 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
+@@ -3431,6 +3432,8 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
                __enqueue_entity(cfs_rq, se);
        se->on_rq = 1;
  
@@ -13703,7 +13713,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/fair.c linux-4.9.76-vs2.3.9.5/ke
        if (cfs_rq->nr_running == 1) {
                list_add_leaf_cfs_rq(cfs_rq);
                check_enqueue_throttle(cfs_rq);
-@@ -3479,6 +3482,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, st
+@@ -3500,6 +3503,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, st
        if (se != cfs_rq->curr)
                __dequeue_entity(cfs_rq, se);
        se->on_rq = 0;
@@ -13712,9 +13722,32 @@ diff -NurpP --minimal linux-4.9.76/kernel/sched/fair.c linux-4.9.76-vs2.3.9.5/ke
        account_entity_dequeue(cfs_rq, se);
  
        /*
-diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel/signal.c
---- linux-4.9.76/kernel/signal.c       2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/signal.c     2018-01-13 21:30:31.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/sched/loadavg.c linux-4.9/kernel/sched/loadavg.c
+--- linux-4.9/kernel/sched/loadavg.c   2021-02-24 15:47:32.487348596 +0100
++++ linux-4.9/kernel/sched/loadavg.c   2021-02-24 15:47:45.117743722 +0100
+@@ -73,9 +73,16 @@ EXPORT_SYMBOL(avenrun); /* should be rem
+  */
+ void get_avenrun(unsigned long *loads, unsigned long offset, int shift)
+ {
+-      loads[0] = (avenrun[0] + offset) << shift;
+-      loads[1] = (avenrun[1] + offset) << shift;
+-      loads[2] = (avenrun[2] + offset) << shift;
++      if (vx_flags(VXF_VIRT_LOAD, 0)) {
++              struct vx_info *vxi = current_vx_info();
++              loads[0] = (vxi->cvirt.load[0] + offset) << shift;
++              loads[1] = (vxi->cvirt.load[1] + offset) << shift;
++              loads[2] = (vxi->cvirt.load[2] + offset) << shift;
++      } else {
++              loads[0] = (avenrun[0] + offset) << shift;
++              loads[1] = (avenrun[1] + offset) << shift;
++              loads[2] = (avenrun[2] + offset) << shift;
++      }
+ }
+ long calc_load_fold_active(struct rq *this_rq, long adjust)
+diff -urNp -x '*.orig' linux-4.9/kernel/signal.c linux-4.9/kernel/signal.c
+--- linux-4.9/kernel/signal.c  2021-02-24 15:47:32.490682033 +0100
++++ linux-4.9/kernel/signal.c  2021-02-24 15:47:45.117743722 +0100
 @@ -34,6 +34,8 @@
  #include <linux/compat.h>
  #include <linux/cn_proc.h>
@@ -13724,7 +13757,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/signal.h>
-@@ -726,9 +728,18 @@ static int check_kill_permission(int sig
+@@ -782,9 +784,18 @@ static int check_kill_permission(int sig
        struct pid *sid;
        int error;
  
@@ -13743,7 +13776,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
        if (!si_fromuser(info))
                return 0;
  
-@@ -752,6 +763,20 @@ static int check_kill_permission(int sig
+@@ -808,6 +819,20 @@ static int check_kill_permission(int sig
                }
        }
  
@@ -13764,7 +13797,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
        return security_task_kill(t, info, sig, 0);
  }
  
-@@ -1303,8 +1328,14 @@ int kill_pid_info(int sig, struct siginf
+@@ -1359,8 +1384,14 @@ int kill_pid_info(int sig, struct siginf
        for (;;) {
                rcu_read_lock();
                p = pid_task(pid, PIDTYPE_PID);
@@ -13781,7 +13814,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
                rcu_read_unlock();
                if (likely(!p || error != -ESRCH))
                        return error;
-@@ -1349,7 +1380,7 @@ int kill_pid_info_as_cred(int sig, struc
+@@ -1405,7 +1436,7 @@ int kill_pid_info_as_cred(int sig, struc
  
        rcu_read_lock();
        p = pid_task(pid, PIDTYPE_PID);
@@ -13790,7 +13823,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
                ret = -ESRCH;
                goto out_unlock;
        }
-@@ -1401,8 +1432,10 @@ static int kill_something_info(int sig,
+@@ -1461,8 +1492,10 @@ static int kill_something_info(int sig,
                struct task_struct * p;
  
                for_each_process(p) {
@@ -13803,7 +13836,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
                                int err = group_send_sig_info(sig, info, p);
                                ++count;
                                if (err != -EPERM)
-@@ -2255,6 +2288,11 @@ relock:
+@@ -2333,6 +2366,11 @@ relock:
                                !sig_kernel_only(signr))
                        continue;
  
@@ -13815,9 +13848,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/signal.c linux-4.9.76-vs2.3.9.5/kernel
                if (sig_kernel_stop(signr)) {
                        /*
                         * The default action is to stop all threads in
-diff -NurpP --minimal linux-4.9.76/kernel/softirq.c linux-4.9.76-vs2.3.9.5/kernel/softirq.c
---- linux-4.9.76/kernel/softirq.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/softirq.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/softirq.c linux-4.9/kernel/softirq.c
+--- linux-4.9/kernel/softirq.c 2021-02-24 15:47:32.490682033 +0100
++++ linux-4.9/kernel/softirq.c 2021-02-24 15:47:45.117743722 +0100
 @@ -26,6 +26,7 @@
  #include <linux/smpboot.h>
  #include <linux/tick.h>
@@ -13826,18 +13859,18 @@ diff -NurpP --minimal linux-4.9.76/kernel/softirq.c linux-4.9.76-vs2.3.9.5/kerne
  
  #define CREATE_TRACE_POINTS
  #include <trace/events/irq.h>
-diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sys.c
---- linux-4.9.76/kernel/sys.c  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/sys.c        2018-01-10 02:50:49.000000000 +0000
-@@ -54,6 +54,7 @@
- #include <linux/cred.h>
+diff -urNp -x '*.orig' linux-4.9/kernel/sys.c linux-4.9/kernel/sys.c
+--- linux-4.9/kernel/sys.c     2021-02-24 15:47:32.490682033 +0100
++++ linux-4.9/kernel/sys.c     2021-02-24 15:47:45.117743722 +0100
+@@ -56,6 +56,7 @@
+ #include <linux/nospec.h>
  
  #include <linux/kmsg_dump.h>
 +#include <linux/vs_pid.h>
  /* Move somewhere else to avoid recompiling? */
  #include <generated/utsrelease.h>
  
-@@ -157,7 +158,10 @@ static int set_one_prio(struct task_stru
+@@ -159,7 +160,10 @@ static int set_one_prio(struct task_stru
                goto out;
        }
        if (niceval < task_nice(p) && !can_nice(p, niceval)) {
@@ -13849,7 +13882,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sy
                goto out;
        }
        no_nice = security_task_setnice(p, niceval);
-@@ -208,6 +212,8 @@ SYSCALL_DEFINE3(setpriority, int, which,
+@@ -210,6 +214,8 @@ SYSCALL_DEFINE3(setpriority, int, which,
                else
                        pgrp = task_pgrp(current);
                do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
@@ -13858,7 +13891,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sy
                        error = set_one_prio(p, niceval, error);
                } while_each_pid_thread(pgrp, PIDTYPE_PGID, p);
                break;
-@@ -274,6 +280,8 @@ SYSCALL_DEFINE2(getpriority, int, which,
+@@ -276,6 +282,8 @@ SYSCALL_DEFINE2(getpriority, int, which,
                else
                        pgrp = task_pgrp(current);
                do_each_pid_thread(pgrp, PIDTYPE_PGID, p) {
@@ -13867,7 +13900,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sy
                        niceval = nice_to_rlimit(task_nice(p));
                        if (niceval > retval)
                                retval = niceval;
-@@ -290,6 +298,8 @@ SYSCALL_DEFINE2(getpriority, int, which,
+@@ -292,6 +300,8 @@ SYSCALL_DEFINE2(getpriority, int, which,
                                goto out_unlock;        /* No processes for this user */
                }
                do_each_thread(g, p) {
@@ -13876,7 +13909,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sy
                        if (uid_eq(task_uid(p), uid) && task_pid_vnr(p)) {
                                niceval = nice_to_rlimit(task_nice(p));
                                if (niceval > retval)
-@@ -1217,7 +1227,8 @@ SYSCALL_DEFINE2(sethostname, char __user
+@@ -1213,7 +1223,8 @@ SYSCALL_DEFINE2(sethostname, char __user
        int errno;
        char tmp[__NEW_UTS_LEN];
  
@@ -13886,7 +13919,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sy
                return -EPERM;
  
        if (len < 0 || len > __NEW_UTS_LEN)
-@@ -1268,7 +1279,8 @@ SYSCALL_DEFINE2(setdomainname, char __us
+@@ -1266,7 +1277,8 @@ SYSCALL_DEFINE2(setdomainname, char __us
        int errno;
        char tmp[__NEW_UTS_LEN];
  
@@ -13915,9 +13948,23 @@ diff -NurpP --minimal linux-4.9.76/kernel/sys.c linux-4.9.76-vs2.3.9.5/kernel/sy
                return 0;
  
        return -EPERM;
-diff -NurpP --minimal linux-4.9.76/kernel/sysctl.c linux-4.9.76-vs2.3.9.5/kernel/sysctl.c
---- linux-4.9.76/kernel/sysctl.c       2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/sysctl.c     2018-01-10 02:50:49.000000000 +0000
+@@ -2328,7 +2341,12 @@ static int do_sysinfo(struct sysinfo *in
+       get_avenrun(info->loads, 0, SI_LOAD_SHIFT - FSHIFT);
+-      info->procs = nr_threads;
++      if (vx_flags(VXF_VIRT_LOAD, 0)) {
++              struct vx_info *vxi = current_vx_info();
++              info->procs = atomic_read(&vxi->cvirt.nr_threads);
++      } else {
++              info->procs = nr_threads;
++      }
+       si_meminfo(info);
+       si_swapinfo(info);
+diff -urNp -x '*.orig' linux-4.9/kernel/sysctl.c linux-4.9/kernel/sysctl.c
+--- linux-4.9/kernel/sysctl.c  2021-02-24 15:47:32.490682033 +0100
++++ linux-4.9/kernel/sysctl.c  2021-02-24 15:47:45.117743722 +0100
 @@ -87,6 +87,7 @@
  #if defined(CONFIG_PROVE_LOCKING) || defined(CONFIG_LOCK_STAT)
  #include <linux/lockdep.h>
@@ -13926,7 +13973,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sysctl.c linux-4.9.76-vs2.3.9.5/kernel
  #ifdef CONFIG_CHR_DEV_SG
  #include <scsi/sg.h>
  #endif
-@@ -282,6 +283,13 @@ static int max_extfrag_threshold = 1000;
+@@ -284,6 +285,13 @@ static int max_extfrag_threshold = 1000;
  
  static struct ctl_table kern_table[] = {
        {
@@ -13940,7 +13987,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/sysctl.c linux-4.9.76-vs2.3.9.5/kernel
                .procname       = "sched_child_runs_first",
                .data           = &sysctl_sched_child_runs_first,
                .maxlen         = sizeof(unsigned int),
-@@ -1426,7 +1434,6 @@ static struct ctl_table vm_table[] = {
+@@ -1429,7 +1437,6 @@ static struct ctl_table vm_table[] = {
                .extra1         = &zero,
                .extra2         = &one,
        },
@@ -13948,9 +13995,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/sysctl.c linux-4.9.76-vs2.3.9.5/kernel
  #endif /* CONFIG_COMPACTION */
        {
                .procname       = "min_free_kbytes",
-diff -NurpP --minimal linux-4.9.76/kernel/sysctl_binary.c linux-4.9.76-vs2.3.9.5/kernel/sysctl_binary.c
---- linux-4.9.76/kernel/sysctl_binary.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/sysctl_binary.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/sysctl_binary.c linux-4.9/kernel/sysctl_binary.c
+--- linux-4.9/kernel/sysctl_binary.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/kernel/sysctl_binary.c   2021-02-24 15:47:45.117743722 +0100
 @@ -74,6 +74,7 @@ static const struct bin_table bin_kern_t
  
        { CTL_INT,      KERN_PANIC,                     "panic" },
@@ -13959,9 +14006,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/sysctl_binary.c linux-4.9.76-vs2.3.9.5
  
        { CTL_STR,      KERN_SPARC_REBOOT,              "reboot-cmd" },
        { CTL_INT,      KERN_CTLALTDEL,                 "ctrl-alt-del" },
-diff -NurpP --minimal linux-4.9.76/kernel/time/posix-timers.c linux-4.9.76-vs2.3.9.5/kernel/time/posix-timers.c
---- linux-4.9.76/kernel/time/posix-timers.c    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/time/posix-timers.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/time/posix-timers.c linux-4.9/kernel/time/posix-timers.c
+--- linux-4.9/kernel/time/posix-timers.c       2021-02-24 15:47:32.494015471 +0100
++++ linux-4.9/kernel/time/posix-timers.c       2021-02-24 15:47:45.117743722 +0100
 @@ -48,6 +48,7 @@
  #include <linux/workqueue.h>
  #include <linux/export.h>
@@ -13970,7 +14017,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/posix-timers.c linux-4.9.76-vs2.3
  
  #include "timekeeping.h"
  
-@@ -407,6 +408,7 @@ int posix_timer_event(struct k_itimer *t
+@@ -417,6 +418,7 @@ int posix_timer_event(struct k_itimer *t
  {
        struct task_struct *task;
        int shared, ret = -1;
@@ -13978,7 +14025,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/posix-timers.c linux-4.9.76-vs2.3
        /*
         * FIXME: if ->sigq is queued we can race with
         * dequeue_signal()->do_schedule_next_timer().
-@@ -423,10 +425,18 @@ int posix_timer_event(struct k_itimer *t
+@@ -433,10 +435,18 @@ int posix_timer_event(struct k_itimer *t
        rcu_read_lock();
        task = pid_task(timr->it_pid, PIDTYPE_PID);
        if (task) {
@@ -13997,10 +14044,10 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/posix-timers.c linux-4.9.76-vs2.3
        /* If we failed to send the signal the timer stops. */
        return ret > 0;
  }
-diff -NurpP --minimal linux-4.9.76/kernel/time/time.c linux-4.9.76-vs2.3.9.5/kernel/time/time.c
---- linux-4.9.76/kernel/time/time.c    2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/time/time.c  2018-01-10 09:31:11.000000000 +0000
-@@ -37,6 +37,7 @@
+diff -urNp -x '*.orig' linux-4.9/kernel/time/time.c linux-4.9/kernel/time/time.c
+--- linux-4.9/kernel/time/time.c       2021-02-24 15:47:32.494015471 +0100
++++ linux-4.9/kernel/time/time.c       2021-02-24 15:47:45.117743722 +0100
+@@ -38,6 +38,7 @@
  #include <linux/fs.h>
  #include <linux/math64.h>
  #include <linux/ptrace.h>
@@ -14008,7 +14055,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/time.c linux-4.9.76-vs2.3.9.5/ker
  
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
-@@ -93,7 +94,7 @@ SYSCALL_DEFINE1(stime, time_t __user *,
+@@ -94,7 +95,7 @@ SYSCALL_DEFINE1(stime, time_t __user *,
        if (err)
                return err;
  
@@ -14017,7 +14064,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/time.c linux-4.9.76-vs2.3.9.5/ker
        return 0;
  }
  
-@@ -186,7 +187,7 @@ int do_sys_settimeofday64(const struct t
+@@ -187,7 +188,7 @@ int do_sys_settimeofday64(const struct t
                }
        }
        if (tv)
@@ -14026,24 +14073,41 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/time.c linux-4.9.76-vs2.3.9.5/ker
        return 0;
  }
  
-diff -NurpP --minimal linux-4.9.76/kernel/time/timekeeping.c linux-4.9.76-vs2.3.9.5/kernel/time/timekeeping.c
---- linux-4.9.76/kernel/time/timekeeping.c     2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/time/timekeeping.c   2018-01-10 02:50:49.000000000 +0000
-@@ -23,6 +23,7 @@
+diff -urNp -x '*.orig' linux-4.9/kernel/time/timekeeping.c linux-4.9/kernel/time/timekeeping.c
+--- linux-4.9/kernel/time/timekeeping.c        2021-02-24 15:47:32.494015471 +0100
++++ linux-4.9/kernel/time/timekeeping.c        2021-02-24 15:47:45.121077159 +0100
+@@ -23,6 +23,8 @@
  #include <linux/stop_machine.h>
  #include <linux/pvclock_gtod.h>
  #include <linux/compiler.h>
 +#include <linux/vs_time.h>
++#include <linux/vs_base.h>
  
  #include "tick-internal.h"
  #include "ntp_internal.h"
-diff -NurpP --minimal linux-4.9.76/kernel/time/timer.c linux-4.9.76-vs2.3.9.5/kernel/time/timer.c
---- linux-4.9.76/kernel/time/timer.c   2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/time/timer.c 2018-01-10 02:50:49.000000000 +0000
-@@ -42,6 +42,10 @@
- #include <linux/sched/sysctl.h>
+@@ -768,6 +770,15 @@ ktime_t ktime_get_with_offset(enum tk_of
+       } while (read_seqcount_retry(&tk_core.seq, seq));
++#ifdef CONFIG_VSERVER_VTIME
++      if ((offs == TK_OFFS_BOOT) &&
++              vx_flags(VXF_VIRT_UPTIME, 0) &&
++              !vx_check(0, VS_ADMIN|VS_WATCH)) {
++              struct vx_info *vxi = current_vx_info();
++              ktime_t bias_uptime = timespec64_to_ktime(vxi->cvirt.bias_uptime);
++              base = ktime_sub(base, bias_uptime);
++      }
++#endif
+       return ktime_add_ns(base, nsecs);
+ }
+diff -urNp -x '*.orig' linux-4.9/kernel/time/timer.c linux-4.9/kernel/time/timer.c
+--- linux-4.9/kernel/time/timer.c      2021-02-24 15:47:32.494015471 +0100
++++ linux-4.9/kernel/time/timer.c      2021-02-24 15:47:45.121077159 +0100
+@@ -43,6 +43,10 @@
  #include <linux/slab.h>
  #include <linux/compat.h>
+ #include <linux/random.h>
 +#include <linux/vs_base.h>
 +#include <linux/vs_cvirt.h>
 +#include <linux/vs_pid.h>
@@ -14051,9 +14115,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/time/timer.c linux-4.9.76-vs2.3.9.5/ke
  
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
-diff -NurpP --minimal linux-4.9.76/kernel/user_namespace.c linux-4.9.76-vs2.3.9.5/kernel/user_namespace.c
---- linux-4.9.76/kernel/user_namespace.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/user_namespace.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/user_namespace.c linux-4.9/kernel/user_namespace.c
+--- linux-4.9/kernel/user_namespace.c  2021-02-24 15:47:32.504015783 +0100
++++ linux-4.9/kernel/user_namespace.c  2021-02-24 15:47:45.121077159 +0100
 @@ -22,6 +22,7 @@
  #include <linux/ctype.h>
  #include <linux/projid.h>
@@ -14097,9 +14161,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/user_namespace.c linux-4.9.76-vs2.3.9.
  /**
   *    make_kprojid - Map a user-namespace projid pair into a kprojid.
   *    @ns:  User namespace that the projid is in
-diff -NurpP --minimal linux-4.9.76/kernel/utsname.c linux-4.9.76-vs2.3.9.5/kernel/utsname.c
---- linux-4.9.76/kernel/utsname.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/utsname.c    2018-01-10 09:05:33.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/utsname.c linux-4.9/kernel/utsname.c
+--- linux-4.9/kernel/utsname.c 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/kernel/utsname.c 2021-02-24 15:47:45.121077159 +0100
 @@ -16,6 +16,7 @@
  #include <linux/slab.h>
  #include <linux/user_namespace.h>
@@ -14128,9 +14192,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/utsname.c linux-4.9.76-vs2.3.9.5/kerne
        kfree(ns);
  }
  
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/Kconfig linux-4.9.76-vs2.3.9.5/kernel/vserver/Kconfig
---- linux-4.9.76/kernel/vserver/Kconfig        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/Kconfig      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/Kconfig linux-4.9/kernel/vserver/Kconfig
+--- linux-4.9/kernel/vserver/Kconfig   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/Kconfig   2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,230 @@
 +#
 +# Linux VServer configuration
@@ -14362,9 +14426,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/Kconfig linux-4.9.76-vs2.3.9.5
 +      bool
 +      default n
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/Makefile linux-4.9.76-vs2.3.9.5/kernel/vserver/Makefile
---- linux-4.9.76/kernel/vserver/Makefile       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/Makefile     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/Makefile linux-4.9/kernel/vserver/Makefile
+--- linux-4.9/kernel/vserver/Makefile  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/Makefile  2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,18 @@
 +#
 +# Makefile for the Linux vserver routines.
@@ -14384,9 +14448,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/Makefile linux-4.9.76-vs2.3.9.
 +vserver-$(CONFIG_VSERVER_MONITOR) += monitor.o
 +vserver-$(CONFIG_VSERVER_DEVICE) += device.o
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/cacct.c linux-4.9.76-vs2.3.9.5/kernel/vserver/cacct.c
---- linux-4.9.76/kernel/vserver/cacct.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/cacct.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/cacct.c linux-4.9/kernel/vserver/cacct.c
+--- linux-4.9/kernel/vserver/cacct.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/cacct.c   2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,42 @@
 +/*
 + *  linux/kernel/vserver/cacct.c
@@ -14430,9 +14494,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cacct.c linux-4.9.76-vs2.3.9.5
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/cacct_init.h linux-4.9.76-vs2.3.9.5/kernel/vserver/cacct_init.h
---- linux-4.9.76/kernel/vserver/cacct_init.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/cacct_init.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/cacct_init.h linux-4.9/kernel/vserver/cacct_init.h
+--- linux-4.9/kernel/vserver/cacct_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/cacct_init.h      2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,25 @@
 +
 +
@@ -14459,9 +14523,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cacct_init.h linux-4.9.76-vs2.
 +      return;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/cacct_proc.h linux-4.9.76-vs2.3.9.5/kernel/vserver/cacct_proc.h
---- linux-4.9.76/kernel/vserver/cacct_proc.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/cacct_proc.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/cacct_proc.h linux-4.9/kernel/vserver/cacct_proc.h
+--- linux-4.9/kernel/vserver/cacct_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/cacct_proc.h      2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,53 @@
 +#ifndef _VX_CACCT_PROC_H
 +#define _VX_CACCT_PROC_H
@@ -14516,9 +14580,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cacct_proc.h linux-4.9.76-vs2.
 +}
 +
 +#endif        /* _VX_CACCT_PROC_H */
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/context.c linux-4.9.76-vs2.3.9.5/kernel/vserver/context.c
---- linux-4.9.76/kernel/vserver/context.c      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/context.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/context.c linux-4.9/kernel/vserver/context.c
+--- linux-4.9/kernel/vserver/context.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/context.c 2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,1119 @@
 +/*
 + *  linux/kernel/vserver/context.c
@@ -15639,9 +15703,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/context.c linux-4.9.76-vs2.3.9
 +
 +EXPORT_SYMBOL_GPL(free_vx_info);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt.c linux-4.9.76-vs2.3.9.5/kernel/vserver/cvirt.c
---- linux-4.9.76/kernel/vserver/cvirt.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/cvirt.c      2018-01-11 08:36:23.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/cvirt.c linux-4.9/kernel/vserver/cvirt.c
+--- linux-4.9/kernel/vserver/cvirt.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/cvirt.c   2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,350 @@
 +/*
 + *  linux/kernel/vserver/cvirt.c
@@ -15665,11 +15729,11 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt.c linux-4.9.76-vs2.3.9.5
 +#include <asm/uaccess.h>
 +
 +
-+void vx_vsi_boottime(struct timespec *boottime)
++void vx_vsi_boottime64(struct timespec64 *boottime)
 +{
 +      struct vx_info *vxi = current_vx_info();
 +
-+      set_normalized_timespec(boottime,
++      set_normalized_timespec64(boottime,
 +              boottime->tv_sec + vxi->cvirt.bias_uptime.tv_sec,
 +              boottime->tv_nsec + vxi->cvirt.bias_uptime.tv_nsec);
 +      return;
@@ -15892,8 +15956,8 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt.c linux-4.9.76-vs2.3.9.5
 +      struct _vx_cvirt *cvirt = &vxi->cvirt;
 +      struct timespec64 uptime;
 +
-+      ktime_get_ts(&uptime);
-+      set_normalized_timespec(&uptime,
++      ktime_get_ts64(&uptime);
++      set_normalized_timespec64(&uptime,
 +              uptime.tv_sec - cvirt->bias_uptime.tv_sec,
 +              uptime.tv_nsec - cvirt->bias_uptime.tv_nsec);
 +
@@ -15993,9 +16057,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt.c linux-4.9.76-vs2.3.9.5
 +
 +#endif
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt_init.h linux-4.9.76-vs2.3.9.5/kernel/vserver/cvirt_init.h
---- linux-4.9.76/kernel/vserver/cvirt_init.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/cvirt_init.h 2018-01-11 08:38:34.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/cvirt_init.h linux-4.9/kernel/vserver/cvirt_init.h
+--- linux-4.9/kernel/vserver/cvirt_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/cvirt_init.h      2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,70 @@
 +
 +
@@ -16067,9 +16131,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt_init.h linux-4.9.76-vs2.
 +      return;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt_proc.h linux-4.9.76-vs2.3.9.5/kernel/vserver/cvirt_proc.h
---- linux-4.9.76/kernel/vserver/cvirt_proc.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/cvirt_proc.h 2018-01-11 08:39:19.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/cvirt_proc.h linux-4.9/kernel/vserver/cvirt_proc.h
+--- linux-4.9/kernel/vserver/cvirt_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/cvirt_proc.h      2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,123 @@
 +#ifndef _VX_CVIRT_PROC_H
 +#define _VX_CVIRT_PROC_H
@@ -16194,9 +16258,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/cvirt_proc.h linux-4.9.76-vs2.
 +}
 +
 +#endif        /* _VX_CVIRT_PROC_H */
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/debug.c linux-4.9.76-vs2.3.9.5/kernel/vserver/debug.c
---- linux-4.9.76/kernel/vserver/debug.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/debug.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/debug.c linux-4.9/kernel/vserver/debug.c
+--- linux-4.9/kernel/vserver/debug.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/debug.c   2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,32 @@
 +/*
 + *  kernel/vserver/debug.c
@@ -16230,9 +16294,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/debug.c linux-4.9.76-vs2.3.9.5
 +
 +EXPORT_SYMBOL_GPL(dump_vx_info);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/device.c linux-4.9.76-vs2.3.9.5/kernel/vserver/device.c
---- linux-4.9.76/kernel/vserver/device.c       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/device.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/device.c linux-4.9/kernel/vserver/device.c
+--- linux-4.9/kernel/vserver/device.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/device.c  2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,443 @@
 +/*
 + *  linux/kernel/vserver/device.c
@@ -16677,9 +16741,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/device.c linux-4.9.76-vs2.3.9.
 +#endif        /* CONFIG_COMPAT */
 +
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/dlimit.c linux-4.9.76-vs2.3.9.5/kernel/vserver/dlimit.c
---- linux-4.9.76/kernel/vserver/dlimit.c       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/dlimit.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/dlimit.c linux-4.9/kernel/vserver/dlimit.c
+--- linux-4.9/kernel/vserver/dlimit.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/dlimit.c  2021-02-24 15:47:45.121077159 +0100
 @@ -0,0 +1,528 @@
 +/*
 + *  linux/kernel/vserver/dlimit.c
@@ -17209,9 +17273,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/dlimit.c linux-4.9.76-vs2.3.9.
 +EXPORT_SYMBOL_GPL(locate_dl_info);
 +EXPORT_SYMBOL_GPL(rcu_free_dl_info);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/helper.c linux-4.9.76-vs2.3.9.5/kernel/vserver/helper.c
---- linux-4.9.76/kernel/vserver/helper.c       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/helper.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/helper.c linux-4.9/kernel/vserver/helper.c
+--- linux-4.9/kernel/vserver/helper.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/helper.c  2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,242 @@
 +/*
 + *  linux/kernel/vserver/helper.c
@@ -17455,9 +17519,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/helper.c linux-4.9.76-vs2.3.9.
 +      return do_vshelper(vshelper_path, argv, envp, 1);
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/history.c linux-4.9.76-vs2.3.9.5/kernel/vserver/history.c
---- linux-4.9.76/kernel/vserver/history.c      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/history.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/history.c linux-4.9/kernel/vserver/history.c
+--- linux-4.9/kernel/vserver/history.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/history.c 2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,258 @@
 +/*
 + *  kernel/vserver/history.c
@@ -17717,9 +17781,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/history.c linux-4.9.76-vs2.3.9
 +
 +#endif        /* CONFIG_COMPAT */
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/inet.c linux-4.9.76-vs2.3.9.5/kernel/vserver/inet.c
---- linux-4.9.76/kernel/vserver/inet.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/inet.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/inet.c linux-4.9/kernel/vserver/inet.c
+--- linux-4.9/kernel/vserver/inet.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/inet.c    2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,236 @@
 +
 +#include <linux/in.h>
@@ -17957,9 +18021,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/inet.c linux-4.9.76-vs2.3.9.5/
 +
 +EXPORT_SYMBOL_GPL(ip_v4_find_src);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/init.c linux-4.9.76-vs2.3.9.5/kernel/vserver/init.c
---- linux-4.9.76/kernel/vserver/init.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/init.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/init.c linux-4.9/kernel/vserver/init.c
+--- linux-4.9/kernel/vserver/init.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/init.c    2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,46 @@
 +/*
 + *  linux/kernel/init.c
@@ -18007,9 +18071,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/init.c linux-4.9.76-vs2.3.9.5/
 +module_init(init_vserver);
 +module_exit(exit_vserver);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/inode.c linux-4.9.76-vs2.3.9.5/kernel/vserver/inode.c
---- linux-4.9.76/kernel/vserver/inode.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/inode.c      2018-01-13 03:26:08.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/inode.c linux-4.9/kernel/vserver/inode.c
+--- linux-4.9/kernel/vserver/inode.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/inode.c   2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,440 @@
 +/*
 + *  linux/kernel/vserver/inode.c
@@ -18451,10 +18515,10 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/inode.c linux-4.9.76-vs2.3.9.5
 +
 +#endif        /* CONFIG_PROPAGATE */
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit.c linux-4.9.76-vs2.3.9.5/kernel/vserver/limit.c
---- linux-4.9.76/kernel/vserver/limit.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/limit.c      2018-01-10 02:50:49.000000000 +0000
-@@ -0,0 +1,343 @@
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/limit.c linux-4.9/kernel/vserver/limit.c
+--- linux-4.9/kernel/vserver/limit.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/limit.c   2021-02-24 15:47:45.124410596 +0100
+@@ -0,0 +1,386 @@
 +/*
 + *  linux/kernel/vserver/limit.c
 + *
@@ -18713,23 +18777,53 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit.c linux-4.9.76-vs2.3.9.5
 +
 +
 +#ifdef        CONFIG_MEMCG
++
++void dump_sysinfo(struct sysinfo *si)
++{
++      printk(KERN_INFO "sysinfo: memunit=%u\n"
++              "\ttotalram:\t%lu\n"
++              "\tfreeram:\t%lu\n"
++              "\tsharedram:\t%lu\n"
++              "\tbufferram:\t%lu\n"
++              "\ttotalswap:\t%lu\n"
++              "\tfreeswap:\t%lu\n"
++              "\ttotalhigh:\t%lu\n"
++              "\tfreehigh:\t%lu\n",
++              si->mem_unit,
++              si->totalram,
++              si->freeram,
++              si->sharedram,
++              si->bufferram,
++              si->totalswap,
++              si->freeswap,
++              si->totalhigh,
++              si->freehigh);
++}
++
 +void vx_vsi_meminfo(struct sysinfo *val)
 +{
 +      struct mem_cgroup *mcg;
-+      u64 res_limit, res_usage;
++      unsigned long res_limit, res_usage;
++      unsigned shift;
++
++      if (VXD_CBIT(cvirt, 4))
++              dump_sysinfo(val);
 +
 +      rcu_read_lock();
 +      mcg = mem_cgroup_from_task(current);
++      if (VXD_CBIT(cvirt, 5))
++              dump_mem_cgroup(mcg);
 +      rcu_read_unlock();
 +      if (!mcg)
 +              goto out;
 +
 +      res_limit = mem_cgroup_mem_limit_pages(mcg);
 +      res_usage = mem_cgroup_mem_usage_pages(mcg);
++      shift = val->mem_unit == 1 ? PAGE_SHIFT : 0;
 +
 +      if (res_limit != PAGE_COUNTER_MAX)
-+              val->totalram = res_limit;
-+      val->freeram = val->totalram - res_usage;
++              val->totalram = res_limit << shift;
++      val->freeram = val->totalram - (res_usage << shift);
 +      val->bufferram = 0;
 +      val->totalhigh = 0;
 +      val->freehigh = 0;
@@ -18741,28 +18835,36 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit.c linux-4.9.76-vs2.3.9.5
 +{
 +#ifdef        CONFIG_MEMCG_SWAP
 +      struct mem_cgroup *mcg;
-+      u64 res_limit, res_usage, memsw_limit, memsw_usage;
-+      s64 swap_limit, swap_usage;
++      unsigned long res_limit, res_usage, memsw_limit, memsw_usage;
++      signed long swap_limit, swap_usage;
++      unsigned shift;
++
++      if (VXD_CBIT(cvirt, 6))
++              dump_sysinfo(val);
 +
 +      rcu_read_lock();
 +      mcg = mem_cgroup_from_task(current);
++      if (VXD_CBIT(cvirt, 7))
++              dump_mem_cgroup(mcg);
 +      rcu_read_unlock();
 +      if (!mcg)
 +              goto out;
 +
 +      res_limit = mem_cgroup_mem_limit_pages(mcg);
-+      res_usage = mem_cgroup_mem_usage_pages(mcg);
-+      memsw_limit = mem_cgroup_memsw_limit_pages(mcg);
-+      memsw_usage = mem_cgroup_memsw_usage_pages(mcg);
 +
 +      /* memory unlimited */
 +      if (res_limit == PAGE_COUNTER_MAX)
 +              goto out;
 +
++      res_usage = mem_cgroup_mem_usage_pages(mcg);
++      memsw_limit = mem_cgroup_memsw_limit_pages(mcg);
++      memsw_usage = mem_cgroup_memsw_usage_pages(mcg);
++      shift = val->mem_unit == 1 ? PAGE_SHIFT : 0;
++
 +      swap_limit = memsw_limit - res_limit;
 +      /* we have a swap limit? */
 +      if (memsw_limit != PAGE_COUNTER_MAX)
-+              val->totalswap = swap_limit;
++              val->totalswap = swap_limit << shift;
 +
 +      /* calculate swap part */
 +      swap_usage = (memsw_usage > res_usage) ?
@@ -18770,7 +18872,7 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit.c linux-4.9.76-vs2.3.9.5
 +
 +      /* total shown minus usage gives free swap */
 +      val->freeswap = (swap_usage < swap_limit) ?
-+              val->totalswap - swap_usage : 0;
++              val->totalswap - (swap_usage << shift) : 0;
 +out:
 +#else /* !CONFIG_MEMCG_SWAP */
 +      val->totalswap = 0;
@@ -18785,8 +18887,13 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit.c linux-4.9.76-vs2.3.9.5
 +#ifdef        CONFIG_MEMCG_BROKEN
 +      struct mem_cgroup *mcg;
 +
++      if (VXD_CBIT(cvirt, 8))
++              dump_sysinfo(val);
++
 +      rcu_read_lock();
 +      mcg = mem_cgroup_from_task(current);
++      if (VXD_CBIT(cvirt, 9))
++              dump_mem_cgroup(mcg);
 +      rcu_read_unlock();
 +      if (!mcg)
 +              goto out;
@@ -18798,9 +18905,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit.c linux-4.9.76-vs2.3.9.5
 +}
 +#endif        /* !CONFIG_MEMCG */
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit_init.h linux-4.9.76-vs2.3.9.5/kernel/vserver/limit_init.h
---- linux-4.9.76/kernel/vserver/limit_init.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/limit_init.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/limit_init.h linux-4.9/kernel/vserver/limit_init.h
+--- linux-4.9/kernel/vserver/limit_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/limit_init.h      2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,31 @@
 +
 +
@@ -18833,9 +18940,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit_init.h linux-4.9.76-vs2.
 +      }
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit_proc.h linux-4.9.76-vs2.3.9.5/kernel/vserver/limit_proc.h
---- linux-4.9.76/kernel/vserver/limit_proc.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/limit_proc.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/limit_proc.h linux-4.9/kernel/vserver/limit_proc.h
+--- linux-4.9/kernel/vserver/limit_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/limit_proc.h      2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,57 @@
 +#ifndef _VX_LIMIT_PROC_H
 +#define _VX_LIMIT_PROC_H
@@ -18894,9 +19001,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/limit_proc.h linux-4.9.76-vs2.
 +#endif        /* _VX_LIMIT_PROC_H */
 +
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/network.c linux-4.9.76-vs2.3.9.5/kernel/vserver/network.c
---- linux-4.9.76/kernel/vserver/network.c      1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/network.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/network.c linux-4.9/kernel/vserver/network.c
+--- linux-4.9/kernel/vserver/network.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/network.c 2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,1053 @@
 +/*
 + *  linux/kernel/vserver/network.c
@@ -19951,9 +20058,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/network.c linux-4.9.76-vs2.3.9
 +EXPORT_SYMBOL_GPL(free_nx_info);
 +EXPORT_SYMBOL_GPL(unhash_nx_info);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/proc.c linux-4.9.76-vs2.3.9.5/kernel/vserver/proc.c
---- linux-4.9.76/kernel/vserver/proc.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/proc.c       2018-01-13 04:17:12.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/proc.c linux-4.9/kernel/vserver/proc.c
+--- linux-4.9/kernel/vserver/proc.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/proc.c    2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,1040 @@
 +/*
 + *  linux/kernel/vserver/proc.c
@@ -20995,9 +21102,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/proc.c linux-4.9.76-vs2.3.9.5/
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/sched.c linux-4.9.76-vs2.3.9.5/kernel/vserver/sched.c
---- linux-4.9.76/kernel/vserver/sched.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/sched.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/sched.c linux-4.9/kernel/vserver/sched.c
+--- linux-4.9/kernel/vserver/sched.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/sched.c   2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,83 @@
 +/*
 + *  linux/kernel/vserver/sched.c
@@ -21082,9 +21189,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/sched.c linux-4.9.76-vs2.3.9.5
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/sched_init.h linux-4.9.76-vs2.3.9.5/kernel/vserver/sched_init.h
---- linux-4.9.76/kernel/vserver/sched_init.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/sched_init.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/sched_init.h linux-4.9/kernel/vserver/sched_init.h
+--- linux-4.9/kernel/vserver/sched_init.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/sched_init.h      2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,27 @@
 +
 +static inline void vx_info_init_sched(struct _vx_sched *sched)
@@ -21113,9 +21220,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/sched_init.h linux-4.9.76-vs2.
 +{
 +      return;
 +}
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/sched_proc.h linux-4.9.76-vs2.3.9.5/kernel/vserver/sched_proc.h
---- linux-4.9.76/kernel/vserver/sched_proc.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/sched_proc.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/sched_proc.h linux-4.9/kernel/vserver/sched_proc.h
+--- linux-4.9/kernel/vserver/sched_proc.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/sched_proc.h      2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,32 @@
 +#ifndef _VX_SCHED_PROC_H
 +#define _VX_SCHED_PROC_H
@@ -21149,9 +21256,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/sched_proc.h linux-4.9.76-vs2.
 +}
 +
 +#endif        /* _VX_SCHED_PROC_H */
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/signal.c linux-4.9.76-vs2.3.9.5/kernel/vserver/signal.c
---- linux-4.9.76/kernel/vserver/signal.c       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/signal.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/signal.c linux-4.9/kernel/vserver/signal.c
+--- linux-4.9/kernel/vserver/signal.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/signal.c  2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,134 @@
 +/*
 + *  linux/kernel/vserver/signal.c
@@ -21287,9 +21394,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/signal.c linux-4.9.76-vs2.3.9.
 +      return ret;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/space.c linux-4.9.76-vs2.3.9.5/kernel/vserver/space.c
---- linux-4.9.76/kernel/vserver/space.c        1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/space.c      2018-01-13 03:42:01.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/space.c linux-4.9/kernel/vserver/space.c
+--- linux-4.9/kernel/vserver/space.c   1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/space.c   2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,437 @@
 +/*
 + *  linux/kernel/vserver/space.c
@@ -21728,9 +21835,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/space.c linux-4.9.76-vs2.3.9.5
 +      return 0;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/switch.c linux-4.9.76-vs2.3.9.5/kernel/vserver/switch.c
---- linux-4.9.76/kernel/vserver/switch.c       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/switch.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/switch.c linux-4.9/kernel/vserver/switch.c
+--- linux-4.9/kernel/vserver/switch.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/switch.c  2021-02-24 15:47:45.124410596 +0100
 @@ -0,0 +1,556 @@
 +/*
 + *  linux/kernel/vserver/switch.c
@@ -22288,9 +22395,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/switch.c linux-4.9.76-vs2.3.9.
 +}
 +
 +#endif        /* CONFIG_COMPAT */
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/sysctl.c linux-4.9.76-vs2.3.9.5/kernel/vserver/sysctl.c
---- linux-4.9.76/kernel/vserver/sysctl.c       1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/sysctl.c     2018-01-13 05:37:59.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/sysctl.c linux-4.9/kernel/vserver/sysctl.c
+--- linux-4.9/kernel/vserver/sysctl.c  1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/sysctl.c  2021-02-24 15:47:45.127744035 +0100
 @@ -0,0 +1,249 @@
 +/*
 + *  kernel/vserver/sysctl.c
@@ -22541,9 +22648,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/sysctl.c linux-4.9.76-vs2.3.9.
 +EXPORT_SYMBOL_GPL(vs_debug_perm);
 +EXPORT_SYMBOL_GPL(vs_debug_misc);
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/tag.c linux-4.9.76-vs2.3.9.5/kernel/vserver/tag.c
---- linux-4.9.76/kernel/vserver/tag.c  1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/tag.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/tag.c linux-4.9/kernel/vserver/tag.c
+--- linux-4.9/kernel/vserver/tag.c     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/tag.c     2021-02-24 15:47:45.127744035 +0100
 @@ -0,0 +1,63 @@
 +/*
 + *  linux/kernel/vserver/tag.c
@@ -22608,9 +22715,9 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/tag.c linux-4.9.76-vs2.3.9.5/k
 +}
 +
 +
-diff -NurpP --minimal linux-4.9.76/kernel/vserver/vci_config.h linux-4.9.76-vs2.3.9.5/kernel/vserver/vci_config.h
---- linux-4.9.76/kernel/vserver/vci_config.h   1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/kernel/vserver/vci_config.h 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/kernel/vserver/vci_config.h linux-4.9/kernel/vserver/vci_config.h
+--- linux-4.9/kernel/vserver/vci_config.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/kernel/vserver/vci_config.h      2021-02-24 15:47:45.127744035 +0100
 @@ -0,0 +1,80 @@
 +
 +/*  interface version */
@@ -22692,39 +22799,54 @@ diff -NurpP --minimal linux-4.9.76/kernel/vserver/vci_config.h linux-4.9.76-vs2.
 +      0;
 +}
 +
-diff -NurpP --minimal linux-4.9.76/mm/memcontrol.c linux-4.9.76-vs2.3.9.5/mm/memcontrol.c
---- linux-4.9.76/mm/memcontrol.c       2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/memcontrol.c     2018-01-10 08:42:06.000000000 +0000
-@@ -2825,6 +2825,26 @@ static u64 mem_cgroup_read_u64(struct cg
+diff -urNp -x '*.orig' linux-4.9/mm/memcontrol.c linux-4.9/mm/memcontrol.c
+--- linux-4.9/mm/memcontrol.c  2021-02-24 15:47:32.527349847 +0100
++++ linux-4.9/mm/memcontrol.c  2021-02-24 15:47:45.127744035 +0100
+@@ -2873,6 +2873,41 @@ static u64 mem_cgroup_read_u64(struct cg
        }
  }
  
-+u64 mem_cgroup_mem_usage_pages(struct mem_cgroup *memcg)
++unsigned long mem_cgroup_mem_usage_pages(struct mem_cgroup *memcg)
++{
++      return mem_cgroup_usage(memcg, false);
++}
++
++unsigned long mem_cgroup_mem_limit_pages(struct mem_cgroup *memcg)
 +{
-+      return mem_cgroup_usage(memcg, false) >> PAGE_SHIFT;
++      return memcg->memory.limit;
 +}
 +
-+u64 mem_cgroup_mem_limit_pages(struct mem_cgroup *memcg)
++unsigned long mem_cgroup_memsw_usage_pages(struct mem_cgroup *memcg)
 +{
-+      return (u64)memcg->memory.limit;
++      return mem_cgroup_usage(memcg, true);
 +}
 +
-+u64 mem_cgroup_memsw_usage_pages(struct mem_cgroup *memcg)
++unsigned long mem_cgroup_memsw_limit_pages(struct mem_cgroup *memcg)
 +{
-+      return mem_cgroup_usage(memcg, true) >> PAGE_SHIFT;
++      return memcg->memsw.limit;
 +}
 +
-+u64 mem_cgroup_memsw_limit_pages(struct mem_cgroup *memcg)
++void dump_mem_cgroup(struct mem_cgroup *memcg)
 +{
-+      return (u64)memcg->memsw.limit;
++      printk(KERN_INFO "memcg: %p/%d:\n"
++              "\tmemory:\t%lu/%lu %lu/%lu\n"
++              "\tmemsw:\t%lu/%lu %lu/%lu\n"
++              "\tkmem:\t%lu/%lu %lu/%lu\n",
++              memcg, memcg->id.id,
++              page_counter_read(&memcg->memory), memcg->memory.limit,
++              memcg->memory.watermark, memcg->memory.failcnt,
++              page_counter_read(&memcg->memsw), memcg->memsw.limit,
++              memcg->memsw.watermark, memcg->memsw.failcnt,
++              page_counter_read(&memcg->kmem), memcg->kmem.limit,
++              memcg->kmem.watermark, memcg->kmem.failcnt);
 +}
 +
  #ifndef CONFIG_SLOB
  static int memcg_online_kmem(struct mem_cgroup *memcg)
  {
-diff -NurpP --minimal linux-4.9.76/mm/oom_kill.c linux-4.9.76-vs2.3.9.5/mm/oom_kill.c
---- linux-4.9.76/mm/oom_kill.c 2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/oom_kill.c       2018-01-10 08:54:40.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/mm/oom_kill.c linux-4.9/mm/oom_kill.c
+--- linux-4.9/mm/oom_kill.c    2021-02-24 15:47:32.534016722 +0100
++++ linux-4.9/mm/oom_kill.c    2021-02-24 15:47:45.127744035 +0100
 @@ -38,6 +38,8 @@
  #include <linux/kthread.h>
  #include <linux/init.h>
@@ -22765,7 +22887,7 @@ diff -NurpP --minimal linux-4.9.76/mm/oom_kill.c linux-4.9.76-vs2.3.9.5/mm/oom_k
  
        /*
         * If any of p's children has a different mm and is eligible for kill,
-@@ -902,8 +911,8 @@ static void oom_kill_process(struct oom_
+@@ -910,8 +919,8 @@ static void oom_kill_process(struct oom_
         */
        do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true);
        mark_oom_victim(victim);
@@ -22776,7 +22898,7 @@ diff -NurpP --minimal linux-4.9.76/mm/oom_kill.c linux-4.9.76-vs2.3.9.5/mm/oom_k
                K(get_mm_counter(victim->mm, MM_ANONPAGES)),
                K(get_mm_counter(victim->mm, MM_FILEPAGES)),
                K(get_mm_counter(victim->mm, MM_SHMEMPAGES)));
-@@ -950,6 +959,8 @@ static void oom_kill_process(struct oom_
+@@ -958,6 +967,8 @@ static void oom_kill_process(struct oom_
  }
  #undef K
  
@@ -22785,7 +22907,7 @@ diff -NurpP --minimal linux-4.9.76/mm/oom_kill.c linux-4.9.76-vs2.3.9.5/mm/oom_k
  /*
   * Determines whether the kernel must panic because of the panic_on_oom sysctl.
   */
-@@ -1055,7 +1066,12 @@ bool out_of_memory(struct oom_control *o
+@@ -1063,7 +1074,12 @@ bool out_of_memory(struct oom_control *o
        /* Found nothing?!?! Either we hang forever, or we panic. */
        if (!oc->chosen && !is_sysrq_oom(oc) && !is_memcg_oom(oc)) {
                dump_header(oc, NULL);
@@ -22799,19 +22921,40 @@ diff -NurpP --minimal linux-4.9.76/mm/oom_kill.c linux-4.9.76-vs2.3.9.5/mm/oom_k
        }
        if (oc->chosen && oc->chosen != (void *)-1UL) {
                oom_kill_process(oc, !is_memcg_oom(oc) ? "Out of memory" :
-diff -NurpP --minimal linux-4.9.76/mm/page_alloc.c linux-4.9.76-vs2.3.9.5/mm/page_alloc.c
---- linux-4.9.76/mm/page_alloc.c       2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/page_alloc.c     2018-01-10 08:55:35.000000000 +0000
-@@ -64,6 +64,8 @@
- #include <linux/page_owner.h>
+diff -urNp -x '*.orig' linux-4.9/mm/page_alloc.c linux-4.9/mm/page_alloc.c
+--- linux-4.9/mm/page_alloc.c  2021-02-24 15:47:32.534016722 +0100
++++ linux-4.9/mm/page_alloc.c  2021-02-24 15:47:45.127744035 +0100
+@@ -65,6 +65,8 @@
  #include <linux/kthread.h>
  #include <linux/memcontrol.h>
+ #include <linux/khugepaged.h>
 +#include <linux/vs_base.h>
 +#include <linux/vs_limit.h>
  
  #include <asm/sections.h>
  #include <asm/tlbflush.h>
-@@ -4205,6 +4207,9 @@ void si_meminfo(struct sysinfo *val)
+@@ -4171,14 +4173,17 @@ long si_mem_available(void)
+        */
+       pagecache = pages[LRU_ACTIVE_FILE] + pages[LRU_INACTIVE_FILE];
+       pagecache -= min(pagecache / 2, wmark_low);
+-      available += pagecache;
++      if (!vx_flags(VXF_VIRT_MEM, 0))
++              available += pagecache;
+       /*
+        * Part of the reclaimable slab consists of items that are in use,
+        * and cannot be freed. Cap this estimate at the low watermark.
+        */
+-      available += global_page_state(NR_SLAB_RECLAIMABLE) -
+-                   min(global_page_state(NR_SLAB_RECLAIMABLE) / 2, wmark_low);
++      if (!vx_flags(VXF_VIRT_MEM, 0))
++              available += global_page_state(NR_SLAB_RECLAIMABLE) -
++                           min(global_page_state(NR_SLAB_RECLAIMABLE) / 2,
++                               wmark_low);
+       if (available < 0)
+               available = 0;
+@@ -4195,6 +4200,9 @@ void si_meminfo(struct sysinfo *val)
        val->totalhigh = totalhigh_pages;
        val->freehigh = nr_free_highpages();
        val->mem_unit = PAGE_SIZE;
@@ -22821,7 +22964,7 @@ diff -NurpP --minimal linux-4.9.76/mm/page_alloc.c linux-4.9.76-vs2.3.9.5/mm/pag
  }
  
  EXPORT_SYMBOL(si_meminfo);
-@@ -4239,6 +4244,9 @@ void si_meminfo_node(struct sysinfo *val
+@@ -4229,6 +4237,9 @@ void si_meminfo_node(struct sysinfo *val
        val->freehigh = free_highpages;
  #endif
        val->mem_unit = PAGE_SIZE;
@@ -22831,9 +22974,9 @@ diff -NurpP --minimal linux-4.9.76/mm/page_alloc.c linux-4.9.76-vs2.3.9.5/mm/pag
  }
  #endif
  
-diff -NurpP --minimal linux-4.9.76/mm/pgtable-generic.c linux-4.9.76-vs2.3.9.5/mm/pgtable-generic.c
---- linux-4.9.76/mm/pgtable-generic.c  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/pgtable-generic.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/mm/pgtable-generic.c linux-4.9/mm/pgtable-generic.c
+--- linux-4.9/mm/pgtable-generic.c     2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/mm/pgtable-generic.c     2021-02-24 15:47:45.127744035 +0100
 @@ -6,6 +6,8 @@
   *  Copyright (C) 2010  Linus Torvalds
   */
@@ -22843,10 +22986,10 @@ diff -NurpP --minimal linux-4.9.76/mm/pgtable-generic.c linux-4.9.76-vs2.3.9.5/m
  #include <linux/pagemap.h>
  #include <asm/tlb.h>
  #include <asm-generic/pgtable.h>
-diff -NurpP --minimal linux-4.9.76/mm/shmem.c linux-4.9.76-vs2.3.9.5/mm/shmem.c
---- linux-4.9.76/mm/shmem.c    2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/shmem.c  2018-01-10 08:36:49.000000000 +0000
-@@ -2785,7 +2785,7 @@ static int shmem_statfs(struct dentry *d
+diff -urNp -x '*.orig' linux-4.9/mm/shmem.c linux-4.9/mm/shmem.c
+--- linux-4.9/mm/shmem.c       2021-02-24 15:47:32.537350160 +0100
++++ linux-4.9/mm/shmem.c       2021-02-24 15:47:45.127744035 +0100
+@@ -2806,7 +2806,7 @@ static int shmem_statfs(struct dentry *d
  {
        struct shmem_sb_info *sbinfo = SHMEM_SB(dentry->d_sb);
  
@@ -22855,7 +22998,7 @@ diff -NurpP --minimal linux-4.9.76/mm/shmem.c linux-4.9.76-vs2.3.9.5/mm/shmem.c
        buf->f_bsize = PAGE_SIZE;
        buf->f_namelen = NAME_MAX;
        if (sbinfo->max_blocks) {
-@@ -3606,7 +3606,7 @@ int shmem_fill_super(struct super_block
+@@ -3631,7 +3631,7 @@ int shmem_fill_super(struct super_block
        sb->s_maxbytes = MAX_LFS_FILESIZE;
        sb->s_blocksize = PAGE_SIZE;
        sb->s_blocksize_bits = PAGE_SHIFT;
@@ -22864,9 +23007,9 @@ diff -NurpP --minimal linux-4.9.76/mm/shmem.c linux-4.9.76-vs2.3.9.5/mm/shmem.c
        sb->s_op = &shmem_ops;
        sb->s_time_gran = 1;
  #ifdef CONFIG_TMPFS_XATTR
-diff -NurpP --minimal linux-4.9.76/mm/slab.c linux-4.9.76-vs2.3.9.5/mm/slab.c
---- linux-4.9.76/mm/slab.c     2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/slab.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/mm/slab.c linux-4.9/mm/slab.c
+--- linux-4.9/mm/slab.c        2021-02-24 15:47:32.537350160 +0100
++++ linux-4.9/mm/slab.c        2021-02-24 15:47:45.131077472 +0100
 @@ -307,6 +307,8 @@ static void kmem_cache_node_init(struct
  #define STATS_INC_FREEMISS(x) do { } while (0)
  #endif
@@ -22876,7 +23019,7 @@ diff -NurpP --minimal linux-4.9.76/mm/slab.c linux-4.9.76-vs2.3.9.5/mm/slab.c
  #if DEBUG
  
  /*
-@@ -3341,6 +3343,7 @@ slab_alloc_node(struct kmem_cache *cache
+@@ -3344,6 +3346,7 @@ slab_alloc_node(struct kmem_cache *cache
        /* ___cache_alloc_node can fall back to other nodes */
        ptr = ____cache_alloc_node(cachep, flags, nodeid);
    out:
@@ -22884,7 +23027,7 @@ diff -NurpP --minimal linux-4.9.76/mm/slab.c linux-4.9.76-vs2.3.9.5/mm/slab.c
        local_irq_restore(save_flags);
        ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, caller);
  
-@@ -3522,6 +3525,7 @@ void ___cache_free(struct kmem_cache *ca
+@@ -3525,6 +3528,7 @@ void ___cache_free(struct kmem_cache *ca
        check_irq_off();
        kmemleak_free_recursive(objp, cachep->flags);
        objp = cache_free_debugcheck(cachep, objp, caller);
@@ -22892,9 +23035,9 @@ diff -NurpP --minimal linux-4.9.76/mm/slab.c linux-4.9.76-vs2.3.9.5/mm/slab.c
  
        kmemcheck_slab_free(cachep, objp, cachep->object_size);
  
-diff -NurpP --minimal linux-4.9.76/mm/slab_vs.h linux-4.9.76-vs2.3.9.5/mm/slab_vs.h
---- linux-4.9.76/mm/slab_vs.h  1970-01-01 00:00:00.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/slab_vs.h        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/mm/slab_vs.h linux-4.9/mm/slab_vs.h
+--- linux-4.9/mm/slab_vs.h     1970-01-01 01:00:00.000000000 +0100
++++ linux-4.9/mm/slab_vs.h     2021-02-24 15:47:45.131077472 +0100
 @@ -0,0 +1,29 @@
 +
 +#include <linux/vserver/context.h>
@@ -22925,9 +23068,9 @@ diff -NurpP --minimal linux-4.9.76/mm/slab_vs.h linux-4.9.76-vs2.3.9.5/mm/slab_v
 +      atomic_sub(cachep->size, &vxi->cacct.slab[what]);
 +}
 +
-diff -NurpP --minimal linux-4.9.76/mm/swapfile.c linux-4.9.76-vs2.3.9.5/mm/swapfile.c
---- linux-4.9.76/mm/swapfile.c 2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/mm/swapfile.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/mm/swapfile.c linux-4.9/mm/swapfile.c
+--- linux-4.9/mm/swapfile.c    2021-02-24 15:47:32.540683597 +0100
++++ linux-4.9/mm/swapfile.c    2021-02-24 15:47:45.131077472 +0100
 @@ -39,6 +39,7 @@
  #include <asm/tlbflush.h>
  #include <linux/swapops.h>
@@ -22953,7 +23096,7 @@ diff -NurpP --minimal linux-4.9.76/mm/swapfile.c linux-4.9.76-vs2.3.9.5/mm/swapf
                return 0;
        }
  
-@@ -2612,6 +2623,8 @@ void si_swapinfo(struct sysinfo *val)
+@@ -2630,6 +2641,8 @@ void si_swapinfo(struct sysinfo *val)
        val->freeswap = atomic_long_read(&nr_swap_pages) + nr_to_be_unused;
        val->totalswap = total_swap_pages + nr_to_be_unused;
        spin_unlock(&swap_lock);
@@ -22962,9 +23105,9 @@ diff -NurpP --minimal linux-4.9.76/mm/swapfile.c linux-4.9.76-vs2.3.9.5/mm/swapf
  }
  
  /*
-diff -NurpP --minimal linux-4.9.76/net/bridge/br_multicast.c linux-4.9.76-vs2.3.9.5/net/bridge/br_multicast.c
---- linux-4.9.76/net/bridge/br_multicast.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/bridge/br_multicast.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/bridge/br_multicast.c linux-4.9/net/bridge/br_multicast.c
+--- linux-4.9/net/bridge/br_multicast.c        2021-02-24 15:47:32.564017661 +0100
++++ linux-4.9/net/bridge/br_multicast.c        2021-02-24 15:47:45.131077472 +0100
 @@ -465,7 +465,7 @@ static struct sk_buff *br_ip6_multicast_
        ip6h->hop_limit = 1;
        ipv6_addr_set(&ip6h->daddr, htonl(0xff020000), 0, 0, htonl(1));
@@ -22974,10 +23117,10 @@ diff -NurpP --minimal linux-4.9.76/net/bridge/br_multicast.c linux-4.9.76-vs2.3.
                kfree_skb(skb);
                br->has_ipv6_addr = 0;
                return NULL;
-diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/core/dev.c
---- linux-4.9.76/net/core/dev.c        2018-01-13 21:29:01.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/core/dev.c      2018-01-10 02:50:49.000000000 +0000
-@@ -126,6 +126,7 @@
+diff -urNp -x '*.orig' linux-4.9/net/core/dev.c linux-4.9/net/core/dev.c
+--- linux-4.9/net/core/dev.c   2021-02-24 15:47:33.077367054 +0100
++++ linux-4.9/net/core/dev.c   2021-02-24 15:47:45.131077472 +0100
+@@ -127,6 +127,7 @@
  #include <linux/in.h>
  #include <linux/jhash.h>
  #include <linux/random.h>
@@ -22985,7 +23128,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
  #include <trace/events/napi.h>
  #include <trace/events/net.h>
  #include <trace/events/skb.h>
-@@ -730,7 +731,8 @@ struct net_device *__dev_get_by_name(str
+@@ -734,7 +735,8 @@ struct net_device *__dev_get_by_name(str
        struct hlist_head *head = dev_name_hash(net, name);
  
        hlist_for_each_entry(dev, head, name_hlist)
@@ -22995,7 +23138,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
                        return dev;
  
        return NULL;
-@@ -755,7 +757,8 @@ struct net_device *dev_get_by_name_rcu(s
+@@ -759,7 +761,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, head, name_hlist)
@@ -23005,7 +23148,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
                        return dev;
  
        return NULL;
-@@ -805,7 +808,8 @@ struct net_device *__dev_get_by_index(st
+@@ -809,7 +812,8 @@ struct net_device *__dev_get_by_index(st
        struct hlist_head *head = dev_index_hash(net, ifindex);
  
        hlist_for_each_entry(dev, head, index_hlist)
@@ -23015,7 +23158,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
                        return dev;
  
        return NULL;
-@@ -823,7 +827,7 @@ EXPORT_SYMBOL(__dev_get_by_index);
+@@ -827,7 +831,7 @@ EXPORT_SYMBOL(__dev_get_by_index);
   *    about locking. The caller must hold RCU lock.
   */
  
@@ -23024,7 +23167,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
  {
        struct net_device *dev;
        struct hlist_head *head = dev_index_hash(net, ifindex);
-@@ -834,6 +838,16 @@ struct net_device *dev_get_by_index_rcu(
+@@ -838,6 +842,16 @@ struct net_device *dev_get_by_index_rcu(
  
        return NULL;
  }
@@ -23041,7 +23184,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
  EXPORT_SYMBOL(dev_get_by_index_rcu);
  
  
-@@ -916,7 +930,8 @@ struct net_device *dev_getbyhwaddr_rcu(s
+@@ -915,7 +929,8 @@ struct net_device *dev_getbyhwaddr_rcu(s
  
        for_each_netdev_rcu(net, dev)
                if (dev->type == type &&
@@ -23051,7 +23194,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
                        return dev;
  
        return NULL;
-@@ -928,9 +943,11 @@ struct net_device *__dev_getfirstbyhwtyp
+@@ -927,9 +942,11 @@ struct net_device *__dev_getfirstbyhwtyp
        struct net_device *dev;
  
        ASSERT_RTNL();
@@ -23065,7 +23208,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
  
        return NULL;
  }
-@@ -942,7 +959,8 @@ struct net_device *dev_getfirstbyhwtype(
+@@ -941,7 +958,8 @@ struct net_device *dev_getfirstbyhwtype(
  
        rcu_read_lock();
        for_each_netdev_rcu(net, dev)
@@ -23075,7 +23218,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
                        dev_hold(dev);
                        ret = dev;
                        break;
-@@ -972,7 +990,8 @@ struct net_device *__dev_get_by_flags(st
+@@ -971,7 +989,8 @@ struct net_device *__dev_get_by_flags(st
  
        ret = NULL;
        for_each_netdev(net, dev) {
@@ -23085,7 +23228,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
                        ret = dev;
                        break;
                }
-@@ -1050,6 +1069,8 @@ static int __dev_alloc_name(struct net *
+@@ -1049,6 +1068,8 @@ static int __dev_alloc_name(struct net *
                                continue;
                        if (i < 0 || i >= max_netdevices)
                                continue;
@@ -23094,9 +23237,9 @@ diff -NurpP --minimal linux-4.9.76/net/core/dev.c linux-4.9.76-vs2.3.9.5/net/cor
  
                        /*  avoid cases where sscanf is not exact inverse of printf */
                        snprintf(buf, IFNAMSIZ, name, i);
-diff -NurpP --minimal linux-4.9.76/net/core/net-procfs.c linux-4.9.76-vs2.3.9.5/net/core/net-procfs.c
---- linux-4.9.76/net/core/net-procfs.c 2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/core/net-procfs.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/core/net-procfs.c linux-4.9/net/core/net-procfs.c
+--- linux-4.9/net/core/net-procfs.c    2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/core/net-procfs.c    2021-02-24 15:47:45.131077472 +0100
 @@ -1,6 +1,7 @@
  #include <linux/netdevice.h>
  #include <linux/proc_fs.h>
@@ -23111,18 +23254,18 @@ diff -NurpP --minimal linux-4.9.76/net/core/net-procfs.c linux-4.9.76-vs2.3.9.5/
        struct rtnl_link_stats64 temp;
 -      const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
 +      const struct rtnl_link_stats64 *stats;
-+
 +      /* device visible inside network context? */
 +      if (!nx_dev_visible(current_nx_info(), dev))
 +              return;
++
 +      stats = dev_get_stats(dev, &temp);
        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-4.9.76/net/core/rtnetlink.c linux-4.9.76-vs2.3.9.5/net/core/rtnetlink.c
---- linux-4.9.76/net/core/rtnetlink.c  2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/core/rtnetlink.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/core/rtnetlink.c linux-4.9/net/core/rtnetlink.c
+--- linux-4.9/net/core/rtnetlink.c     2021-02-24 15:47:32.577351411 +0100
++++ linux-4.9/net/core/rtnetlink.c     2021-02-24 15:47:45.134410910 +0100
 @@ -1615,6 +1615,8 @@ static int rtnl_dump_ifinfo(struct sk_bu
                                goto cont;
                        if (idx < s_idx)
@@ -23132,7 +23275,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/rtnetlink.c linux-4.9.76-vs2.3.9.5/n
                        err = rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK,
                                               NETLINK_CB(cb->skb).portid,
                                               cb->nlh->nlmsg_seq, 0,
-@@ -2811,6 +2813,9 @@ void rtmsg_ifinfo(int type, struct net_d
+@@ -2841,6 +2843,9 @@ void rtmsg_ifinfo(int type, struct net_d
  {
        struct sk_buff *skb;
  
@@ -23142,9 +23285,9 @@ diff -NurpP --minimal linux-4.9.76/net/core/rtnetlink.c linux-4.9.76-vs2.3.9.5/n
        if (dev->reg_state != NETREG_REGISTERED)
                return;
  
-diff -NurpP --minimal linux-4.9.76/net/core/sock.c linux-4.9.76-vs2.3.9.5/net/core/sock.c
---- linux-4.9.76/net/core/sock.c       2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/core/sock.c     2018-01-13 00:48:01.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/core/sock.c linux-4.9/net/core/sock.c
+--- linux-4.9/net/core/sock.c  2021-02-24 15:47:32.580684849 +0100
++++ linux-4.9/net/core/sock.c  2021-02-24 15:47:45.134410910 +0100
 @@ -135,6 +135,10 @@
  
  #include <linux/filter.h>
@@ -23156,17 +23299,18 @@ diff -NurpP --minimal linux-4.9.76/net/core/sock.c linux-4.9.76-vs2.3.9.5/net/co
  
  #include <trace/events/sock.h>
  
-@@ -1339,6 +1343,8 @@ static struct sock *sk_prot_alloc(struct
+@@ -1339,6 +1343,9 @@ static struct sock *sk_prot_alloc(struct
+               if (!try_module_get(prot->owner))
                        goto out_free_sec;
                sk_tx_queue_clear(sk);
-       }
++
 +              sock_vx_init(sk);
 +              sock_nx_init(sk);
+       }
  
        return sk;
+@@ -1444,6 +1451,11 @@ static void __sk_destruct(struct rcu_hea
  
-@@ -1444,6 +1450,11 @@ static void __sk_destruct(struct rcu_hea
-       put_pid(sk->sk_peer_pid);
        if (likely(sk->sk_net_refcnt))
                put_net(sock_net(sk));
 +      vx_sock_dec(sk);
@@ -23177,7 +23321,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/sock.c linux-4.9.76-vs2.3.9.5/net/co
        sk_prot_free(sk->sk_prot_creator, sk);
  }
  
-@@ -1498,6 +1509,8 @@ struct sock *sk_clone_lock(const struct
+@@ -1505,6 +1517,8 @@ struct sock *sk_clone_lock(const struct
                /* SANITY */
                if (likely(newsk->sk_net_refcnt))
                        get_net(sock_net(newsk));
@@ -23186,7 +23330,7 @@ diff -NurpP --minimal linux-4.9.76/net/core/sock.c linux-4.9.76-vs2.3.9.5/net/co
                sk_node_init(&newsk->sk_node);
                sock_lock_init(newsk);
                bh_lock_sock(newsk);
-@@ -1568,6 +1581,12 @@ struct sock *sk_clone_lock(const struct
+@@ -1575,6 +1589,12 @@ struct sock *sk_clone_lock(const struct
                smp_wmb();
                atomic_set(&newsk->sk_refcnt, 2);
  
@@ -23199,9 +23343,9 @@ diff -NurpP --minimal linux-4.9.76/net/core/sock.c linux-4.9.76-vs2.3.9.5/net/co
                /*
                 * Increment the counter in the same struct proto as the master
                 * sock (sk_refcnt_debug_inc uses newsk->sk_prot->socks, that
-@@ -2468,6 +2487,12 @@ void sock_init_data(struct socket *sock,
-       sk->sk_stamp = ktime_set(-1L, 0);
+@@ -2500,6 +2520,12 @@ void sock_init_data(struct socket *sock,
+       seqlock_init(&sk->sk_stamp_seq);
+ #endif
  
 +      set_vx_info(&sk->sk_vx_info, current_vx_info());
 +      sk->sk_xid = vx_current_xid();
@@ -23212,9 +23356,9 @@ diff -NurpP --minimal linux-4.9.76/net/core/sock.c linux-4.9.76-vs2.3.9.5/net/co
  #ifdef CONFIG_NET_RX_BUSY_POLL
        sk->sk_napi_id          =       0;
        sk->sk_ll_usec          =       sysctl_net_busy_read;
-diff -NurpP --minimal linux-4.9.76/net/ipv4/af_inet.c linux-4.9.76-vs2.3.9.5/net/ipv4/af_inet.c
---- linux-4.9.76/net/ipv4/af_inet.c    2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/af_inet.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/af_inet.c linux-4.9/net/ipv4/af_inet.c
+--- linux-4.9/net/ipv4/af_inet.c       2021-02-24 15:47:32.587351724 +0100
++++ linux-4.9/net/ipv4/af_inet.c       2021-02-24 15:47:45.134410910 +0100
 @@ -303,10 +303,15 @@ lookup_protocol:
        }
  
@@ -23293,10 +23437,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/af_inet.c linux-4.9.76-vs2.3.9.5/net
  
  const struct proto_ops inet_stream_ops = {
        .family            = PF_INET,
-diff -NurpP --minimal linux-4.9.76/net/ipv4/arp.c linux-4.9.76-vs2.3.9.5/net/ipv4/arp.c
---- linux-4.9.76/net/ipv4/arp.c        2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/arp.c      2018-01-10 02:50:49.000000000 +0000
-@@ -1303,6 +1303,7 @@ static void arp_format_neigh_entry(struc
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/arp.c linux-4.9/net/ipv4/arp.c
+--- linux-4.9/net/ipv4/arp.c   2021-02-24 15:47:32.587351724 +0100
++++ linux-4.9/net/ipv4/arp.c   2021-02-24 15:47:45.134410910 +0100
+@@ -1320,6 +1320,7 @@ static void arp_format_neigh_entry(struc
        struct net_device *dev = n->dev;
        int hatype = dev->type;
  
@@ -23304,7 +23448,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/arp.c linux-4.9.76-vs2.3.9.5/net/ipv
        read_lock(&n->lock);
        /* Convert hardware address to XX:XX:XX:XX ... form. */
  #if IS_ENABLED(CONFIG_AX25)
-@@ -1334,6 +1335,7 @@ static void arp_format_pneigh_entry(stru
+@@ -1351,6 +1352,7 @@ static void arp_format_pneigh_entry(stru
        int hatype = dev ? dev->type : 0;
        char tbuf[16];
  
@@ -23312,10 +23456,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/arp.c linux-4.9.76-vs2.3.9.5/net/ipv
        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-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net/ipv4/devinet.c
---- linux-4.9.76/net/ipv4/devinet.c    2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/devinet.c  2018-01-10 02:50:49.000000000 +0000
-@@ -538,6 +538,7 @@ struct in_device *inetdev_by_index(struc
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/devinet.c linux-4.9/net/ipv4/devinet.c
+--- linux-4.9/net/ipv4/devinet.c       2021-02-24 15:47:32.587351724 +0100
++++ linux-4.9/net/ipv4/devinet.c       2021-02-24 15:47:45.134410910 +0100
+@@ -547,6 +547,7 @@ struct in_device *inetdev_by_index(struc
  }
  EXPORT_SYMBOL(inetdev_by_index);
  
@@ -23323,7 +23467,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
  /* Called only from RTNL semaphored context. No locks. */
  
  struct in_ifaddr *inet_ifa_byprefix(struct in_device *in_dev, __be32 prefix,
-@@ -992,6 +993,8 @@ int devinet_ioctl(struct net *net, unsig
+@@ -1006,6 +1007,8 @@ int devinet_ioctl(struct net *net, unsig
  
        in_dev = __in_dev_get_rtnl(dev);
        if (in_dev) {
@@ -23332,7 +23476,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
                if (tryaddrmatch) {
                        /* Matthias Andree */
                        /* compare label and address (4.4BSD style) */
-@@ -1000,6 +1003,8 @@ int devinet_ioctl(struct net *net, unsig
+@@ -1014,6 +1017,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) {
@@ -23341,7 +23485,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
                                if (!strcmp(ifr.ifr_name, ifa->ifa_label) &&
                                    sin_orig.sin_addr.s_addr ==
                                                        ifa->ifa_local) {
-@@ -1012,9 +1017,12 @@ int devinet_ioctl(struct net *net, unsig
+@@ -1026,9 +1031,12 @@ int devinet_ioctl(struct net *net, unsig
                   comparing just the label */
                if (!ifa) {
                        for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;
@@ -23355,7 +23499,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
                }
        }
  
-@@ -1168,6 +1176,8 @@ static int inet_gifconf(struct net_devic
+@@ -1182,6 +1190,8 @@ static int inet_gifconf(struct net_devic
                goto out;
  
        for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) {
@@ -23364,7 +23508,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
                if (!buf) {
                        done += sizeof(ifr);
                        continue;
-@@ -1595,6 +1605,7 @@ static int inet_dump_ifaddr(struct sk_bu
+@@ -1604,6 +1614,7 @@ static int inet_dump_ifaddr(struct sk_bu
        struct net_device *dev;
        struct in_device *in_dev;
        struct in_ifaddr *ifa;
@@ -23372,7 +23516,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
        struct hlist_head *head;
  
        s_h = cb->args[0];
-@@ -1618,6 +1629,8 @@ static int inet_dump_ifaddr(struct sk_bu
+@@ -1627,6 +1638,8 @@ static int inet_dump_ifaddr(struct sk_bu
  
                        for (ifa = in_dev->ifa_list, ip_idx = 0; ifa;
                             ifa = ifa->ifa_next, ip_idx++) {
@@ -23381,10 +23525,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/devinet.c linux-4.9.76-vs2.3.9.5/net
                                if (ip_idx < s_ip_idx)
                                        continue;
                                if (inet_fill_ifaddr(skb, ifa,
-diff -NurpP --minimal linux-4.9.76/net/ipv4/fib_trie.c linux-4.9.76-vs2.3.9.5/net/ipv4/fib_trie.c
---- linux-4.9.76/net/ipv4/fib_trie.c   2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/fib_trie.c 2018-01-10 02:50:49.000000000 +0000
-@@ -2617,6 +2617,7 @@ static int fib_route_seq_show(struct seq
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/fib_trie.c linux-4.9/net/ipv4/fib_trie.c
+--- linux-4.9/net/ipv4/fib_trie.c      2021-02-24 15:47:32.590685161 +0100
++++ linux-4.9/net/ipv4/fib_trie.c      2021-02-24 15:47:45.134410910 +0100
+@@ -2630,6 +2630,7 @@ static int fib_route_seq_show(struct seq
  
                seq_setwidth(seq, 127);
  
@@ -23392,9 +23536,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/fib_trie.c linux-4.9.76-vs2.3.9.5/ne
                if (fi)
                        seq_printf(seq,
                                   "%s\t%08X\t%08X\t%04X\t%d\t%u\t"
-diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_connection_sock.c linux-4.9.76-vs2.3.9.5/net/ipv4/inet_connection_sock.c
---- linux-4.9.76/net/ipv4/inet_connection_sock.c       2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/inet_connection_sock.c     2018-01-13 20:20:30.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/inet_connection_sock.c linux-4.9/net/ipv4/inet_connection_sock.c
+--- linux-4.9/net/ipv4/inet_connection_sock.c  2021-02-24 15:47:32.590685161 +0100
++++ linux-4.9/net/ipv4/inet_connection_sock.c  2021-02-24 15:47:45.134410910 +0100
 @@ -16,6 +16,7 @@
  #include <linux/module.h>
  #include <linux/jhash.h>
@@ -23429,9 +23573,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_connection_sock.c linux-4.9.76-
                                        break;
                        }
                }
-diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_diag.c linux-4.9.76-vs2.3.9.5/net/ipv4/inet_diag.c
---- linux-4.9.76/net/ipv4/inet_diag.c  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/inet_diag.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/inet_diag.c linux-4.9/net/ipv4/inet_diag.c
+--- linux-4.9/net/ipv4/inet_diag.c     2021-02-24 15:47:32.590685161 +0100
++++ linux-4.9/net/ipv4/inet_diag.c     2021-02-24 15:47:45.134410910 +0100
 @@ -31,6 +31,8 @@
  
  #include <linux/inet.h>
@@ -23441,16 +23585,28 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_diag.c linux-4.9.76-vs2.3.9.5/n
  
  #include <linux/inet_diag.h>
  #include <linux/sock_diag.h>
-@@ -879,6 +881,8 @@ void inet_diag_dump_icsk(struct inet_has
+@@ -87,8 +89,8 @@ void inet_diag_msg_common_fill(struct in
+       memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
+       memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
+-      r->id.idiag_src[0] = sk->sk_rcv_saddr;
+-      r->id.idiag_dst[0] = sk->sk_daddr;
++      r->id.idiag_src[0] = nx_map_sock_lback(sk->sk_nx_info, sk->sk_rcv_saddr);
++      r->id.idiag_dst[0] = nx_map_sock_lback(sk->sk_nx_info, sk->sk_daddr);
+       }
+ }
+ EXPORT_SYMBOL_GPL(inet_diag_msg_common_fill);
+@@ -882,6 +884,9 @@ void inet_diag_dump_icsk(struct inet_has
                                if (!net_eq(sock_net(sk), net))
                                        continue;
  
 +                              if (!nx_check(sk->sk_nid, VS_WATCH_P | VS_IDENT))
 +                                      continue;
++
                                if (num < s_num) {
                                        num++;
                                        continue;
-@@ -941,6 +945,8 @@ skip_listen_ht:
+@@ -944,6 +949,8 @@ skip_listen_ht:
  
                        if (!net_eq(sock_net(sk), net))
                                continue;
@@ -23459,9 +23615,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_diag.c linux-4.9.76-vs2.3.9.5/n
                        if (num < s_num)
                                goto next_normal;
                        state = (sk->sk_state == TCP_TIME_WAIT) ?
-diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_hashtables.c linux-4.9.76-vs2.3.9.5/net/ipv4/inet_hashtables.c
---- linux-4.9.76/net/ipv4/inet_hashtables.c    2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/inet_hashtables.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/inet_hashtables.c linux-4.9/net/ipv4/inet_hashtables.c
+--- linux-4.9/net/ipv4/inet_hashtables.c       2021-02-24 15:47:32.594018600 +0100
++++ linux-4.9/net/ipv4/inet_hashtables.c       2021-02-24 15:47:45.134410910 +0100
 @@ -24,6 +24,7 @@
  #include <net/inet_connection_sock.h>
  #include <net/inet_hashtables.h>
@@ -23470,7 +23626,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_hashtables.c linux-4.9.76-vs2.3
  #include <net/ip.h>
  #include <net/tcp.h>
  #include <net/sock_reuseport.h>
-@@ -186,6 +187,11 @@ static inline int compute_score(struct s
+@@ -187,6 +188,11 @@ static inline int compute_score(struct s
                        if (rcv_saddr != daddr)
                                return -1;
                        score += 4;
@@ -23482,7 +23638,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_hashtables.c linux-4.9.76-vs2.3
                }
                if (sk->sk_bound_dev_if || exact_dif) {
                        if (sk->sk_bound_dev_if != dif)
-@@ -300,6 +306,7 @@ begin:
+@@ -302,6 +308,7 @@ begin:
                        goto found;
                }
        }
@@ -23490,9 +23646,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/inet_hashtables.c linux-4.9.76-vs2.3
        /*
         * if the nulls value we got at the end of this lookup is
         * not the expected one, we must restart lookup.
-diff -NurpP --minimal linux-4.9.76/net/ipv4/netfilter.c linux-4.9.76-vs2.3.9.5/net/ipv4/netfilter.c
---- linux-4.9.76/net/ipv4/netfilter.c  2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/netfilter.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/netfilter.c linux-4.9/net/ipv4/netfilter.c
+--- linux-4.9/net/ipv4/netfilter.c     2021-02-24 15:47:32.597352037 +0100
++++ linux-4.9/net/ipv4/netfilter.c     2021-02-24 15:47:45.134410910 +0100
 @@ -11,7 +11,7 @@
  #include <linux/skbuff.h>
  #include <linux/gfp.h>
@@ -23502,9 +23658,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/netfilter.c linux-4.9.76-vs2.3.9.5/n
  #include <net/xfrm.h>
  #include <net/ip.h>
  #include <net/netfilter/nf_queue.h>
-diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv4/raw.c
---- linux-4.9.76/net/ipv4/raw.c        2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/raw.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/raw.c linux-4.9/net/ipv4/raw.c
+--- linux-4.9/net/ipv4/raw.c   2021-02-24 15:47:32.600685475 +0100
++++ linux-4.9/net/ipv4/raw.c   2021-02-24 15:47:45.137744347 +0100
 @@ -128,7 +128,7 @@ static struct sock *__raw_v4_lookup(stru
  
                if (net_eq(sock_net(sk), net) && inet->inet_num == num  &&
@@ -23527,7 +23683,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
        err = NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_OUT,
                      net, sk, skb, NULL, rt->dst.dev,
                      dst_output);
-@@ -623,6 +629,16 @@ static int raw_sendmsg(struct sock *sk,
+@@ -625,6 +631,16 @@ static int raw_sendmsg(struct sock *sk,
                        goto done;
        }
  
@@ -23544,7 +23700,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
        security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
        rt = ip_route_output_flow(net, &fl4, sk);
        if (IS_ERR(rt)) {
-@@ -701,17 +717,19 @@ static int raw_bind(struct sock *sk, str
+@@ -703,17 +719,19 @@ static int raw_bind(struct sock *sk, str
  {
        struct inet_sock *inet = inet_sk(sk);
        struct sockaddr_in *addr = (struct sockaddr_in *) uaddr;
@@ -23567,7 +23723,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
        if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
                inet->inet_saddr = 0;  /* Use device */
        sk_dst_reset(sk);
-@@ -760,7 +778,8 @@ static int raw_recvmsg(struct sock *sk,
+@@ -762,7 +780,8 @@ static int raw_recvmsg(struct sock *sk,
        /* Copy the address. */
        if (sin) {
                sin->sin_family = AF_INET;
@@ -23577,7 +23733,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
                sin->sin_port = 0;
                memset(&sin->sin_zero, 0, sizeof(sin->sin_zero));
                *addr_len = sizeof(*sin);
-@@ -956,7 +975,8 @@ static struct sock *raw_get_first(struct
+@@ -958,7 +977,8 @@ static struct sock *raw_get_first(struct
        for (state->bucket = 0; state->bucket < RAW_HTABLE_SIZE;
                        ++state->bucket) {
                sk_for_each(sk, &state->h->ht[state->bucket])
@@ -23587,7 +23743,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
                                goto found;
        }
        sk = NULL;
-@@ -972,7 +992,8 @@ static struct sock *raw_get_next(struct
+@@ -974,7 +994,8 @@ static struct sock *raw_get_next(struct
                sk = sk_next(sk);
  try_again:
                ;
@@ -23597,10 +23753,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
  
        if (!sk && ++state->bucket < RAW_HTABLE_SIZE) {
                sk = sk_head(&state->h->ht[state->bucket]);
-diff -NurpP --minimal linux-4.9.76/net/ipv4/route.c linux-4.9.76-vs2.3.9.5/net/ipv4/route.c
---- linux-4.9.76/net/ipv4/route.c      2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/route.c    2018-01-10 02:50:49.000000000 +0000
-@@ -2238,7 +2238,7 @@ struct rtable *__ip_route_output_key_has
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/route.c linux-4.9/net/ipv4/route.c
+--- linux-4.9/net/ipv4/route.c 2021-02-24 15:47:32.600685475 +0100
++++ linux-4.9/net/ipv4/route.c 2021-02-24 15:47:45.137744347 +0100
+@@ -2287,7 +2287,7 @@ struct rtable *__ip_route_output_key_has
  
  
        if (fl4->flowi4_oif) {
@@ -23609,9 +23765,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/route.c linux-4.9.76-vs2.3.9.5/net/i
                rth = ERR_PTR(-ENODEV);
                if (!dev_out)
                        goto out;
-diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp.c linux-4.9.76-vs2.3.9.5/net/ipv4/tcp.c
---- linux-4.9.76/net/ipv4/tcp.c        2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/tcp.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/tcp.c linux-4.9/net/ipv4/tcp.c
+--- linux-4.9/net/ipv4/tcp.c   2021-02-24 15:47:32.600685475 +0100
++++ linux-4.9/net/ipv4/tcp.c   2021-02-24 15:47:45.137744347 +0100
 @@ -269,6 +269,7 @@
  #include <linux/err.h>
  #include <linux/time.h>
@@ -23620,10 +23776,23 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp.c linux-4.9.76-vs2.3.9.5/net/ipv
  
  #include <net/icmp.h>
  #include <net/inet_common.h>
-diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_ipv4.c linux-4.9.76-vs2.3.9.5/net/ipv4/tcp_ipv4.c
---- linux-4.9.76/net/ipv4/tcp_ipv4.c   2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/tcp_ipv4.c 2018-01-10 02:50:49.000000000 +0000
-@@ -1982,6 +1982,11 @@ static void *established_get_first(struc
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/tcp_ipv4.c linux-4.9/net/ipv4/tcp_ipv4.c
+--- linux-4.9/net/ipv4/tcp_ipv4.c      2021-02-24 15:47:32.604018912 +0100
++++ linux-4.9/net/ipv4/tcp_ipv4.c      2021-02-24 15:47:45.137744347 +0100
+@@ -1944,8 +1944,12 @@ get_head:
+       sk = sk_nulls_next(sk);
+ get_sk:
+       sk_nulls_for_each_from(sk, node) {
++              vxdprintk(VXD_CBIT(net, 6), "sk: %p [#%d] (from %d)",
++                      sk, sk->sk_nid, nx_current_nid());
+               if (!net_eq(sock_net(sk), net))
+                       continue;
++              if (!nx_check(sk->sk_nid, VS_WATCH_P | VS_IDENT))
++                      continue;
+               if (sk->sk_family == st->family)
+                       return sk;
+       }
+@@ -1999,6 +2003,11 @@ static void *established_get_first(struc
  
                spin_lock_bh(lock);
                sk_nulls_for_each(sk, node, &tcp_hashinfo.ehash[st->bucket].chain) {
@@ -23635,7 +23804,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_ipv4.c linux-4.9.76-vs2.3.9.5/ne
                        if (sk->sk_family != st->family ||
                            !net_eq(sock_net(sk), net)) {
                                continue;
-@@ -2008,6 +2013,11 @@ static void *established_get_next(struct
+@@ -2025,6 +2034,11 @@ static void *established_get_next(struct
        sk = sk_nulls_next(sk);
  
        sk_nulls_for_each_from(sk, node) {
@@ -23647,7 +23816,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_ipv4.c linux-4.9.76-vs2.3.9.5/ne
                if (sk->sk_family == st->family && net_eq(sock_net(sk), net))
                        return sk;
        }
-@@ -2199,9 +2209,9 @@ static void get_openreq4(const struct re
+@@ -2216,9 +2230,9 @@ static void get_openreq4(const struct re
        seq_printf(f, "%4d: %08X:%04X %08X:%04X"
                " %02X %08X:%08X %02X:%08lX %08X %5u %8d %u %d %pK",
                i,
@@ -23659,7 +23828,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_ipv4.c linux-4.9.76-vs2.3.9.5/ne
                ntohs(ireq->ir_rmt_port),
                TCP_SYN_RECV,
                0, 0, /* could print option size, but that is af dependent. */
-@@ -2224,8 +2234,8 @@ static void get_tcp4_sock(struct sock *s
+@@ -2241,8 +2255,8 @@ static void get_tcp4_sock(struct sock *s
        const struct inet_connection_sock *icsk = inet_csk(sk);
        const struct inet_sock *inet = inet_sk(sk);
        const struct fastopen_queue *fastopenq = &icsk->icsk_accept_queue.fastopenq;
@@ -23670,7 +23839,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_ipv4.c linux-4.9.76-vs2.3.9.5/ne
        __u16 destp = ntohs(inet->inet_dport);
        __u16 srcp = ntohs(inet->inet_sport);
        int rx_queue;
-@@ -2284,8 +2294,8 @@ static void get_timewait4_sock(const str
+@@ -2301,8 +2315,8 @@ static void get_timewait4_sock(const str
        __be32 dest, src;
        __u16 destp, srcp;
  
@@ -23681,9 +23850,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_ipv4.c linux-4.9.76-vs2.3.9.5/ne
        destp = ntohs(tw->tw_dport);
        srcp  = ntohs(tw->tw_sport);
  
-diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_minisocks.c linux-4.9.76-vs2.3.9.5/net/ipv4/tcp_minisocks.c
---- linux-4.9.76/net/ipv4/tcp_minisocks.c      2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/tcp_minisocks.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/tcp_minisocks.c linux-4.9/net/ipv4/tcp_minisocks.c
+--- linux-4.9/net/ipv4/tcp_minisocks.c 2021-02-24 15:47:32.604018912 +0100
++++ linux-4.9/net/ipv4/tcp_minisocks.c 2021-02-24 15:47:45.137744347 +0100
 @@ -23,6 +23,9 @@
  #include <linux/slab.h>
  #include <linux/sysctl.h>
@@ -23694,7 +23863,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_minisocks.c linux-4.9.76-vs2.3.9
  #include <net/tcp.h>
  #include <net/inet_common.h>
  #include <net/xfrm.h>
-@@ -285,6 +288,11 @@ void tcp_time_wait(struct sock *sk, int
+@@ -286,6 +289,11 @@ void tcp_time_wait(struct sock *sk, int
                tcptw->tw_ts_offset     = tp->tsoffset;
                tcptw->tw_last_oow_ack_time = 0;
  
@@ -23706,10 +23875,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/tcp_minisocks.c linux-4.9.76-vs2.3.9
  #if IS_ENABLED(CONFIG_IPV6)
                if (tw->tw_family == PF_INET6) {
                        struct ipv6_pinfo *np = inet6_sk(sk);
-diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv4/udp.c
---- linux-4.9.76/net/ipv4/udp.c        2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv4/udp.c      2018-01-13 20:43:44.000000000 +0000
-@@ -361,13 +361,27 @@ int ipv4_rcv_saddr_equal(const struct so
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/udp.c linux-4.9/net/ipv4/udp.c
+--- linux-4.9/net/ipv4/udp.c   2021-02-24 15:47:32.607352350 +0100
++++ linux-4.9/net/ipv4/udp.c   2021-02-24 15:47:45.137744347 +0100
+@@ -361,12 +361,26 @@ int ipv4_rcv_saddr_equal(const struct so
                         bool match_wildcard)
  {
        struct inet_sock *inet1 = inet_sk(sk1), *inet2 = inet_sk(sk2);
@@ -23721,7 +23890,6 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
 -                      return 1;
 -              if (!inet1->inet_rcv_saddr || !inet2->inet_rcv_saddr)
 -                      return match_wildcard;
--      }
 +      if (ipv6_only_sock(sk2))
 +              return 0;
 +
@@ -23739,10 +23907,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
 +              if (!sk1_rcv_saddr && sk2_rcv_saddr)
 +                      return v4_addr_in_nx_info(sk1->sk_nx_info,
 +                              sk2_rcv_saddr, NXA_MASK_BIND);
-+      }
+       }
        return 0;
  }
 @@ -408,6 +422,11 @@ static int compute_score(struct sock *sk
                if (inet->inet_rcv_saddr != daddr)
                        return -1;
@@ -23763,7 +23930,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
  /* UDP is nearly always wildcards out the wazoo, it makes no sense to try
   * harder than this. -DaveM
   */
-@@ -603,7 +623,7 @@ static inline bool __udp_is_mcast_sock(s
+@@ -607,7 +627,7 @@ static inline bool __udp_is_mcast_sock(s
            udp_sk(sk)->udp_port_hash != hnum ||
            (inet->inet_daddr && inet->inet_daddr != rmt_addr) ||
            (inet->inet_dport != rmt_port && inet->inet_dport) ||
@@ -23772,7 +23939,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
            ipv6_only_sock(sk) ||
            (sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif))
                return false;
-@@ -1018,6 +1038,16 @@ int udp_sendmsg(struct sock *sk, struct
+@@ -1024,6 +1044,16 @@ int udp_sendmsg(struct sock *sk, struct
                                   flow_flags,
                                   faddr, saddr, dport, inet->inet_sport);
  
@@ -23789,7 +23956,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
                security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
                rt = ip_route_output_flow(net, fl4, sk);
                if (IS_ERR(rt)) {
-@@ -1314,7 +1344,8 @@ try_again:
+@@ -1321,7 +1351,8 @@ try_again:
        if (sin) {
                sin->sin_family = AF_INET;
                sin->sin_port = udp_hdr(skb)->source;
@@ -23799,7 +23966,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
                memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
                *addr_len = sizeof(*sin);
        }
-@@ -2260,6 +2291,8 @@ static struct sock *udp_get_first(struct
+@@ -2291,6 +2322,8 @@ static struct sock *udp_get_first(struct
                sk_for_each(sk, &hslot->head) {
                        if (!net_eq(sock_net(sk), net))
                                continue;
@@ -23808,7 +23975,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
                        if (sk->sk_family == state->family)
                                goto found;
                }
-@@ -2277,7 +2310,9 @@ static struct sock *udp_get_next(struct
+@@ -2308,7 +2341,9 @@ static struct sock *udp_get_next(struct
  
        do {
                sk = sk_next(sk);
@@ -23819,7 +23986,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
  
        if (!sk) {
                if (state->bucket <= state->udp_table->mask)
-@@ -2373,8 +2408,8 @@ static void udp4_format_sock(struct sock
+@@ -2404,8 +2439,8 @@ static void udp4_format_sock(struct sock
                int bucket)
  {
        struct inet_sock *inet = inet_sk(sp);
@@ -23830,9 +23997,21 @@ diff -NurpP --minimal linux-4.9.76/net/ipv4/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
        __u16 destp       = ntohs(inet->inet_dport);
        __u16 srcp        = ntohs(inet->inet_sport);
  
-diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/net/ipv6/addrconf.c
---- linux-4.9.76/net/ipv6/addrconf.c   2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/addrconf.c 2018-01-13 22:09:44.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv4/udp_diag.c linux-4.9/net/ipv4/udp_diag.c
+--- linux-4.9/net/ipv4/udp_diag.c      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/ipv4/udp_diag.c      2021-02-24 15:47:45.137744347 +0100
+@@ -120,6 +120,8 @@ static void udp_dump(struct udp_table *t
+                       if (!net_eq(sock_net(sk), net))
+                               continue;
++                      if (!nx_check(sk->sk_nid, VS_WATCH_P | VS_IDENT))
++                              continue;
+                       if (num < s_num)
+                               goto next;
+                       if (!(r->idiag_states & (1 << sk->sk_state)))
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/addrconf.c linux-4.9/net/ipv6/addrconf.c
+--- linux-4.9/net/ipv6/addrconf.c      2021-02-24 15:47:32.607352350 +0100
++++ linux-4.9/net/ipv6/addrconf.c      2021-02-24 15:47:45.141077785 +0100
 @@ -92,6 +92,7 @@
  #include <linux/proc_fs.h>
  #include <linux/seq_file.h>
@@ -23841,7 +24020,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  
  /* Set to 3 to get tracing... */
  #define ACONF_DEBUG 2
-@@ -1494,7 +1495,8 @@ static int __ipv6_dev_get_saddr(struct n
+@@ -1498,7 +1499,8 @@ static int __ipv6_dev_get_saddr(struct n
                                struct ipv6_saddr_dst *dst,
                                struct inet6_dev *idev,
                                struct ipv6_saddr_score *scores,
@@ -23851,7 +24030,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  {
        struct ipv6_saddr_score *score = &scores[1 - hiscore_idx], *hiscore = &scores[hiscore_idx];
  
-@@ -1524,6 +1526,8 @@ static int __ipv6_dev_get_saddr(struct n
+@@ -1528,6 +1530,8 @@ static int __ipv6_dev_get_saddr(struct n
                                            idev->dev->name);
                        continue;
                }
@@ -23860,7 +24039,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  
                score->rule = -1;
                bitmap_zero(score->scorebits, IPV6_SADDR_RULE_MAX);
-@@ -1574,26 +1578,27 @@ static int ipv6_get_saddr_master(struct
+@@ -1578,26 +1582,27 @@ static int ipv6_get_saddr_master(struct
                                 const struct net_device *master,
                                 struct ipv6_saddr_dst *dst,
                                 struct ipv6_saddr_score *scores,
@@ -23894,7 +24073,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  {
        struct ipv6_saddr_score scores[2], *hiscore;
        struct ipv6_saddr_dst dst;
-@@ -1642,7 +1647,8 @@ int ipv6_dev_get_saddr(struct net *net,
+@@ -1646,7 +1651,8 @@ int ipv6_dev_get_saddr(struct net *net,
  
        if (use_oif_addr) {
                if (idev)
@@ -23904,7 +24083,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
        } else {
                const struct net_device *master;
                int master_idx = 0;
-@@ -1656,8 +1662,8 @@ int ipv6_dev_get_saddr(struct net *net,
+@@ -1660,8 +1666,8 @@ int ipv6_dev_get_saddr(struct net *net,
                        master_idx = master->ifindex;
  
                        hiscore_idx = ipv6_get_saddr_master(net, dst_dev,
@@ -23915,7 +24094,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  
                        if (scores[hiscore_idx].ifa)
                                goto out;
-@@ -1672,7 +1678,8 @@ int ipv6_dev_get_saddr(struct net *net,
+@@ -1676,7 +1682,8 @@ int ipv6_dev_get_saddr(struct net *net,
                        idev = __in6_dev_get(dev);
                        if (!idev)
                                continue;
@@ -23925,7 +24104,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
                }
        }
  
-@@ -4128,7 +4135,10 @@ static void if6_seq_stop(struct seq_file
+@@ -4135,7 +4142,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;
@@ -23937,7 +24116,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
                   &ifp->addr,
                   ifp->idev->dev->ifindex,
                   ifp->prefix_len,
-@@ -4712,6 +4722,11 @@ static int in6_dump_addrs(struct inet6_d
+@@ -4719,6 +4729,11 @@ static int in6_dump_addrs(struct inet6_d
        struct ifacaddr6 *ifaca;
        int err = 1;
        int ip_idx = *p_ip_idx;
@@ -23949,16 +24128,16 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  
        read_lock_bh(&idev->lock);
        switch (type) {
-@@ -4722,6 +4737,8 @@ static int in6_dump_addrs(struct inet6_d
+@@ -4729,6 +4744,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;
+                       if (ip_idx < s_ip_idx)
+                               goto next;
 +                      if (!v6_addr_in_nx_info(nxi, &ifa->addr, -1))
-+                              continue;
++                              goto next;
                        err = inet6_fill_ifaddr(skb, ifa,
                                                NETLINK_CB(cb->skb).portid,
                                                cb->nlh->nlmsg_seq,
-@@ -4739,6 +4756,8 @@ static int in6_dump_addrs(struct inet6_d
+@@ -4748,6 +4765,8 @@ next:
                     ifmca = ifmca->next, ip_idx++) {
                        if (ip_idx < s_ip_idx)
                                continue;
@@ -23967,7 +24146,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
                        err = inet6_fill_ifmcaddr(skb, ifmca,
                                                  NETLINK_CB(cb->skb).portid,
                                                  cb->nlh->nlmsg_seq,
-@@ -4754,6 +4773,8 @@ static int in6_dump_addrs(struct inet6_d
+@@ -4763,6 +4782,8 @@ next:
                     ifaca = ifaca->aca_next, ip_idx++) {
                        if (ip_idx < s_ip_idx)
                                continue;
@@ -23976,7 +24155,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
                        err = inet6_fill_ifacaddr(skb, ifaca,
                                                  NETLINK_CB(cb->skb).portid,
                                                  cb->nlh->nlmsg_seq,
-@@ -4782,6 +4803,10 @@ static int inet6_dump_addr(struct sk_buf
+@@ -4791,6 +4812,10 @@ static int inet6_dump_addr(struct sk_buf
        struct inet6_dev *idev;
        struct hlist_head *head;
  
@@ -23987,7 +24166,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
        s_h = cb->args[0];
        s_idx = idx = cb->args[1];
        s_ip_idx = ip_idx = cb->args[2];
-@@ -5300,6 +5325,7 @@ static int inet6_dump_ifinfo(struct sk_b
+@@ -5309,6 +5334,7 @@ static int inet6_dump_ifinfo(struct sk_b
        struct net_device *dev;
        struct inet6_dev *idev;
        struct hlist_head *head;
@@ -23995,7 +24174,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
  
        s_h = cb->args[0];
        s_idx = cb->args[1];
-@@ -5311,6 +5337,8 @@ static int inet6_dump_ifinfo(struct sk_b
+@@ -5320,6 +5346,8 @@ static int inet6_dump_ifinfo(struct sk_b
                hlist_for_each_entry_rcu(dev, head, index_hlist) {
                        if (idx < s_idx)
                                goto cont;
@@ -24004,9 +24183,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/addrconf.c linux-4.9.76-vs2.3.9.5/ne
                        idev = __in6_dev_get(dev);
                        if (!idev)
                                goto cont;
-diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/net/ipv6/af_inet6.c
---- linux-4.9.76/net/ipv6/af_inet6.c   2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/af_inet6.c 2018-01-13 22:10:07.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/af_inet6.c linux-4.9/net/ipv6/af_inet6.c
+--- linux-4.9/net/ipv6/af_inet6.c      2021-02-24 15:47:32.607352350 +0100
++++ linux-4.9/net/ipv6/af_inet6.c      2021-02-24 15:47:45.141077785 +0100
 @@ -43,6 +43,7 @@
  #include <linux/netdevice.h>
  #include <linux/icmpv6.h>
@@ -24037,8 +24216,8 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/ne
 +      struct nx_v6_sock_addr nsa;
        __be32 v4addr = 0;
        unsigned short snum;
-       int addr_type = 0;
-@@ -287,6 +292,10 @@ int inet6_bind(struct socket *sock, stru
+       bool saved_ipv6only;
+@@ -288,6 +293,10 @@ int inet6_bind(struct socket *sock, stru
        if (addr->sin6_family != AF_INET6)
                return -EAFNOSUPPORT;
  
@@ -24049,7 +24228,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/ne
        addr_type = ipv6_addr_type(&addr->sin6_addr);
        if ((addr_type & IPV6_ADDR_MULTICAST) && sock->type == SOCK_STREAM)
                return -EINVAL;
-@@ -327,6 +336,10 @@ int inet6_bind(struct socket *sock, stru
+@@ -340,6 +349,10 @@ int inet6_bind(struct socket *sock, stru
                        err = -EADDRNOTAVAIL;
                        goto out;
                }
@@ -24060,7 +24239,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/ne
        } else {
                if (addr_type != IPV6_ADDR_ANY) {
                        struct net_device *dev = NULL;
-@@ -353,6 +366,11 @@ int inet6_bind(struct socket *sock, stru
+@@ -369,6 +382,11 @@ int inet6_bind(struct socket *sock, stru
                                }
                        }
  
@@ -24072,7 +24251,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/ne
                        /* ipv4 addr of the socket is invalid.  Only the
                         * unspecified and mapped address have a v4 equivalent.
                         */
-@@ -370,6 +388,9 @@ int inet6_bind(struct socket *sock, stru
+@@ -386,6 +404,9 @@ int inet6_bind(struct socket *sock, stru
                }
        }
  
@@ -24082,7 +24261,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/ne
        inet->inet_rcv_saddr = v4addr;
        inet->inet_saddr = v4addr;
  
-@@ -474,9 +495,11 @@ int inet6_getname(struct socket *sock, s
+@@ -492,9 +513,11 @@ int inet6_getname(struct socket *sock, s
                        return -ENOTCONN;
                sin->sin6_port = inet->inet_dport;
                sin->sin6_addr = sk->sk_v6_daddr;
@@ -24094,10 +24273,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/af_inet6.c linux-4.9.76-vs2.3.9.5/ne
                if (ipv6_addr_any(&sk->sk_v6_rcv_saddr))
                        sin->sin6_addr = np->saddr;
                else
-diff -NurpP --minimal linux-4.9.76/net/ipv6/datagram.c linux-4.9.76-vs2.3.9.5/net/ipv6/datagram.c
---- linux-4.9.76/net/ipv6/datagram.c   2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/datagram.c 2018-01-10 02:50:49.000000000 +0000
-@@ -777,7 +777,7 @@ int ip6_datagram_send_ctl(struct net *ne
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/datagram.c linux-4.9/net/ipv6/datagram.c
+--- linux-4.9/net/ipv6/datagram.c      2021-02-24 15:47:32.610685787 +0100
++++ linux-4.9/net/ipv6/datagram.c      2021-02-24 15:47:45.141077785 +0100
+@@ -792,7 +792,7 @@ int ip6_datagram_send_ctl(struct net *ne
  
                        rcu_read_lock();
                        if (fl6->flowi6_oif) {
@@ -24106,9 +24285,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/datagram.c linux-4.9.76-vs2.3.9.5/ne
                                if (!dev) {
                                        rcu_read_unlock();
                                        return -ENODEV;
-diff -NurpP --minimal linux-4.9.76/net/ipv6/fib6_rules.c linux-4.9.76-vs2.3.9.5/net/ipv6/fib6_rules.c
---- linux-4.9.76/net/ipv6/fib6_rules.c 2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/fib6_rules.c       2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/fib6_rules.c linux-4.9/net/ipv6/fib6_rules.c
+--- linux-4.9/net/ipv6/fib6_rules.c    2021-02-24 15:47:32.610685787 +0100
++++ linux-4.9/net/ipv6/fib6_rules.c    2021-02-24 15:47:45.141077785 +0100
 @@ -102,7 +102,7 @@ static int fib6_rule_action(struct fib_r
                                               ip6_dst_idev(&rt->dst)->dev,
                                               &flp6->daddr,
@@ -24118,9 +24297,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/fib6_rules.c linux-4.9.76-vs2.3.9.5/
                                goto again;
                        if (!ipv6_prefix_equal(&saddr, &r->src.addr,
                                               r->src.plen))
-diff -NurpP --minimal linux-4.9.76/net/ipv6/inet6_hashtables.c linux-4.9.76-vs2.3.9.5/net/ipv6/inet6_hashtables.c
---- linux-4.9.76/net/ipv6/inet6_hashtables.c   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/inet6_hashtables.c 2018-01-13 00:26:28.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/inet6_hashtables.c linux-4.9/net/ipv6/inet6_hashtables.c
+--- linux-4.9/net/ipv6/inet6_hashtables.c      2021-02-24 15:47:32.610685787 +0100
++++ linux-4.9/net/ipv6/inet6_hashtables.c      2021-02-24 15:47:45.141077785 +0100
 @@ -16,6 +16,7 @@
  
  #include <linux/module.h>
@@ -24139,7 +24318,7 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/inet6_hashtables.c linux-4.9.76-vs2.
                }
                if (sk->sk_bound_dev_if || exact_dif) {
                        if (sk->sk_bound_dev_if != dif)
-@@ -282,39 +286,71 @@ EXPORT_SYMBOL_GPL(inet6_hash);
+@@ -283,39 +287,71 @@ EXPORT_SYMBOL_GPL(inet6_hash);
   *                          IPV6_ADDR_ANY only equals to IPV6_ADDR_ANY,
   *                          and 0.0.0.0 equals to 0.0.0.0 only
   */
@@ -24182,20 +24361,17 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/inet6_hashtables.c linux-4.9.76-vs2.
        }
  
 -      if (addr_type == IPV6_ADDR_ANY && addr_type2 == IPV6_ADDR_ANY)
--              return 1;
 +      /* if both are wildcards, check for overlap */
 +      if (addr_type1 == IPV6_ADDR_ANY && addr_type2 == IPV6_ADDR_ANY)
 +              return nx_v6_addr_conflict(sk1->sk_nx_info, sk2->sk_nx_info);
--      if (addr_type2 == IPV6_ADDR_ANY && match_wildcard &&
--          !(sk2_ipv6only && addr_type == IPV6_ADDR_MAPPED))
++
 +      /* if both are valid ipv6 addresses, mapped handled above */
 +      if (addr_type1 != IPV6_ADDR_ANY && addr_type2 != IPV6_ADDR_ANY &&
 +          sk2_rcv_saddr6 && ipv6_addr_equal(sk1_rcv_saddr6, sk2_rcv_saddr6))
                return 1;
  
--      if (addr_type == IPV6_ADDR_ANY && match_wildcard &&
--          !(ipv6_only_sock(sk) && addr_type2 == IPV6_ADDR_MAPPED))
+-      if (addr_type2 == IPV6_ADDR_ANY && match_wildcard &&
+-          !(sk2_ipv6only && addr_type == IPV6_ADDR_MAPPED))
 -              return 1;
 +      if (addr_type1 == IPV6_ADDR_ANY && match_wildcard) {
 +              /* ipv6only case handled above */
@@ -24205,8 +24381,8 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/inet6_hashtables.c linux-4.9.76-vs2.
 +                      return v6_addr_in_nx_info(sk1->sk_nx_info, sk2_rcv_saddr6, -1);
 +      }
  
--      if (sk2_rcv_saddr6 &&
--          ipv6_addr_equal(&sk->sk_v6_rcv_saddr, sk2_rcv_saddr6))
+-      if (addr_type == IPV6_ADDR_ANY && match_wildcard &&
+-          !(ipv6_only_sock(sk) && addr_type2 == IPV6_ADDR_MAPPED))
 -              return 1;
 +      if (addr_type2 == IPV6_ADDR_ANY && match_wildcard) {
 +              /* ipv6only case handled above */
@@ -24215,7 +24391,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/inet6_hashtables.c linux-4.9.76-vs2.
 +              else
 +                      return v6_addr_in_nx_info(sk2->sk_nx_info, sk1_rcv_saddr6, -1);
 +      }
-+
+-      if (sk2_rcv_saddr6 &&
+-          ipv6_addr_equal(&sk->sk_v6_rcv_saddr, sk2_rcv_saddr6))
+-              return 1;
 +      return 0;
 +
 +vs_v4:
@@ -24230,10 +24409,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/inet6_hashtables.c linux-4.9.76-vs2.
  
        return 0;
  }
-diff -NurpP --minimal linux-4.9.76/net/ipv6/ip6_fib.c linux-4.9.76-vs2.3.9.5/net/ipv6/ip6_fib.c
---- linux-4.9.76/net/ipv6/ip6_fib.c    2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/ip6_fib.c  2018-01-10 02:50:49.000000000 +0000
-@@ -1976,6 +1976,7 @@ static int ipv6_route_seq_show(struct se
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/ip6_fib.c linux-4.9/net/ipv6/ip6_fib.c
+--- linux-4.9/net/ipv6/ip6_fib.c       2021-02-24 15:47:32.610685787 +0100
++++ linux-4.9/net/ipv6/ip6_fib.c       2021-02-24 15:47:45.141077785 +0100
+@@ -1977,6 +1977,7 @@ static int ipv6_route_seq_show(struct se
        struct rt6_info *rt = v;
        struct ipv6_route_iter *iter = seq->private;
  
@@ -24241,10 +24420,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/ip6_fib.c linux-4.9.76-vs2.3.9.5/net
        seq_printf(seq, "%pi6 %02x ", &rt->rt6i_dst.addr, rt->rt6i_dst.plen);
  
  #ifdef CONFIG_IPV6_SUBTREES
-diff -NurpP --minimal linux-4.9.76/net/ipv6/ip6_output.c linux-4.9.76-vs2.3.9.5/net/ipv6/ip6_output.c
---- linux-4.9.76/net/ipv6/ip6_output.c 2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/ip6_output.c       2018-01-10 02:50:49.000000000 +0000
-@@ -956,7 +956,8 @@ static int ip6_dst_lookup_tail(struct ne
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/ip6_output.c linux-4.9/net/ipv6/ip6_output.c
+--- linux-4.9/net/ipv6/ip6_output.c    2021-02-24 15:47:33.077367054 +0100
++++ linux-4.9/net/ipv6/ip6_output.c    2021-02-24 15:47:45.141077785 +0100
+@@ -966,7 +966,8 @@ static int ip6_dst_lookup_tail(struct ne
                rt = (*dst)->error ? NULL : (struct rt6_info *)*dst;
                err = ip6_route_get_saddr(net, rt, &fl6->daddr,
                                          sk ? inet6_sk(sk)->srcprefs : 0,
@@ -24254,10 +24433,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/ip6_output.c linux-4.9.76-vs2.3.9.5/
                if (err)
                        goto out_err_release;
  
-diff -NurpP --minimal linux-4.9.76/net/ipv6/ip6_tunnel.c linux-4.9.76-vs2.3.9.5/net/ipv6/ip6_tunnel.c
---- linux-4.9.76/net/ipv6/ip6_tunnel.c 2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/ip6_tunnel.c       2018-01-10 08:24:13.000000000 +0000
-@@ -1108,7 +1108,7 @@ route_lookup:
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/ip6_tunnel.c linux-4.9/net/ipv6/ip6_tunnel.c
+--- linux-4.9/net/ipv6/ip6_tunnel.c    2021-02-24 15:47:32.614019225 +0100
++++ linux-4.9/net/ipv6/ip6_tunnel.c    2021-02-24 15:47:45.141077785 +0100
+@@ -1124,7 +1124,7 @@ route_lookup:
                }
                if (t->parms.collect_md &&
                    ipv6_dev_get_saddr(net, ip6_dst_idev(dst)->dev,
@@ -24266,9 +24445,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/ip6_tunnel.c linux-4.9.76-vs2.3.9.5/
                        goto tx_err_link_failure;
                ndst = dst;
        }
-diff -NurpP --minimal linux-4.9.76/net/ipv6/ndisc.c linux-4.9.76-vs2.3.9.5/net/ipv6/ndisc.c
---- linux-4.9.76/net/ipv6/ndisc.c      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/ndisc.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/ndisc.c linux-4.9/net/ipv6/ndisc.c
+--- linux-4.9/net/ipv6/ndisc.c 2021-02-24 15:47:32.614019225 +0100
++++ linux-4.9/net/ipv6/ndisc.c 2021-02-24 15:47:45.141077785 +0100
 @@ -512,7 +512,7 @@ void ndisc_send_na(struct net_device *de
        } else {
                if (ipv6_dev_get_saddr(dev_net(dev), dev, daddr,
@@ -24278,9 +24457,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/ndisc.c linux-4.9.76-vs2.3.9.5/net/i
                        return;
                src_addr = &tmpaddr;
        }
-diff -NurpP --minimal linux-4.9.76/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c linux-4.9.76-vs2.3.9.5/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c
---- linux-4.9.76/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c   2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c 2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c linux-4.9/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c
+--- linux-4.9/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c      2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c      2021-02-24 15:47:45.141077785 +0100
 @@ -39,7 +39,7 @@ nf_nat_masquerade_ipv6(struct sk_buff *s
                            ctinfo == IP_CT_RELATED_REPLY));
  
@@ -24290,10 +24469,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/netfilter/nf_nat_masquerade_ipv6.c l
                return NF_DROP;
  
        nfct_nat(ct)->masq_index = out->ifindex;
-diff -NurpP --minimal linux-4.9.76/net/ipv6/raw.c linux-4.9.76-vs2.3.9.5/net/ipv6/raw.c
---- linux-4.9.76/net/ipv6/raw.c        2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/raw.c      2018-01-13 22:10:35.000000000 +0000
-@@ -291,6 +291,13 @@ static int rawv6_bind(struct sock *sk, s
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/raw.c linux-4.9/net/ipv6/raw.c
+--- linux-4.9/net/ipv6/raw.c   2021-02-24 15:47:32.617352663 +0100
++++ linux-4.9/net/ipv6/raw.c   2021-02-24 15:47:45.141077785 +0100
+@@ -293,6 +293,13 @@ static int rawv6_bind(struct sock *sk, s
                                goto out_unlock;
                }
  
@@ -24307,10 +24486,10 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/raw.c linux-4.9.76-vs2.3.9.5/net/ipv
                /* ipv4 addr of the socket is invalid.  Only the
                 * unspecified and mapped address have a v4 equivalent.
                 */
-diff -NurpP --minimal linux-4.9.76/net/ipv6/route.c linux-4.9.76-vs2.3.9.5/net/ipv6/route.c
---- linux-4.9.76/net/ipv6/route.c      2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/route.c    2018-01-13 22:10:45.000000000 +0000
-@@ -3288,7 +3288,8 @@ static int rt6_fill_node(struct net *net
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/route.c linux-4.9/net/ipv6/route.c
+--- linux-4.9/net/ipv6/route.c 2021-02-24 15:47:32.617352663 +0100
++++ linux-4.9/net/ipv6/route.c 2021-02-24 15:47:45.144411223 +0100
+@@ -3297,7 +3297,8 @@ static int rt6_fill_node(struct net *net
                                goto nla_put_failure;
        } else if (dst) {
                struct in6_addr saddr_buf;
@@ -24320,9 +24499,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/route.c linux-4.9.76-vs2.3.9.5/net/i
                    nla_put_in6_addr(skb, RTA_PREFSRC, &saddr_buf))
                        goto nla_put_failure;
        }
-diff -NurpP --minimal linux-4.9.76/net/ipv6/tcp_ipv6.c linux-4.9.76-vs2.3.9.5/net/ipv6/tcp_ipv6.c
---- linux-4.9.76/net/ipv6/tcp_ipv6.c   2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/tcp_ipv6.c 2018-01-13 22:10:53.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/tcp_ipv6.c linux-4.9/net/ipv6/tcp_ipv6.c
+--- linux-4.9/net/ipv6/tcp_ipv6.c      2021-02-24 15:47:32.620686100 +0100
++++ linux-4.9/net/ipv6/tcp_ipv6.c      2021-02-24 15:47:45.144411223 +0100
 @@ -149,11 +149,18 @@ static int tcp_v6_connect(struct sock *s
         */
  
@@ -24347,9 +24526,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/tcp_ipv6.c linux-4.9.76-vs2.3.9.5/ne
        }
  
        addr_type = ipv6_addr_type(&usin->sin6_addr);
-diff -NurpP --minimal linux-4.9.76/net/ipv6/udp.c linux-4.9.76-vs2.3.9.5/net/ipv6/udp.c
---- linux-4.9.76/net/ipv6/udp.c        2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/udp.c      2018-01-13 22:11:04.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/udp.c linux-4.9/net/ipv6/udp.c
+--- linux-4.9/net/ipv6/udp.c   2021-02-24 15:47:32.620686100 +0100
++++ linux-4.9/net/ipv6/udp.c   2021-02-24 15:47:45.144411223 +0100
 @@ -135,6 +135,10 @@ static int compute_score(struct sock *sk
                if (inet->inet_dport != sport)
                        return -1;
@@ -24361,9 +24540,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/udp.c linux-4.9.76-vs2.3.9.5/net/ipv
        }
  
        if (!ipv6_addr_any(&sk->sk_v6_rcv_saddr)) {
-diff -NurpP --minimal linux-4.9.76/net/ipv6/xfrm6_policy.c linux-4.9.76-vs2.3.9.5/net/ipv6/xfrm6_policy.c
---- linux-4.9.76/net/ipv6/xfrm6_policy.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/ipv6/xfrm6_policy.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/ipv6/xfrm6_policy.c linux-4.9/net/ipv6/xfrm6_policy.c
+--- linux-4.9/net/ipv6/xfrm6_policy.c  2021-02-24 15:47:32.620686100 +0100
++++ linux-4.9/net/ipv6/xfrm6_policy.c  2021-02-24 15:47:45.144411223 +0100
 @@ -64,7 +64,8 @@ static int xfrm6_get_saddr(struct net *n
                return -EHOSTUNREACH;
  
@@ -24374,9 +24553,9 @@ diff -NurpP --minimal linux-4.9.76/net/ipv6/xfrm6_policy.c linux-4.9.76-vs2.3.9.
        dst_release(dst);
        return 0;
  }
-diff -NurpP --minimal linux-4.9.76/net/netfilter/ipvs/ip_vs_xmit.c linux-4.9.76-vs2.3.9.5/net/netfilter/ipvs/ip_vs_xmit.c
---- linux-4.9.76/net/netfilter/ipvs/ip_vs_xmit.c       2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/netfilter/ipvs/ip_vs_xmit.c     2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/netfilter/ipvs/ip_vs_xmit.c linux-4.9/net/netfilter/ipvs/ip_vs_xmit.c
+--- linux-4.9/net/netfilter/ipvs/ip_vs_xmit.c  2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/netfilter/ipvs/ip_vs_xmit.c  2021-02-24 15:47:45.144411223 +0100
 @@ -381,7 +381,7 @@ __ip_vs_route_output_v6(struct net *net,
                return dst;
        if (ipv6_addr_any(&fl6.saddr) &&
@@ -24386,19 +24565,19 @@ diff -NurpP --minimal linux-4.9.76/net/netfilter/ipvs/ip_vs_xmit.c linux-4.9.76-
                goto out_err;
        if (do_xfrm) {
                dst = xfrm_lookup(net, dst, flowi6_to_flowi(&fl6), NULL, 0);
-diff -NurpP --minimal linux-4.9.76/net/netlink/af_netlink.c linux-4.9.76-vs2.3.9.5/net/netlink/af_netlink.c
---- linux-4.9.76/net/netlink/af_netlink.c      2018-01-13 21:29:02.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/netlink/af_netlink.c    2018-01-10 02:50:49.000000000 +0000
-@@ -62,6 +62,8 @@
- #include <asm/cacheflush.h>
+diff -urNp -x '*.orig' linux-4.9/net/netlink/af_netlink.c linux-4.9/net/netlink/af_netlink.c
+--- linux-4.9/net/netlink/af_netlink.c 2021-02-24 15:47:32.654020476 +0100
++++ linux-4.9/net/netlink/af_netlink.c 2021-02-24 15:47:45.144411223 +0100
+@@ -63,6 +63,8 @@
  #include <linux/hash.h>
  #include <linux/genetlink.h>
+ #include <linux/nospec.h>
 +#include <linux/vs_context.h>
 +#include <linux/vs_network.h>
  
  #include <net/net_namespace.h>
  #include <net/sock.h>
-@@ -2463,7 +2465,8 @@ static void *__netlink_seq_next(struct s
+@@ -2478,7 +2480,8 @@ static void *__netlink_seq_next(struct s
                        if (err)
                                return ERR_PTR(err);
                }
@@ -24408,10 +24587,30 @@ diff -NurpP --minimal linux-4.9.76/net/netlink/af_netlink.c linux-4.9.76-vs2.3.9
  
        return nlk;
  }
-diff -NurpP --minimal linux-4.9.76/net/socket.c linux-4.9.76-vs2.3.9.5/net/socket.c
---- linux-4.9.76/net/socket.c  2018-01-13 21:29:03.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/socket.c        2018-01-10 02:50:49.000000000 +0000
-@@ -99,10 +99,12 @@
+diff -urNp -x '*.orig' linux-4.9/net/packet/diag.c linux-4.9/net/packet/diag.c
+--- linux-4.9/net/packet/diag.c        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/packet/diag.c        2021-02-24 15:47:45.144411223 +0100
+@@ -4,6 +4,7 @@
+ #include <linux/netdevice.h>
+ #include <linux/packet_diag.h>
+ #include <linux/percpu.h>
++#include <linux/vs_network.h>
+ #include <net/net_namespace.h>
+ #include <net/sock.h>
+@@ -201,6 +202,8 @@ static int packet_diag_dump(struct sk_bu
+       sk_for_each(sk, &net->packet.sklist) {
+               if (!net_eq(sock_net(sk), net))
+                       continue;
++              if (!nx_check(sk->sk_nid, VS_WATCH_P | VS_IDENT))
++                      continue;
+               if (num < s_num)
+                       goto next;
+diff -urNp -x '*.orig' linux-4.9/net/socket.c linux-4.9/net/socket.c
+--- linux-4.9/net/socket.c     2021-02-24 15:47:32.680687977 +0100
++++ linux-4.9/net/socket.c     2021-02-24 15:47:45.144411223 +0100
+@@ -100,10 +100,12 @@
  
  #include <net/sock.h>
  #include <linux/netfilter.h>
@@ -24425,7 +24624,7 @@ diff -NurpP --minimal linux-4.9.76/net/socket.c linux-4.9.76-vs2.3.9.5/net/socke
  #include <linux/sockios.h>
  #include <linux/atalk.h>
  #include <net/busy_poll.h>
-@@ -618,8 +620,24 @@ EXPORT_SYMBOL(__sock_tx_timestamp);
+@@ -619,8 +621,24 @@ EXPORT_SYMBOL(__sock_tx_timestamp);
  
  static inline int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg)
  {
@@ -24452,7 +24651,7 @@ diff -NurpP --minimal linux-4.9.76/net/socket.c linux-4.9.76-vs2.3.9.5/net/socke
        return ret;
  }
  
-@@ -1109,6 +1127,13 @@ int __sock_create(struct net *net, int f
+@@ -1110,6 +1128,13 @@ int __sock_create(struct net *net, int f
        if (type < 0 || type >= SOCK_MAX)
                return -EINVAL;
  
@@ -24466,7 +24665,7 @@ diff -NurpP --minimal linux-4.9.76/net/socket.c linux-4.9.76-vs2.3.9.5/net/socke
        /* Compatibility.
  
           This uglymoron is moved from INET layer to here to avoid
-@@ -1239,6 +1264,7 @@ SYSCALL_DEFINE3(socket, int, family, int
+@@ -1240,6 +1265,7 @@ SYSCALL_DEFINE3(socket, int, family, int
        if (retval < 0)
                goto out;
  
@@ -24474,7 +24673,7 @@ diff -NurpP --minimal linux-4.9.76/net/socket.c linux-4.9.76-vs2.3.9.5/net/socke
        retval = sock_map_fd(sock, flags & (O_CLOEXEC | O_NONBLOCK));
        if (retval < 0)
                goto out_release;
-@@ -1280,10 +1306,12 @@ SYSCALL_DEFINE4(socketpair, int, family,
+@@ -1281,10 +1307,12 @@ SYSCALL_DEFINE4(socketpair, int, family,
        err = sock_create(family, type, protocol, &sock1);
        if (err < 0)
                goto out;
@@ -24487,9 +24686,9 @@ diff -NurpP --minimal linux-4.9.76/net/socket.c linux-4.9.76-vs2.3.9.5/net/socke
  
        err = sock1->ops->socketpair(sock1, sock2);
        if (err < 0)
-diff -NurpP --minimal linux-4.9.76/net/sunrpc/auth.c linux-4.9.76-vs2.3.9.5/net/sunrpc/auth.c
---- linux-4.9.76/net/sunrpc/auth.c     2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/sunrpc/auth.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/sunrpc/auth.c linux-4.9/net/sunrpc/auth.c
+--- linux-4.9/net/sunrpc/auth.c        2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/sunrpc/auth.c        2021-02-24 15:47:45.144411223 +0100
 @@ -15,6 +15,7 @@
  #include <linux/sunrpc/clnt.h>
  #include <linux/sunrpc/gss_api.h>
@@ -24514,9 +24713,9 @@ diff -NurpP --minimal linux-4.9.76/net/sunrpc/auth.c linux-4.9.76-vs2.3.9.5/net/
        };
  
        dprintk("RPC: %5u looking up %s cred\n",
-diff -NurpP --minimal linux-4.9.76/net/sunrpc/auth_unix.c linux-4.9.76-vs2.3.9.5/net/sunrpc/auth_unix.c
---- linux-4.9.76/net/sunrpc/auth_unix.c        2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/sunrpc/auth_unix.c      2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/sunrpc/auth_unix.c linux-4.9/net/sunrpc/auth_unix.c
+--- linux-4.9/net/sunrpc/auth_unix.c   2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/net/sunrpc/auth_unix.c   2021-02-24 15:47:45.144411223 +0100
 @@ -13,11 +13,13 @@
  #include <linux/sunrpc/clnt.h>
  #include <linux/sunrpc/auth.h>
@@ -24573,9 +24772,9 @@ diff -NurpP --minimal linux-4.9.76/net/sunrpc/auth_unix.c linux-4.9.76-vs2.3.9.5
        hold = p++;
        for (i = 0; i < 16 && gid_valid(cred->uc_gids[i]); i++)
                *p++ = htonl((u32) from_kgid(&init_user_ns, cred->uc_gids[i]));
-diff -NurpP --minimal linux-4.9.76/net/sunrpc/clnt.c linux-4.9.76-vs2.3.9.5/net/sunrpc/clnt.c
---- linux-4.9.76/net/sunrpc/clnt.c     2018-01-13 21:29:03.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/sunrpc/clnt.c   2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/sunrpc/clnt.c linux-4.9/net/sunrpc/clnt.c
+--- linux-4.9/net/sunrpc/clnt.c        2021-02-24 15:47:32.684021415 +0100
++++ linux-4.9/net/sunrpc/clnt.c        2021-02-24 15:47:45.147744660 +0100
 @@ -31,6 +31,7 @@
  #include <linux/in.h>
  #include <linux/in6.h>
@@ -24594,9 +24793,9 @@ diff -NurpP --minimal linux-4.9.76/net/sunrpc/clnt.c linux-4.9.76-vs2.3.9.5/net/
        return clnt;
  }
  
-diff -NurpP --minimal linux-4.9.76/net/unix/af_unix.c linux-4.9.76-vs2.3.9.5/net/unix/af_unix.c
---- linux-4.9.76/net/unix/af_unix.c    2018-01-13 21:29:03.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/net/unix/af_unix.c  2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/unix/af_unix.c linux-4.9/net/unix/af_unix.c
+--- linux-4.9/net/unix/af_unix.c       2021-02-24 15:47:32.694021728 +0100
++++ linux-4.9/net/unix/af_unix.c       2021-02-24 15:47:45.147744660 +0100
 @@ -117,6 +117,8 @@
  #include <net/checksum.h>
  #include <linux/security.h>
@@ -24604,9 +24803,9 @@ diff -NurpP --minimal linux-4.9.76/net/unix/af_unix.c linux-4.9.76-vs2.3.9.5/net
 +#include <linux/vs_context.h>
 +#include <linux/vs_limit.h>
  
- struct hlist_head unix_socket_table[2 * UNIX_HASH_SIZE];
- EXPORT_SYMBOL_GPL(unix_socket_table);
-@@ -282,6 +284,8 @@ static struct sock *__unix_find_socket_b
+ #include "scm.h"
+@@ -290,6 +292,8 @@ static struct sock *__unix_find_socket_b
                if (!net_eq(sock_net(s), net))
                        continue;
  
@@ -24615,7 +24814,7 @@ diff -NurpP --minimal linux-4.9.76/net/unix/af_unix.c linux-4.9.76-vs2.3.9.5/net
                if (u->addr->len == len &&
                    !memcmp(u->addr->name, sunname, len))
                        goto found;
-@@ -2732,6 +2736,8 @@ static struct sock *unix_from_bucket(str
+@@ -2751,6 +2755,8 @@ static struct sock *unix_from_bucket(str
        for (sk = sk_head(&unix_socket_table[bucket]); sk; sk = sk_next(sk)) {
                if (sock_net(sk) != seq_file_net(seq))
                        continue;
@@ -24624,7 +24823,7 @@ diff -NurpP --minimal linux-4.9.76/net/unix/af_unix.c linux-4.9.76-vs2.3.9.5/net
                if (++count == offset)
                        break;
        }
-@@ -2749,6 +2755,8 @@ static struct sock *unix_next_socket(str
+@@ -2768,6 +2774,8 @@ static struct sock *unix_next_socket(str
                sk = sk_next(sk);
                if (!sk)
                        goto next_bucket;
@@ -24633,9 +24832,29 @@ diff -NurpP --minimal linux-4.9.76/net/unix/af_unix.c linux-4.9.76-vs2.3.9.5/net
                if (sock_net(sk) == seq_file_net(seq))
                        return sk;
        }
-diff -NurpP --minimal linux-4.9.76/scripts/checksyscalls.sh linux-4.9.76-vs2.3.9.5/scripts/checksyscalls.sh
---- linux-4.9.76/scripts/checksyscalls.sh      2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/scripts/checksyscalls.sh    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/net/unix/diag.c linux-4.9/net/unix/diag.c
+--- linux-4.9/net/unix/diag.c  2021-02-24 15:47:32.694021728 +0100
++++ linux-4.9/net/unix/diag.c  2021-02-24 15:47:45.147744660 +0100
+@@ -4,6 +4,7 @@
+ #include <linux/unix_diag.h>
+ #include <linux/skbuff.h>
+ #include <linux/module.h>
++#include <linux/vs_network.h>
+ #include <net/netlink.h>
+ #include <net/af_unix.h>
+ #include <net/tcp_states.h>
+@@ -200,6 +201,8 @@ static int unix_diag_dump(struct sk_buff
+               sk_for_each(sk, &unix_socket_table[slot]) {
+                       if (!net_eq(sock_net(sk), net))
+                               continue;
++                      if (!nx_check(sk->sk_nid, VS_WATCH_P | VS_IDENT))
++                              continue;
+                       if (num < s_num)
+                               goto next;
+                       if (!(req->udiag_states & (1 << sk->sk_state)))
+diff -urNp -x '*.orig' linux-4.9/scripts/checksyscalls.sh linux-4.9/scripts/checksyscalls.sh
+--- linux-4.9/scripts/checksyscalls.sh 2016-12-11 20:17:54.000000000 +0100
++++ linux-4.9/scripts/checksyscalls.sh 2021-02-24 15:47:45.147744660 +0100
 @@ -196,7 +196,6 @@ cat << EOF
  #define __IGNORE_afs_syscall
  #define __IGNORE_getpmsg
@@ -24644,9 +24863,9 @@ diff -NurpP --minimal linux-4.9.76/scripts/checksyscalls.sh linux-4.9.76-vs2.3.9
  EOF
  }
  
-diff -NurpP --minimal linux-4.9.76/security/commoncap.c linux-4.9.76-vs2.3.9.5/security/commoncap.c
---- linux-4.9.76/security/commoncap.c  2016-12-11 19:17:54.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/security/commoncap.c        2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/security/commoncap.c linux-4.9/security/commoncap.c
+--- linux-4.9/security/commoncap.c     2021-02-24 15:47:32.714022353 +0100
++++ linux-4.9/security/commoncap.c     2021-02-24 15:47:45.147744660 +0100
 @@ -71,6 +71,7 @@ static void warn_setuid_and_fcaps_mixed(
  int cap_capable(const struct cred *cred, struct user_namespace *targ_ns,
                int cap, int audit)
@@ -24670,7 +24889,7 @@ diff -NurpP --minimal linux-4.9.76/security/commoncap.c linux-4.9.76-vs2.3.9.5/s
  
                /* Have we tried all of the parent namespaces? */
                if (ns == &init_user_ns)
-@@ -667,7 +672,7 @@ int cap_inode_setxattr(struct dentry *de
+@@ -668,7 +673,7 @@ int cap_inode_setxattr(struct dentry *de
  
        if (!strncmp(name, XATTR_SECURITY_PREFIX,
                     sizeof(XATTR_SECURITY_PREFIX) - 1) &&
@@ -24679,7 +24898,7 @@ diff -NurpP --minimal linux-4.9.76/security/commoncap.c linux-4.9.76-vs2.3.9.5/s
                return -EPERM;
        return 0;
  }
-@@ -693,7 +698,7 @@ int cap_inode_removexattr(struct dentry
+@@ -694,7 +699,7 @@ int cap_inode_removexattr(struct dentry
  
        if (!strncmp(name, XATTR_SECURITY_PREFIX,
                     sizeof(XATTR_SECURITY_PREFIX) - 1) &&
@@ -24688,9 +24907,9 @@ diff -NurpP --minimal linux-4.9.76/security/commoncap.c linux-4.9.76-vs2.3.9.5/s
                return -EPERM;
        return 0;
  }
-diff -NurpP --minimal linux-4.9.76/security/selinux/hooks.c linux-4.9.76-vs2.3.9.5/security/selinux/hooks.c
---- linux-4.9.76/security/selinux/hooks.c      2018-01-13 21:29:03.000000000 +0000
-+++ linux-4.9.76-vs2.3.9.5/security/selinux/hooks.c    2018-01-10 02:50:49.000000000 +0000
+diff -urNp -x '*.orig' linux-4.9/security/selinux/hooks.c linux-4.9/security/selinux/hooks.c
+--- linux-4.9/security/selinux/hooks.c 2021-02-24 15:47:32.720689229 +0100
++++ linux-4.9/security/selinux/hooks.c 2021-02-24 15:47:45.147744660 +0100
 @@ -67,7 +67,6 @@
  #include <linux/dccp.h>
  #include <linux/quota.h>
This page took 0.693408 seconds and 4 git commands to generate.