Commit c1bc1076 authored by Dan Carpenter's avatar Dan Carpenter Committed by Ben Hutchings

usb: f_fs: off by one bug in _ffs_func_bind()

commit 0015f915 upstream.

This loop is supposed to set all the .num[] values to -1 but it's off by
one so it skips the first element and sets one element past the end of
the array.

I've cleaned up the loop a little as well.

Fixes: ddf8abd2 ('USB: f_fs: the FunctionFS driver')
Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
[bwh: Backported to 3.2:
 - Adjust filename, context
 - Add 'i' for iteration but don't bother with 'eps_ptr' as the calculation is
   simpler here]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent 37f4f9e6
...@@ -2165,7 +2165,7 @@ static int ffs_func_bind(struct usb_configuration *c, ...@@ -2165,7 +2165,7 @@ static int ffs_func_bind(struct usb_configuration *c,
const int high = gadget_is_dualspeed(func->gadget) && const int high = gadget_is_dualspeed(func->gadget) &&
func->ffs->hs_descs_count; func->ffs->hs_descs_count;
int ret; int ret, i;
/* Make it a single chunk, less management later on */ /* Make it a single chunk, less management later on */
struct { struct {
...@@ -2194,8 +2194,8 @@ static int ffs_func_bind(struct usb_configuration *c, ...@@ -2194,8 +2194,8 @@ static int ffs_func_bind(struct usb_configuration *c,
memset(data->eps, 0, sizeof data->eps); memset(data->eps, 0, sizeof data->eps);
memcpy(data->raw_descs, ffs->raw_descs + 16, sizeof data->raw_descs); memcpy(data->raw_descs, ffs->raw_descs + 16, sizeof data->raw_descs);
memset(data->inums, 0xff, sizeof data->inums); memset(data->inums, 0xff, sizeof data->inums);
for (ret = ffs->eps_count; ret; --ret) for (i = 0; i < ffs->eps_count; i++)
data->eps[ret].num = -1; data->eps[i].num = -1;
/* Save pointers */ /* Save pointers */
func->eps = data->eps; func->eps = data->eps;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment