|
|
@ -1,5 +1,7 @@
|
|
|
|
--- a/mm/shmem.c
|
|
|
|
Index: linux-2.6.38.2/mm/shmem.c
|
|
|
|
+++ b/mm/shmem.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/mm/shmem.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/mm/shmem.c 2011-03-28 17:18:35.142293910 +0200
|
|
|
|
@@ -30,6 +30,7 @@
|
|
|
|
@@ -30,6 +30,7 @@
|
|
|
|
#include <linux/module.h>
|
|
|
|
#include <linux/module.h>
|
|
|
|
#include <linux/percpu_counter.h>
|
|
|
|
#include <linux/percpu_counter.h>
|
|
|
@ -25,7 +27,7 @@
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* shmem_file_setup - get an unlinked file living in tmpfs
|
|
|
|
* shmem_file_setup - get an unlinked file living in tmpfs
|
|
|
|
* @name: name for dentry (to be seen in /proc/<pid>/maps
|
|
|
|
* @name: name for dentry (to be seen in /proc/<pid>/maps
|
|
|
|
@@ -2787,9 +2798,6 @@ int shmem_zero_setup(struct vm_area_stru
|
|
|
|
@@ -2787,10 +2798,7 @@ int shmem_zero_setup(struct vm_area_stru
|
|
|
|
if (IS_ERR(file))
|
|
|
|
if (IS_ERR(file))
|
|
|
|
return PTR_ERR(file);
|
|
|
|
return PTR_ERR(file);
|
|
|
|
|
|
|
|
|
|
|
@ -34,10 +36,13 @@
|
|
|
|
- vma->vm_file = file;
|
|
|
|
- vma->vm_file = file;
|
|
|
|
- vma->vm_ops = &shmem_vm_ops;
|
|
|
|
- vma->vm_ops = &shmem_vm_ops;
|
|
|
|
+ shmem_set_file(vma, file);
|
|
|
|
+ shmem_set_file(vma, file);
|
|
|
|
|
|
|
|
vma->vm_flags |= VM_CAN_NONLINEAR;
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
--- a/fs/file.c
|
|
|
|
Index: linux-2.6.38.2/fs/file.c
|
|
|
|
+++ b/fs/file.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/fs/file.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/fs/file.c 2011-03-28 17:18:24.755353654 +0200
|
|
|
|
@@ -264,6 +264,7 @@ int expand_files(struct files_struct *fi
|
|
|
|
@@ -264,6 +264,7 @@ int expand_files(struct files_struct *fi
|
|
|
|
/* All good, so we try */
|
|
|
|
/* All good, so we try */
|
|
|
|
return expand_fdtable(files, nr);
|
|
|
|
return expand_fdtable(files, nr);
|
|
|
@ -46,8 +51,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
static int count_open_files(struct fdtable *fdt)
|
|
|
|
static int count_open_files(struct fdtable *fdt)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
--- a/kernel/exit.c
|
|
|
|
Index: linux-2.6.38.2/kernel/exit.c
|
|
|
|
+++ b/kernel/exit.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/kernel/exit.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/kernel/exit.c 2011-03-28 17:18:24.755353654 +0200
|
|
|
|
@@ -513,6 +513,7 @@ struct files_struct *get_files_struct(st
|
|
|
|
@@ -513,6 +513,7 @@ struct files_struct *get_files_struct(st
|
|
|
|
|
|
|
|
|
|
|
|
return files;
|
|
|
|
return files;
|
|
|
@ -64,8 +71,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
void reset_files_struct(struct files_struct *files)
|
|
|
|
void reset_files_struct(struct files_struct *files)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
--- a/kernel/fork.c
|
|
|
|
Index: linux-2.6.38.2/kernel/fork.c
|
|
|
|
+++ b/kernel/fork.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/kernel/fork.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/kernel/fork.c 2011-03-28 17:18:24.755353654 +0200
|
|
|
|
@@ -193,6 +193,7 @@ void __put_task_struct(struct task_struc
|
|
|
|
@@ -193,6 +193,7 @@ void __put_task_struct(struct task_struc
|
|
|
|
if (!profile_handoff_task(tsk))
|
|
|
|
if (!profile_handoff_task(tsk))
|
|
|
|
free_task(tsk);
|
|
|
|
free_task(tsk);
|
|
|
@ -74,8 +83,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* macro override instead of weak attribute alias, to workaround
|
|
|
|
* macro override instead of weak attribute alias, to workaround
|
|
|
|
--- a/kernel/sched.c
|
|
|
|
Index: linux-2.6.38.2/kernel/sched.c
|
|
|
|
+++ b/kernel/sched.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/kernel/sched.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/kernel/sched.c 2011-03-28 17:18:24.757353643 +0200
|
|
|
|
@@ -4641,6 +4641,7 @@ int can_nice(const struct task_struct *p
|
|
|
|
@@ -4641,6 +4641,7 @@ int can_nice(const struct task_struct *p
|
|
|
|
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
|
|
|
|
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
|
|
|
|
capable(CAP_SYS_NICE));
|
|
|
|
capable(CAP_SYS_NICE));
|
|
|
@ -84,8 +95,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __ARCH_WANT_SYS_NICE
|
|
|
|
#ifdef __ARCH_WANT_SYS_NICE
|
|
|
|
|
|
|
|
|
|
|
|
--- a/mm/memory.c
|
|
|
|
Index: linux-2.6.38.2/mm/memory.c
|
|
|
|
+++ b/mm/memory.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/mm/memory.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/mm/memory.c 2011-03-28 17:18:24.757353643 +0200
|
|
|
|
@@ -1229,6 +1229,7 @@ unsigned long zap_page_range(struct vm_a
|
|
|
|
@@ -1229,6 +1229,7 @@ unsigned long zap_page_range(struct vm_a
|
|
|
|
tlb_finish_mmu(tlb, address, end);
|
|
|
|
tlb_finish_mmu(tlb, address, end);
|
|
|
|
return end;
|
|
|
|
return end;
|
|
|
@ -102,8 +115,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* We enter with non-exclusive mmap_sem (to exclude vma changes,
|
|
|
|
* We enter with non-exclusive mmap_sem (to exclude vma changes,
|
|
|
|
--- a/mm/vmalloc.c
|
|
|
|
Index: linux-2.6.38.2/mm/vmalloc.c
|
|
|
|
+++ b/mm/vmalloc.c
|
|
|
|
===================================================================
|
|
|
|
|
|
|
|
--- linux-2.6.38.2.orig/mm/vmalloc.c 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/mm/vmalloc.c 2011-03-28 17:18:24.758353638 +0200
|
|
|
|
@@ -1193,6 +1193,7 @@ void unmap_kernel_range(unsigned long ad
|
|
|
|
@@ -1193,6 +1193,7 @@ void unmap_kernel_range(unsigned long ad
|
|
|
|
vunmap_page_range(addr, end);
|
|
|
|
vunmap_page_range(addr, end);
|
|
|
|
flush_tlb_kernel_range(addr, end);
|
|
|
|
flush_tlb_kernel_range(addr, end);
|
|
|
@ -120,9 +135,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
|
|
|
|
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
|
|
|
|
void *caller)
|
|
|
|
void *caller)
|
|
|
|
--- a/include/linux/mm.h
|
|
|
|
Index: linux-2.6.38.2/include/linux/mm.h
|
|
|
|
+++ b/include/linux/mm.h
|
|
|
|
===================================================================
|
|
|
|
@@ -856,6 +856,7 @@ extern void show_free_areas(void);
|
|
|
|
--- linux-2.6.38.2.orig/include/linux/mm.h 2011-03-27 20:37:20.000000000 +0200
|
|
|
|
|
|
|
|
+++ linux-2.6.38.2/include/linux/mm.h 2011-03-28 17:18:24.758353638 +0200
|
|
|
|
|
|
|
|
@@ -863,6 +863,7 @@ extern void show_free_areas(void);
|
|
|
|
|
|
|
|
|
|
|
|
int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
|
|
|
int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
|
|
|
struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);
|
|
|
|
struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);
|
|
|
|