%patch
Index: 2.6.x-xfs/MAINTAINERS
===================================================================
--- 2.6.x-xfs.orig/MAINTAINERS 2006-06-06 15:26:43.768811777 +1000
+++ 2.6.x-xfs/MAINTAINERS 2006-06-06 15:30:24.495656861 +1000
@@ -3183,6 +3183,14 @@
W: http://oss.sgi.com/projects/xfs
S: Supported
+DMAPI
+P: Silicon Graphics Inc
+M: xfs-masters@oss.sgi.com
+M: vapo@sgi.com
+L: xfs@oss.sgi.com
+W: http://oss.sgi.com/projects/xfs
+S: Supported
+
X86 3-LEVEL PAGING (PAE) SUPPORT
P: Ingo Molnar
M: mingo@redhat.com
Index: 2.6.x-xfs/fs/Kconfig
===================================================================
--- 2.6.x-xfs.orig/fs/Kconfig 2006-05-29 11:50:51.324694274 +1000
+++ 2.6.x-xfs/fs/Kconfig 2006-06-06 15:29:49.162566125 +1000
@@ -405,6 +405,25 @@
If unsure, say Y.
+config DMAPI
+ tristate "DMAPI support"
+ help
+ The Data Management API is a system interface used to implement
+ the interface defined in the X/Open document:
+ "Systems Management: Data Storage Management (XDSM) API",
+ dated February 1997. This interface is used by hierarchical
+ storage management systems.
+
+ If any DMAPI-capable filesystem is built into the kernel, then
+ DMAPI must also be built into the kernel.
+
+config DMAPI_DEBUG
+ bool "DMAPI debugging support"
+ depends on DMAPI
+ help
+ If you don't know whether you need it, then you don't need it:
+ answer N.
+
config QUOTA
bool "Quota support"
help
Index: 2.6.x-xfs/fs/Makefile
===================================================================
--- 2.6.x-xfs.orig/fs/Makefile 2006-05-29 11:50:51.342269996 +1000
+++ 2.6.x-xfs/fs/Makefile 2006-06-06 15:29:49.163542555 +1000
@@ -40,6 +40,8 @@
obj-$(CONFIG_QFMT_V2) += quota_v2.o
obj-$(CONFIG_QUOTACTL) += quota.o
+obj-$(CONFIG_DMAPI) += dmapi/
+
obj-$(CONFIG_DNOTIFY) += dnotify.o
obj-$(CONFIG_PROC_FS) += proc/
Index: 2.6.x-xfs/fs/exec.c
===================================================================
--- 2.6.x-xfs.orig/fs/exec.c 2006-05-29 11:50:51.211428514 +1000
+++ 2.6.x-xfs/fs/exec.c 2006-06-06 15:29:49.164518985 +1000
@@ -492,6 +492,13 @@
if (!err) {
file = nameidata_to_filp(&nd, O_RDONLY);
if (!IS_ERR(file)) {
+ if (file->f_op && file->f_op->open_exec) {
+ err = file->f_op->open_exec(inode);
+ if (err) {
+ fput(file);
+ return ERR_PTR(err);
+ }
+ }
err = deny_write_access(file);
if (err) {
fput(file);
Index: 2.6.x-xfs/include/linux/mm.h
===================================================================
--- 2.6.x-xfs.orig/include/linux/mm.h 2006-05-29 11:50:52.040416708 +1000
+++ 2.6.x-xfs/include/linux/mm.h 2006-06-06 15:29:49.166471844 +1000
@@ -200,6 +200,8 @@
void (*close)(struct vm_area_struct * area);
struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int *type);
int (*populate)(struct vm_area_struct * area, unsigned long address, unsigned long len, pgprot_t prot, unsigned long pgoff, int nonblock);
+#define HAVE_VMOP_MPROTECT
+ int (*mprotect)(struct vm_area_struct * area, unsigned int newflags);
#ifdef CONFIG_NUMA
int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new);
struct mempolicy *(*get_policy)(struct vm_area_struct *vma,
Index: 2.6.x-xfs/include/linux/fs.h
===================================================================
--- 2.6.x-xfs.orig/include/linux/fs.h 2006-05-29 11:50:52.001359550 +1000
+++ 2.6.x-xfs/include/linux/fs.h 2006-06-06 15:29:49.168424704 +1000
@@ -1042,6 +1042,8 @@
int (*flock) (struct file *, int, struct file_lock *);
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+#define HAVE_FOP_OPEN_EXEC
+ int (*open_exec) (struct inode *);
};
struct inode_operations {
Index: 2.6.x-xfs/mm/mprotect.c
===================================================================
--- 2.6.x-xfs.orig/mm/mprotect.c 2006-05-29 11:50:52.362638268 +1000
+++ 2.6.x-xfs/mm/mprotect.c 2006-06-06 15:29:49.169401134 +1000
@@ -255,6 +255,11 @@
if (error)
goto out;
+ if (vma->vm_ops && vma->vm_ops->mprotect) {
+ error = vma->vm_ops->mprotect(vma, newflags);
+ if (error < 0)
+ goto out;
+ }
tmp = vma->vm_end;
if (tmp > end)
tmp = end;
%diffstat
MAINTAINERS | 8 ++++++++
fs/Kconfig | 19 +++++++++++++++++++
fs/Makefile | 2 ++
fs/exec.c | 7 +++++++
include/linux/fs.h | 2 ++
include/linux/mm.h | 2 ++
mm/mprotect.c | 5 +++++
7 files changed, 45 insertions(+)