Re: [PATCH v2] vfs: fix FIGETBSZ ioctl on an overlayfs file

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

 



On Thu, Oct 11, 2018 at 05:38:14PM +0300, Amir Goldstein wrote:
> Some anon_bdev filesystems (e.g. overlayfs, ceph) don't have s_blocksize
> set. Returning zero from FIGETBSZ ioctl results in a Floating point
> exception from the e2fsprogs utility filefrag, which divides the size of
> the file with the value returned by FIGETBSZ.
> 
> Fix the interface by returning -EINVAL for these filesystems.
> 
> Fixes: d1d04ef8572b ("ovl: stack file ops")
> Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx>
> ---
>  fs/ioctl.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/ioctl.c b/fs/ioctl.c
> index 2005529af560..0400297c8d72 100644
> --- a/fs/ioctl.c
> +++ b/fs/ioctl.c
> @@ -669,6 +669,9 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
>  		return ioctl_fiemap(filp, arg);
>  
>  	case FIGETBSZ:
> +		/* anon_bdev filesystems may not have a block size */
> +		if (!inode->i_sb->s_blocksize)
> +			return -EINVAL;
>  		return put_user(inode->i_sb->s_blocksize, argp);

Probably makes sense...  Out of curiosity - what does the same utility do
when faced with -EINVAL here?



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux