X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Ffile_table.c;h=385bfd31512a17f4e4c6869a3ee8f32c456cd327;hb=16b9057804c02e2d351e9c8f606e909b43cbd9e7;hp=40bf4660f0a3aa18bf881c2b3c09dea95e0808ec;hpb=f8409abdc592e13cefbe4e4a24a84b3d5741e85f;p=linux-beck.git diff --git a/fs/file_table.c b/fs/file_table.c index 40bf4660f0a3..385bfd31512a 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -175,6 +175,12 @@ struct file *alloc_file(struct path *path, fmode_t mode, file->f_path = *path; file->f_inode = path->dentry->d_inode; file->f_mapping = path->dentry->d_inode->i_mapping; + if ((mode & FMODE_READ) && + likely(fop->read || fop->aio_read || fop->read_iter)) + mode |= FMODE_CAN_READ; + if ((mode & FMODE_WRITE) && + likely(fop->write || fop->aio_write || fop->write_iter)) + mode |= FMODE_CAN_WRITE; file->f_mode = mode; file->f_op = fop; if ((mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ)