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