netfs: Fix i_dio_count leak on DIO read past i_size

If netfs_begin_read gets a NETFS_DIO_READ request that begins
past i_size, it won't perform any i/o and just return 0.  This
will leak an increment to i_dio_count that is done at the top
of the function.

This can cause subsequent buffered read requests to block
indefinitely, waiting for a non existing dio operation to complete.

Add a inode_dio_end() for the NETFS_DIO_READ case, before returning.

Signed-off-by: Marc Dionne <[email protected]>
Signed-off-by: David Howells <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Jeff Layton <[email protected]>
cc: Jeff Layton <[email protected]>
cc:  <[email protected]>
cc:  <[email protected]>
cc:  <[email protected]>
Signed-off-by: Christian Brauner <[email protected]>
1 file changed