aboutsummaryrefslogtreecommitdiff
path: root/fs/open.c
diff options
context:
space:
mode:
authorSteve French <sfrench@hera.kernel.org>2005-06-30 20:57:39 -0700
committerSteve French <sfrench@hera.kernel.org>2005-06-30 20:57:39 -0700
commitab997aaeb9cf7a0da1cecc46c5bb6c7262416917 (patch)
treeb8a09ed676101a2478d17c1d71da1274293c3c64 /fs/open.c
parentfa5cfae37799177769e9ae2c0527fbdfea462fa9 (diff)
parentbd53d1270f51c6cfb53b06c8f93fd42327871d6b (diff)
Merge with rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'fs/open.c')
-rw-r--r--fs/open.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/open.c b/fs/open.c
index 8ec63f73591..3f4a4286fdc 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -808,7 +808,9 @@ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags)
/* NB: we're sure to have correct a_ops only after f_op->open */
if (f->f_flags & O_DIRECT) {
- if (!f->f_mapping->a_ops || !f->f_mapping->a_ops->direct_IO) {
+ if (!f->f_mapping->a_ops ||
+ ((!f->f_mapping->a_ops->direct_IO) &&
+ (!f->f_mapping->a_ops->get_xip_page))) {
fput(f);
f = ERR_PTR(-EINVAL);
}