Merge remote-tracking branch 'ovl/misc' into work.misc
[cascardo/linux.git] / fs / aio.c
index fb8e45b..1157e13 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -239,7 +239,12 @@ static struct dentry *aio_mount(struct file_system_type *fs_type,
        static const struct dentry_operations ops = {
                .d_dname        = simple_dname,
        };
-       return mount_pseudo(fs_type, "aio:", NULL, &ops, AIO_RING_MAGIC);
+       struct dentry *root = mount_pseudo(fs_type, "aio:", NULL, &ops,
+                                          AIO_RING_MAGIC);
+
+       if (!IS_ERR(root))
+               root->d_sb->s_iflags |= SB_I_NOEXEC;
+       return root;
 }
 
 /* aio_setup
@@ -269,14 +274,17 @@ __initcall(aio_setup);
 static void put_aio_ring_file(struct kioctx *ctx)
 {
        struct file *aio_ring_file = ctx->aio_ring_file;
+       struct address_space *i_mapping;
+
        if (aio_ring_file) {
                truncate_setsize(aio_ring_file->f_inode, 0);
 
                /* Prevent further access to the kioctx from migratepages */
-               spin_lock(&aio_ring_file->f_inode->i_mapping->private_lock);
-               aio_ring_file->f_inode->i_mapping->private_data = NULL;
+               i_mapping = aio_ring_file->f_inode->i_mapping;
+               spin_lock(&i_mapping->private_lock);
+               i_mapping->private_data = NULL;
                ctx->aio_ring_file = NULL;
-               spin_unlock(&aio_ring_file->f_inode->i_mapping->private_lock);
+               spin_unlock(&i_mapping->private_lock);
 
                fput(aio_ring_file);
        }