Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751427AbdIPSUu (ORCPT ); Sat, 16 Sep 2017 14:20:50 -0400 Received: from mail-it0-f45.google.com ([209.85.214.45]:47124 "EHLO mail-it0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751253AbdIPSUs (ORCPT ); Sat, 16 Sep 2017 14:20:48 -0400 X-Google-Smtp-Source: AOwi7QDinj8RuD/vDPEZzze6uJBMCzn3a1x0G3nq4AyX32rRXHvYdERMkLK9M8wsN9ssq3q1DVC/WvCg3kWsH610SXY= MIME-Version: 1.0 In-Reply-To: <1505507142.4200.103.camel@linux.vnet.ibm.com> References: <1505451494-30228-1-git-send-email-zohar@linux.vnet.ibm.com> <1505451494-30228-4-git-send-email-zohar@linux.vnet.ibm.com> <1505507142.4200.103.camel@linux.vnet.ibm.com> From: Linus Torvalds Date: Sat, 16 Sep 2017 11:20:47 -0700 X-Google-Sender-Auth: WZpMiYjgzm9VZBLjjPiP64x8wcQ Message-ID: Subject: Re: [PATCH 3/3] ima: use fs method to read integrity data (updated patch description) To: Mimi Zohar Cc: LSM List , Christoph Hellwig , linux-ima-devel@lists.sourceforge.net, Christoph Hellwig , James Morris , Linux Kernel Mailing List , Matthew Garrett , Jan Kara , "Theodore Ts'o" , Andreas Dilger , Jaegeuk Kim , Chao Yu , Steven Whitehouse , Bob Peterson , David Woodhouse , Dave Kleikamp , Ryusuke Konishi , Mark Fasheh , Joel Becker , Richard Weinberger , "Darrick J. Wong" , Hugh Dickins , Chris Mason Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1282 Lines: 30 On Fri, Sep 15, 2017 at 1:25 PM, Mimi Zohar wrote: > > To resolve this locking problem, this patch defines a new > ->integrity_read file operation method, which is equivalent to > ->read_iter, except that it will not take the i_rwsem lock, but will > be called with the i_rwsem held exclusively. > > Since taking the i_rwsem exclusively is not required for reading the > file in order to calculate the file hash, the code only verifies > that the lock has been taken. Ok, so I'm onboard with the commit message now, but realized that I'm not actually convinced that i_rwsem is even meaningful. Sure, generic_file_write_iter() does take that lock exclusively, but not everybody uses generic_file_write_iter() at all for writing. For example, xfs still uses that i_rwsem, but for block-aligned writes it will only get it shared. And I'm not convinced some other filesystem might not end up using some other lock entirely. So I'm basically not entirely convinced that these i_rwsem games make any sense at all. The filesystem can do its own locking, and I'm starting to think that it would be better to just pass this "this is an integrity read" down to the filesystem, and expect the filesystem to do the locking based on that. Linus