X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=fs%2Ffile_table.c;h=385bfd31512a17f4e4c6869a3ee8f32c456cd327;hb=d9b68d89c2562814aaf67b890709f5aea4f7bf28;hp=40bf4660f0a3aa18bf881c2b3c09dea95e0808ec;hpb=14208b0ec56919f5333dd654b1a7d10765d0ad05;p=firefly-linux-kernel-4.4.55.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)