Re: [PATCH] nfs: fix v4.2 SEEK on files over 2 gigs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey Bruce,

I actually worked on a version of this patch on my own yesterday, too.  Looks like you beat me to submitting it!  :)

On 09/16/2015 05:21 PM, J. Bruce Fields wrote:
> From: "J. Bruce Fields" <bfields@xxxxxxxxxx>
> 
> We're incorrectly assigning a loff_t return to an int.  If SEEK_HOLE or
> SEEK_DATA returns an offset over 2^31 then the application will see a
> weird lseek() result (usually -EIO).

I saw roughly the same thing with xfstests generic/285.

> 
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: bdcc2cd14e4e "NFSv4.2: handle NFS-specific llseek errors"
> Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx>

Reviewed-by: Anna Schumaker <Anna.Schumaker@xxxxxxxxxx>

> ---
>  fs/nfs/nfs42proc.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
> index d731bbf974aa..0f020e4d8421 100644
> --- a/fs/nfs/nfs42proc.c
> +++ b/fs/nfs/nfs42proc.c
> @@ -175,10 +175,12 @@ loff_t nfs42_proc_llseek(struct file *filep, loff_t offset, int whence)
>  {
>  	struct nfs_server *server = NFS_SERVER(file_inode(filep));
>  	struct nfs4_exception exception = { };
> -	int err;
> +	loff_t err;
>  
>  	do {
>  		err = _nfs42_proc_llseek(filep, offset, whence);
> +		if (err >= 0)
> +			break;
>  		if (err == -ENOTSUPP)
>  			return -EOPNOTSUPP;
>  		err = nfs4_handle_exception(server, err, &exception);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux