Re: [PATCH v8 26/32] fanotify: WARN_ON against too large file handles

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

 



On Mon 18-10-21 21:00:09, Gabriel Krisman Bertazi wrote:
> struct fanotify_error_event, at least, is preallocated and isn't able to
> to handle arbitrarily large file handles.  Future-proof the code by
> complaining loudly if a handle larger than MAX_HANDLE_SZ is ever found.
> 
> Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxx>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

								Honza

> ---
>  fs/notify/fanotify/fanotify.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/notify/fanotify/fanotify.c b/fs/notify/fanotify/fanotify.c
> index cedcb1546804..45df610debbe 100644
> --- a/fs/notify/fanotify/fanotify.c
> +++ b/fs/notify/fanotify/fanotify.c
> @@ -360,13 +360,23 @@ static u32 fanotify_group_event_mask(struct fsnotify_group *group,
>  static int fanotify_encode_fh_len(struct inode *inode)
>  {
>  	int dwords = 0;
> +	int fh_len;
>  
>  	if (!inode)
>  		return 0;
>  
>  	exportfs_encode_inode_fh(inode, NULL, &dwords, NULL);
> +	fh_len = dwords << 2;
>  
> -	return dwords << 2;
> +	/*
> +	 * struct fanotify_error_event might be preallocated and is
> +	 * limited to MAX_HANDLE_SZ.  This should never happen, but
> +	 * safeguard by forcing an invalid file handle.
> +	 */
> +	if (WARN_ON_ONCE(fh_len > MAX_HANDLE_SZ))
> +		return 0;
> +
> +	return fh_len;
>  }
>  
>  /*
> -- 
> 2.33.0
> 
-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux