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,
const int high = gadget_is_dualspeed(func->gadget) &&
func->ffs->hs_descs_count;
int ret;
int ret, i;
/* Make it a single chunk, less management later on */
struct {
......@@ -2194,8 +2194,8 @@ static int ffs_func_bind(struct usb_configuration *c,
memset(data->eps, 0, sizeof data->eps);
memcpy(data->raw_descs, ffs->raw_descs + 16, sizeof data->raw_descs);
memset(data->inums, 0xff, sizeof data->inums);
for (ret = ffs->eps_count; ret; --ret)
data->eps[ret].num = -1;
for (i = 0; i < ffs->eps_count; i++)
data->eps[i].num = -1;
/* Save pointers */
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