Am Montag, den 26.02.2018, 07:07 -0800 schrieb Andrey Smirnov:
> Check received frame length _before_ accepting next byte in order to
> avoid incorrectly rejecting payloads that are RAVE_SP_RX_BUFFER_SIZE
> long.
> 
> Cc: linux-kernel@vger.kernel.org
> Cc: cphe...@gmail.com
> > Cc: Lucas Stach <l.st...@pengutronix.de>
> > Cc: Lee Jones <lee.jo...@linaro.org>
> > Cc: Guenter Roeck <li...@roeck-us.net>
> Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>

Tested-by: Lucas Stach <l.st...@pengutronix.de>

> ---
>  drivers/mfd/rave-sp.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mfd/rave-sp.c b/drivers/mfd/rave-sp.c
> index cec1e309b31f..76fa32006a1b 100644
> --- a/drivers/mfd/rave-sp.c
> +++ b/drivers/mfd/rave-sp.c
> @@ -548,8 +548,6 @@ static int rave_sp_receive_buf(struct serdev_device 
> *serdev,
> >                     /* FALLTHROUGH */
>  
> >             case RAVE_SP_EXPECT_ESCAPED_DATA:
> > -                   deframer->data[deframer->length++] = byte;
> -
> >                     if (deframer->length == sizeof(deframer->data)) {
> >                             dev_warn(dev, "Bad frame: Too long\n");
> >                             /*
> @@ -564,6 +562,8 @@ static int rave_sp_receive_buf(struct serdev_device 
> *serdev,
> >                             goto reset_framer;
> >                     }
>  
> > +                   deframer->data[deframer->length++] = byte;
> +
> >                     /*
> >                      * We've extracted out special byte, now we
> >                      * can go back to regular data collecting

Reply via email to