[PATCH v4 2/5] ima: use fs method to read integrity data [updated]
From: jack@suse.cz (Jan Kara)
Date: 2017-08-02 08:01:12
Also in:
linux-fsdevel
On Tue 01-08-17 16:24:30, Mimi Zohar wrote:
From: Christoph Hellwig <hch@lst.de> Add a new ->integrity_read file operation to read data for integrity hash collection. This is defined to be equivalent to ->read_iter, except that it will be called with the i_rwsem held exclusively. Signed-off-by: Christoph Hellwig <hch@lst.de> Cc: Matthew Garrett <redacted> Cc: Jan Kara <jack@suse.com> Cc: "Theodore Ts'o" <tytso@mit.edu> Cc: Andreas Dilger <adilger.kernel@dilger.ca> Cc: Jaegeuk Kim <jaegeuk@kernel.org> Cc: Chao Yu <redacted> Cc: Steven Whitehouse <redacted> Cc: Bob Peterson <redacted> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Dave Kleikamp <shaggy@kernel.org> Cc: Ryusuke Konishi <redacted> Cc: Mark Fasheh <redacted> Cc: Joel Becker <jlbec@evilplan.org> Cc: Richard Weinberger <richard@nod.at> Cc: "Darrick J. Wong" <redacted> Cc: Hugh Dickins <hughd@google.com> Cc: Chris Mason <clm@fb.com> Signed-off-by: Mimi Zohar <redacted>
...
+static ssize_t ext4_file_integrity_read_iter(struct kiocb *iocb,
+ struct iov_iter *to)
+{
+ struct inode *inode = file_inode(iocb->ki_filp);
+ int o_direct = iocb->ki_flags & IOCB_DIRECT;
+
+ lockdep_assert_held(&inode->i_rwsem);
+ if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
+ return -EIO;
+
+ if (!iov_iter_count(to))
+ return 0; /* skip atime */
+
+#ifdef CONFIG_FS_DAX
+ if (IS_DAX(inode))
+ return dax_iomap_rw(iocb, to, &ext4_iomap_ops);
+#endif
+ if (o_direct)
+ return -EINVAL;
+ return generic_file_read_iter(iocb, to);
+}I have noticed this o_direct check - why is it only in ext4 and shouldn't rather higher layers make sure IOCB_DIRECT iocbs cannot reach .integrity_read() methods? Honza -- Jan Kara [off-list ref] SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html