lkml.org 
[lkml]   [2019]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.9 03/66] serial: mxs-auart: Fix potential infinite loop
    Date
    From: Anton Vasilyev <vasilyev@ispras.ru>

    [ Upstream commit 5963e8a3122471cadfe0eba41c4ceaeaa5c8bb4d ]

    On the error path of mxs_auart_request_gpio_irq() is performed
    backward iterating with index i of enum type. Underline enum type
    may be unsigned char. In this case check (--i >= 0) will be always
    true and error handling goes into infinite loop.

    The patch changes the check so that it is valid for signed and unsigned
    types.

    Found by Linux Driver Verification project (linuxtesting.org).

    Signed-off-by: Anton Vasilyev <vasilyev@ispras.ru>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/tty/serial/mxs-auart.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
    index 1d9d778828bae..515bf18c82943 100644
    --- a/drivers/tty/serial/mxs-auart.c
    +++ b/drivers/tty/serial/mxs-auart.c
    @@ -1635,8 +1635,9 @@ static int mxs_auart_request_gpio_irq(struct mxs_auart_port *s)

    /*
    * If something went wrong, rollback.
    + * Be careful: i may be unsigned.
    */
    - while (err && (--i >= 0))
    + while (err && (i-- > 0))
    if (irq[i] >= 0)
    free_irq(irq[i], s);

    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-10 04:03    [W:2.143 / U:1.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site