Prev: drivers:tmp.c Fix warning: variable 'rc' set but not used
Next: [PATCH V2] i2c-imx: do not allow interruptions when waiting for I2C to complete (resend)
From: Sergei Shtylyov on 15 Jun 2010 06:20 Hello. Michal Nazarewicz wrote: > During __gfs_do_config() some invalid pointers may be left > in usb_configuration::interfaces array from previous calls > to the __gfs_do_config() for the same configuration. This > will always happen if an user space function which has > a fewer then the last user space function registers itself. > Composite's set_config() function that a pointer after the > last interface in usb_configuration::interface is NULL > unless the array is full. > This patch makes the __gfs_do_config() make sure that if the > usb_configuration::interface is not full then a pointer > after the last interface is NULL. > Signed-off-by: Michal Nazarewicz <m.nazarewicz(a)samsung.com> > Signed-off-by: Kyungmin Park <kyungmin.park(a)samsung.com> > --- > drivers/usb/gadget/g_ffs.c | 11 +++++++++++ > 1 files changed, 11 insertions(+), 0 deletions(-) > diff --git a/drivers/usb/gadget/g_ffs.c b/drivers/usb/gadget/g_ffs.c > index 2f26470..da3a9e4 100644 > --- a/drivers/usb/gadget/g_ffs.c > +++ b/drivers/usb/gadget/g_ffs.c > @@ -392,6 +392,17 @@ static int __gfs_do_config(struct usb_configuration *c, > if (unlikely(ret < 0)) > return ret; > > + /* After previous do_configs there may be some invalid > + * pointers in c->interface array. This happens every time > + * a user space function with fewer interfaces than a user > + * space function that was run before the new one is run. The > + * compasit's set_config() assumes that if there is no more > + * then MAX_CONFIG_INTERFACES interfaces in a configuration > + * then there is a NULL pointer after the last interface in > + * c->interface array. We need to make sure this is true. */ According to CodingStyle, the preferred style of the multi-line comments is this: /* * bla * bla */ > + if (c->next_interface_id < ARRAY_SIZE(c->interface)) > + c->interface[c->next_interface_id] = NULL; > + > return 0; > } WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |