--- linux-3.13.10/arch/parisc/kernel/traps.c 2013-11-25 15:46:28.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/arch/parisc/kernel/traps.c 2014-01-31 20:38:03.000000000 +0000
@@ -229,8 +229,9 @@ void die_if_kernel(char *str, struct pt_
- if (err == 0)
return; /* STFU */
-- printk(KERN_CRIT "%s (pid %d): %s (code %ld) at " RFMT "\n",
+ parisc_printk_ratelimited(1, regs,
+- KERN_CRIT "%s (pid %d): %s (code %ld) at " RFMT "\n",
- current->comm, task_pid_nr(current), str, err, regs->iaoq[0]);
-+ printk(KERN_CRIT "%s (pid %d:#%u): %s (code %ld) at " RFMT "\n",
++ KERN_CRIT "%s (pid %d:#%u): %s (code %ld) at " RFMT "\n",
+ current->comm, task_pid_nr(current), current->xid,
+ str, err, regs->iaoq[0]);
- #ifdef PRINT_USER_FAULTS
- /* XXX for debugging only */
- show_regs(regs);
+
+ return;
+ }
@@ -263,8 +264,8 @@ void die_if_kernel(char *str, struct pt_
pdc_console_restart();
/* Wot's wrong wif bein' racy? */
if (current->thread.flags & PARISC_KERNEL_DEATH) {
-diff -NurpP --minimal linux-3.13.10/arch/parisc/mm/fault.c linux-3.13.10-vs2.3.6.11/arch/parisc/mm/fault.c
---- linux-3.13.10/arch/parisc/mm/fault.c 2014-01-22 20:38:18.000000000 +0000
-+++ linux-3.13.10-vs2.3.6.11/arch/parisc/mm/fault.c 2014-01-31 20:38:03.000000000 +0000
-@@ -272,8 +272,9 @@ bad_area:
-
- #ifdef PRINT_USER_FAULTS
- printk(KERN_DEBUG "\n");
-- printk(KERN_DEBUG "do_page_fault() pid=%d command='%s' type=%lu address=0x%08lx\n",
-- task_pid_nr(tsk), tsk->comm, code, address);
-+ printk(KERN_DEBUG "do_page_fault() pid=%d:#%u "
-+ "command='%s' type=%lu address=0x%08lx\n",
-+ task_pid_nr(tsk), tsk->xid, tsk->comm, code, address);
- if (vma) {
- printk(KERN_DEBUG "vm_start = 0x%08lx, vm_end = 0x%08lx\n",
- vma->vm_start, vma->vm_end);
diff -NurpP --minimal linux-3.13.10/arch/powerpc/Kconfig linux-3.13.10-vs2.3.6.11/arch/powerpc/Kconfig
--- linux-3.13.10/arch/powerpc/Kconfig 2014-01-22 20:38:18.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/arch/powerpc/Kconfig 2014-01-31 20:38:03.000000000 +0000
--- linux-3.13.10/arch/s390/kernel/syscalls.S 2013-07-14 17:00:34.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/arch/s390/kernel/syscalls.S 2014-01-31 20:38:03.000000000 +0000
@@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
- SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper) /* 260 */
- SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
- SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys32_clock_nanosleep_wrapper)
+ SYSCALL(sys_clock_gettime,sys_clock_gettime,compat_sys_clock_gettime) /* 260 */
+ SYSCALL(sys_clock_getres,sys_clock_getres,compat_sys_clock_getres)
+ SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,compat_sys_clock_nanosleep)
-NI_SYSCALL /* reserved for vserver */
+SYSCALL(sys_vserver,sys_vserver,sys32_vserver)
- SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
- SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
- SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
+ SYSCALL(sys_s390_fadvise64_64,sys_ni_syscall,compat_sys_s390_fadvise64_64)
+ SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64)
+ SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64)
diff -NurpP --minimal linux-3.13.10/arch/sh/Kconfig linux-3.13.10-vs2.3.6.11/arch/sh/Kconfig
--- linux-3.13.10/arch/sh/Kconfig 2014-01-22 20:38:24.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/arch/sh/Kconfig 2014-01-31 20:38:03.000000000 +0000
if (flags & EXT4_DIRSYNC_FL)
new_fl |= S_DIRSYNC;
+
- set_mask_bits(&inode->i_flags,
-- S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC, new_fl);
+ inode_set_flags(inode, new_fl,
+- S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
+ S_IXUNLINK | S_IMMUTABLE |
-+ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC, new_fl);
++ S_SYNC | S_APPEND | S_NOATIME | S_DIRSYNC);
+
+ new_fl = 0;
+ if (flags & EXT4_BARRIER_FL)
over:
@@ -254,6 +258,8 @@ static void __fput(struct file *file)
- i_readcount_dec(inode);
- if (file->f_mode & FMODE_WRITE)
- drop_file_write_access(file);
+ put_write_access(inode);
+ __mnt_drop_write(mnt);
+ }
+ vx_files_dec(file);
+ file->f_xid = 0;
file->f_path.dentry = NULL;
}
EXPORT_SYMBOL(posix_lock_file);
-@@ -1208,7 +1240,7 @@ int locks_mandatory_area(int read_write,
+@@ -1168,6 +1170,7 @@ int locks_mandatory_area(int read_write,
+ struct file_lock fl;
+ int error;
+ bool sleep = false;
++ vxid_t xid;
+
+ locks_init_lock(&fl);
+ fl.fl_pid = current->tgid;
+@@ -1208,20 +1240,24 @@ int locks_mandatory_area(int read_write,
+ fl.fl_type = (read_write == FLOCK_VERIFY_WRITE) ? F_WRLCK : F_RDLCK;
+ fl.fl_start = offset;
fl.fl_end = offset + count - 1;
++ if (filp)
++ xid = filp->f_xid;
++ else
++ xid = vx_current_xid();
for (;;) {
+ if (filp) {
+ fl.fl_owner = (fl_owner_t)filp;
+ fl.fl_flags &= ~FL_SLEEP;
+- error = __posix_lock_file(inode, &fl, NULL);
++ error = __posix_lock_file(inode, &fl, NULL, xid);
+ if (!error)
+ break;
+ }
+
+ if (sleep)
+ fl.fl_flags |= FL_SLEEP;
+ fl.fl_owner = current->files;
- error = __posix_lock_file(inode, &fl, NULL);
-+ error = __posix_lock_file(inode, &fl, NULL, filp->f_xid);
++ error = __posix_lock_file(inode, &fl, NULL, xid);
if (error != FILE_LOCK_DEFERRED)
break;
error = wait_event_interruptible(fl.fl_wait, !fl.fl_next);
-@@ -1549,6 +1581,7 @@ static int generic_add_lease(struct file
- goto out;
-
- locks_insert_lock(before, lease);
-+ vx_locks_inc(lease);
- error = 0;
+@@ -1549,6 +1581,8 @@ static int generic_add_lease(struct file
+ error = check_conflicting_open(dentry, arg);
+ if (error)
+ locks_unlink_lock(flp);
++ else
++ vx_locks_inc(lease);
out:
if (is_deleg)
+ mutex_unlock(&inode->i_mutex);
@@ -1991,6 +2024,11 @@ int fcntl_setlk(unsigned int fd, struct
if (file_lock == NULL)
return -ENOLCK;
return -EPERM;
if (!dir->i_op->link)
return -EPERM;
-@@ -4305,6 +4449,287 @@ int generic_readlink(struct dentry *dent
+@@ -4305,6 +4449,288 @@ int generic_readlink(struct dentry *dent
return res;
}
+ old_dentry->d_name.len, old_dentry->d_name.name,
+ old_dentry->d_name.len);
+ ret = vfs_rename(dir_nd.path.dentry->d_inode, new_dentry,
-+ old_dentry->d_parent->d_inode, old_dentry, NULL);
++ old_dentry->d_parent->d_inode, old_dentry, NULL, 0);
+ vxdprintk(VXD_CBIT(misc, 2), "vfs_rename: %d", ret);
+
+out_unlock:
+ kfree(pstr);
+ return length;
+}
++EXPORT_SYMBOL(vx_info_mnt_namespace);
+
/* get the link contents into pagecache */
static char *page_getlink(struct dentry * dentry, struct page **ppage)
{
-@@ -4427,3 +4852,4 @@ EXPORT_SYMBOL(vfs_symlink);
- EXPORT_SYMBOL(vfs_unlink);
- EXPORT_SYMBOL(dentry_unhash);
- EXPORT_SYMBOL(generic_readlink);
-+EXPORT_SYMBOL(vx_info_mnt_namespace);
diff -NurpP --minimal linux-3.13.10/fs/namespace.c linux-3.13.10-vs2.3.6.11/fs/namespace.c
--- linux-3.13.10/fs/namespace.c 2014-04-17 01:12:32.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/fs/namespace.c 2014-04-17 01:18:37.000000000 +0000
#include <cluster/masklog.h>
@@ -475,6 +476,7 @@ static int __ocfs2_mknod_locked(struct i
- struct ocfs2_dinode *fe = NULL;
struct ocfs2_extent_list *fel;
u16 feat;
+ struct ocfs2_inode_info *oi = OCFS2_I(inode);
+ ktag_t ktag;
*new_fe_bh = NULL;
#include <linux/time.h>
#include <linux/irqnr.h>
+#include <linux/vserver/cvirt.h>
- #include <asm/cputime.h>
+ #include <linux/cputime.h>
#include <linux/tick.h>
+#include <linux/cpuset.h>
#include <linux/time.h>
#include <linux/kernel_stat.h>
+#include <linux/vserver/cvirt.h>
- #include <asm/cputime.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
error = security_sb_kern_mount(sb, flags, secdata);
if (error)
goto out_sb;
-diff -NurpP --minimal linux-3.13.10/fs/kernfs/mount.c linux-3.13.10-vs2.3.6.11/fs/kernfs/mount.c
---- linux-3.13.10/fs/kernfs/mount.c 2013-11-25 15:47:00.000000000 +0000
-+++ linux-3.13.10-vs2.3.6.11/fs/kernfs/mount.c 2014-01-31 20:38:03.000000000 +0000
-@@ -48,7 +48,7 @@ static int sysfs_fill_super(struct super
-
- sb->s_blocksize = PAGE_CACHE_SIZE;
- sb->s_blocksize_bits = PAGE_CACHE_SHIFT;
-- sb->s_magic = SYSFS_MAGIC;
-+ sb->s_magic = SYSFS_SUPER_MAGIC;
- sb->s_op = &kernfs_sops;
- sb->s_time_gran = 1;
-
diff -NurpP --minimal linux-3.13.10/fs/utimes.c linux-3.13.10-vs2.3.6.11/fs/utimes.c
--- linux-3.13.10/fs/utimes.c 2014-01-22 20:39:07.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/fs/utimes.c 2014-01-31 23:49:14.000000000 +0000
struct rpc_rtt * cl_rtt; /* RTO estimator data */
const struct rpc_timeout *cl_timeout; /* Timeout strategy */
-diff -NurpP --minimal linux-3.13.10/include/linux/sysfs.h linux-3.13.10-vs2.3.6.11/include/linux/sysfs.h
---- linux-3.13.10/include/linux/sysfs.h 2014-01-22 20:39:11.000000000 +0000
-+++ linux-3.13.10-vs2.3.6.11/include/linux/sysfs.h 2014-01-31 20:38:03.000000000 +0000
-@@ -20,6 +20,8 @@
- #include <linux/stat.h>
- #include <linux/atomic.h>
-
-+#define SYSFS_SUPER_MAGIC 0x62656572
-+
- struct kobject;
- struct module;
- struct bin_attribute;
diff -NurpP --minimal linux-3.13.10/include/linux/types.h linux-3.13.10-vs2.3.6.11/include/linux/types.h
--- linux-3.13.10/include/linux/types.h 2013-02-19 13:58:52.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/include/linux/types.h 2014-01-31 20:38:03.000000000 +0000
extern kuid_t make_kuid(struct user_namespace *from, uid_t uid);
extern kgid_t make_kgid(struct user_namespace *from, gid_t gid);
-+extern krag_t make_ktag(struct user_namespace *from, gid_t gid);
++extern ktag_t make_ktag(struct user_namespace *from, gid_t gid);
extern uid_t from_kuid(struct user_namespace *to, kuid_t uid);
extern gid_t from_kgid(struct user_namespace *to, kgid_t gid);
--- linux-3.13.10/init/Kconfig 2014-04-17 01:12:39.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/init/Kconfig 2014-04-17 01:17:11.000000000 +0000
@@ -855,6 +855,7 @@ config NUMA_BALANCING
-
menuconfig CGROUPS
boolean "Control Group support"
+ select KERNFS
+ default y
help
This option adds support for grouping sets of processes together, for
--- linux-3.13.10/kernel/fork.c 2014-01-22 20:39:13.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/kernel/fork.c 2014-01-31 20:38:03.000000000 +0000
@@ -71,6 +71,9 @@
- #include <linux/signalfd.h>
#include <linux/uprobes.h>
#include <linux/aio.h>
+ #include <linux/compiler.h>
+#include <linux/vs_context.h>
+#include <linux/vs_network.h>
+#include <linux/vs_limit.h>
--- linux-3.13.10/kernel/sched/core.c 2014-04-17 01:12:39.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/kernel/sched/core.c 2014-02-25 11:26:10.000000000 +0000
@@ -73,6 +73,8 @@
- #include <linux/init_task.h>
#include <linux/binfmts.h>
#include <linux/context_tracking.h>
+ #include <linux/compiler.h>
+#include <linux/vs_sched.h>
+#include <linux/vs_cvirt.h>
#include "sched.h"
-@@ -135,14 +136,17 @@ static inline void task_group_account_fi
+@@ -189,9 +193,12 @@ static inline
void account_user_time(struct task_struct *p, cputime_t cputime,
cputime_t cputime_scaled)
{
+ struct vx_info *vxi = p->vx_info; /* p is _always_ current */
-+ int nice = (TASK_NICE(p) > 0);
++ int nice = (task_nice(p) > 0);
int index;
/* Add user time to process. */
+ vx_account_user(vxi, cputime, nice);
account_group_user_time(p, cputime);
-- index = (TASK_NICE(p) > 0) ? CPUTIME_NICE : CPUTIME_USER;
+- index = (task_nice(p) > 0) ? CPUTIME_NICE : CPUTIME_USER;
+ index = (nice) ? CPUTIME_NICE : CPUTIME_USER;
/* Add user time to cpustat. */
task_group_account_field(p, index, (__force u64) cputime);
-@@ -189,9 +193,12 @@ static inline
+@@ -215,14 +216,17 @@ static inline void task_group_account_fi
void __account_system_time(struct task_struct *p, cputime_t cputime,
cputime_t cputime_scaled, int index)
{
--- linux-3.13.10/kernel/signal.c 2014-01-22 20:39:13.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/kernel/signal.c 2014-01-31 20:38:03.000000000 +0000
@@ -33,6 +33,8 @@
- #include <linux/uprobes.h>
#include <linux/compat.h>
#include <linux/cn_proc.h>
+ #include <linux/compiler.h>
+#include <linux/vs_context.h>
+#include <linux/vs_pid.h>
+
#define CREATE_TRACE_POINTS
#include <trace/events/signal.h>
-
@@ -790,9 +792,18 @@ static int check_kill_permission(int sig
struct pid *sid;
int error;
--- linux-3.13.10/kernel/softirq.c 2014-01-22 20:39:13.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/kernel/softirq.c 2014-01-31 20:38:03.000000000 +0000
@@ -23,6 +23,7 @@
- #include <linux/smp.h>
#include <linux/smpboot.h>
#include <linux/tick.h>
+ #include <linux/irq.h>
+#include <linux/vs_context.h>
#define CREATE_TRACE_POINTS
--- linux-3.13.10/kernel/time/timekeeping.c 2014-04-17 01:12:40.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/kernel/time/timekeeping.c 2014-02-25 11:26:10.000000000 +0000
@@ -22,6 +22,7 @@
- #include <linux/tick.h>
#include <linux/stop_machine.h>
#include <linux/pvclock_gtod.h>
+ #include <linux/compiler.h>
+#include <linux/vs_time.h>
#include "tick-internal.h"
--- linux-3.13.10/mm/memcontrol.c 2014-04-17 01:12:40.000000000 +0000
+++ linux-3.13.10-vs2.3.6.11/mm/memcontrol.c 2014-04-17 01:17:11.000000000 +0000
@@ -1056,6 +1056,31 @@ struct mem_cgroup *mem_cgroup_from_task(
- return mem_cgroup_from_css(task_css(p, mem_cgroup_subsys_id));
+ return mem_cgroup_from_css(task_css(p, memory_cgrp_id));
}
+u64 mem_cgroup_res_read_u64(struct mem_cgroup *mem, int member)
+ return mem_cgroup_read_stat(mem, MEM_CGROUP_STAT_FILE_MAPPED);
+}
+
- struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm)
+ static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm)
{
struct mem_cgroup *memcg = NULL;
diff -NurpP --minimal linux-3.13.10/mm/oom_kill.c linux-3.13.10-vs2.3.6.11/mm/oom_kill.c
goto cont;
+ if (!nx_dev_visible(skb->sk->sk_nx_info, dev))
+ continue;
- if (rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK,
- NETLINK_CB(cb->skb).portid,
- cb->nlh->nlmsg_seq, 0,
+ err = rtnl_fill_ifinfo(skb, dev, RTM_NEWLINK,
+ NETLINK_CB(cb->skb).portid,
+ cb->nlh->nlmsg_seq, 0,
@@ -1992,6 +1994,9 @@ void rtmsg_ifinfo(int type, struct net_d
int err = -ENOBUFS;
size_t if_info_size;