On Fri, Dec 20, 2019 at 09:15:24PM +0000, Malcolm Priestley wrote: > vnt_control_out appears to fail when BBREG is greater than 64 writes. > > Create new function that will relay an array in no larger than > the indicated block size. > > It appears that this command has always failed but was ignored by > driver until the introduction of error checking. > > Cc: stable <stable@xxxxxxxxxxxxxxx> # v5.3+ Please add the Fixes tag. > Signed-off-by: Malcolm Priestley <tvboxspy@xxxxxxxxx> > --- > drivers/staging/vt6656/baseband.c | 4 ++-- > drivers/staging/vt6656/usbpipe.c | 17 +++++++++++++++++ > drivers/staging/vt6656/usbpipe.h | 5 +++++ > 3 files changed, 24 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c > index 8d19ae71e7cc..4e651b698617 100644 > --- a/drivers/staging/vt6656/baseband.c > +++ b/drivers/staging/vt6656/baseband.c > @@ -449,8 +449,8 @@ int vnt_vt3184_init(struct vnt_private *priv) > > memcpy(array, addr, length); > > - ret = vnt_control_out(priv, MESSAGE_TYPE_WRITE, 0, > - MESSAGE_REQUEST_BBREG, length, array); > + ret = vnt_control_out_blocks(priv, VNT_REG_BLOCK_SIZE, > + MESSAGE_REQUEST_BBREG, length, array); > if (ret) > goto end; > > diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c > index 488ebd98773d..d977d4777e4f 100644 > --- a/drivers/staging/vt6656/usbpipe.c > +++ b/drivers/staging/vt6656/usbpipe.c > @@ -76,6 +76,23 @@ int vnt_control_out_u8(struct vnt_private *priv, u8 reg, u8 reg_off, u8 data) > reg_off, reg, sizeof(u8), &data); > } > > +int vnt_control_out_blocks(struct vnt_private *priv, > + u16 block, u8 reg, u16 length, u8 *data) > +{ > + int ret = 0, i; > + > + for (i = 0; i < length; i += block) { > + u16 len = min_t(int, length - i, block); > + > + ret = vnt_control_out(priv, MESSAGE_TYPE_WRITE, > + i, reg, len, data + i); > + if (ret) > + goto end; > + } > +end: > + return ret; Just do a direct return. Goto end is pointless. It hurts readability because with direct returns we can immediately see that this returns zero on success. regards, dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel