On Thu, Jun 18, 2020 at 06:56:39AM -0700, Christoph Hellwig wrote: > On Thu, Jun 18, 2020 at 02:37:37PM +0200, Andreas Gruenbacher wrote: > > On Thu, Jun 18, 2020 at 2:32 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > > On Wed, Jun 17, 2020 at 06:39:01PM -0700, Darrick J. Wong wrote: > > > > > - if (WARN_ON(iomap.offset > pos)) > > > > > - return -EIO; > > > > > - if (WARN_ON(iomap.length == 0)) > > > > > - return -EIO; > > > > > + if (WARN_ON(iomap.offset > pos) || WARN_ON(iomap.length == 0)) { > > > > > > > > Why combine these WARN_ON? Before, you could distinguish between your > > > > iomap_begin method returning zero length vs. bad offset. > > > > > > Does it matter? They're both the same problem -- the filesystem has > > > returned an invalid iomap. I'd go further and combine the two: > > > > > > if (WARN_ON(iomap.offset > pos || iomap.length == 0)) { > > > > > > that'll save a few bytes of .text > > > > That would be fine by me as well. Christoph may have wanted separate > > warnings for a particular reason though. > > Yes. The line number in the WARN_ON will tell you which condition > you if they are separate, which is really useful to diagnose what is > going on. Thinking about it, wouldn't the second test be better replaced with: if (WARN_ON(iomap.offset + iomap.length <= pos)) in case the filesystem returns an extent which finishes before pos? This would be a superset of the test for length being 0.