diff -Naur linux-2.6.23.orig/fs/exec.c linux-2.6.23/fs/exec.c --- linux-2.6.23.orig/fs/exec.c 2008-01-04 17:05:32.000000000 +1100 +++ linux-2.6.23/fs/exec.c 2008-01-04 17:14:20.000000000 +1100 @@ -660,6 +660,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); diff -Naur linux-2.6.23.orig/fs/Kconfig linux-2.6.23/fs/Kconfig --- linux-2.6.23.orig/fs/Kconfig 2008-01-04 17:05:35.000000000 +1100 +++ linux-2.6.23/fs/Kconfig 2008-01-04 17:14:20.000000000 +1100 @@ -531,6 +531,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 diff -Naur linux-2.6.23.orig/fs/Makefile linux-2.6.23/fs/Makefile --- linux-2.6.23.orig/fs/Makefile 2008-01-04 17:05:32.000000000 +1100 +++ linux-2.6.23/fs/Makefile 2008-01-04 17:14:20.000000000 +1100 @@ -53,6 +53,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/ diff -Naur linux-2.6.23.orig/include/linux/fs.h linux-2.6.23/include/linux/fs.h --- linux-2.6.23.orig/include/linux/fs.h 2008-01-04 17:05:22.000000000 +1100 +++ linux-2.6.23/include/linux/fs.h 2008-01-04 17:14:20.000000000 +1100 @@ -1187,6 +1187,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 *); int (*setlease)(struct file *, long, struct file_lock **); }; diff -Naur linux-2.6.23.orig/include/linux/mm.h linux-2.6.23/include/linux/mm.h --- linux-2.6.23.orig/include/linux/mm.h 2008-01-04 17:05:22.000000000 +1100 +++ linux-2.6.23/include/linux/mm.h 2008-01-04 17:14:20.000000000 +1100 @@ -168,6 +168,9 @@ unsigned long (*nopfn)(struct vm_area_struct *area, unsigned long address); +#define HAVE_VMOP_MPROTECT + int (*mprotect)(struct vm_area_struct * area, unsigned int newflags); + /* notification that a previously read-only page is about to become * writable, if an error is returned it will cause a SIGBUS */ int (*page_mkwrite)(struct vm_area_struct *vma, struct page *page); diff -Naur linux-2.6.23.orig/MAINTAINERS linux-2.6.23/MAINTAINERS --- linux-2.6.23.orig/MAINTAINERS 2008-01-04 17:06:21.000000000 +1100 +++ linux-2.6.23/MAINTAINERS 2008-01-04 17:39:29.000000000 +1100 @@ -1292,6 +1292,13 @@ L: netdev@vger.kernel.org S: Maintained +DMAPI +P: Silicon Graphics Inc +M: xfs-masters@oss.sgi.com +L: xfs@oss.sgi.com +W: http://oss.sgi.com/projects/xfs +S: Supported + DMA GENERIC OFFLOAD ENGINE SUBSYSTEM P: Shannon Nelson M: shannon.nelson@intel.com diff -Naur linux-2.6.23.orig/mm/mprotect.c linux-2.6.23/mm/mprotect.c --- linux-2.6.23.orig/mm/mprotect.c 2008-01-04 17:06:37.000000000 +1100 +++ linux-2.6.23/mm/mprotect.c 2008-01-04 17:14:20.000000000 +1100 @@ -286,6 +286,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;