Re: [PATCH] usb: f_fs: Clear OS Extended descriptor counts to zero in ffs_data_reset()

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

 



On 4/2/2020 10:02 AM, Sriharsha Allenki wrote:
> From: Udipto Goswami <ugoswami@xxxxxxxxxxxxxx>
>
> For userspace functions using OS Descriptors, if a function also supplies
> Extended Property descriptors currently the counts and lengths stored in
> the ms_os_descs_ext_prop_{count,name_len,data_len} variables are not
> getting reset to 0 during an unbind or when the epfiles are closed. If
> the same function is re-bound and the descriptors are re-written, this
> results in those count/length variables to monotonically increase
> causing the VLA allocation in _ffs_func_bind() to grow larger and larger
> at each bind/unbind cycle and eventually fail to allocate.
>
> Fix this by clearing the ms_os_descs_ext_prop count & lengths to 0 in
> ffs_data_reset().
>
> Change-Id: I3b292fe5386ab54b53df2b9f15f07430dc3df24a
Please remove this.
> Fixes: f0175ab51993 ("usb: gadget: f_fs: OS descriptors support")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Udipto Goswami <ugoswami@xxxxxxxxxxxxxx>
> Signed-off-by: Sriharsha Allenki <sallenki@xxxxxxxxxxxxxx>
> ---
>  drivers/usb/gadget/function/f_fs.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
> index c81023b195c3..10f01f974f67 100644
> --- a/drivers/usb/gadget/function/f_fs.c
> +++ b/drivers/usb/gadget/function/f_fs.c
> @@ -1813,6 +1813,10 @@ static void ffs_data_reset(struct ffs_data *ffs)
>  	ffs->state = FFS_READ_DESCRIPTORS;
>  	ffs->setup_state = FFS_NO_SETUP;
>  	ffs->flags = 0;
> +
> +	ffs->ms_os_descs_ext_prop_count = 0;
> +	ffs->ms_os_descs_ext_prop_name_len = 0;
> +	ffs->ms_os_descs_ext_prop_data_len = 0;
>  }
>  
>  

Reviewed-by: Manu Gautam <mgautam@xxxxxxxxxxxxxx>


-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux