lkml.org 
[lkml]   [2021]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 209/323] auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string
    Date
    From: Geert Uytterhoeven <geert@linux-m68k.org>

    [ Upstream commit afcb5a811ff3ab3969f09666535eb6018a160358 ]

    While writing an empty string to a device attribute is a no-op, and thus
    does not need explicit safeguards, the user can still write a single
    newline to an attribute file:

    echo > .../message

    If that happens, img_ascii_lcd_display() trims the newline, yielding an
    empty string, and causing an infinite loop in img_ascii_lcd_scroll().

    Fix this by adding a check for empty strings. Clear the display in case
    one is encountered.

    Fixes: 0cad855fbd083ee5 ("auxdisplay: img-ascii-lcd: driver for simple ASCII LCD displays")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/auxdisplay/img-ascii-lcd.c | 10 ++++++++++
    1 file changed, 10 insertions(+)

    diff --git a/drivers/auxdisplay/img-ascii-lcd.c b/drivers/auxdisplay/img-ascii-lcd.c
    index 834509506ef64..c4bc6723acfa5 100644
    --- a/drivers/auxdisplay/img-ascii-lcd.c
    +++ b/drivers/auxdisplay/img-ascii-lcd.c
    @@ -284,6 +284,16 @@ static int img_ascii_lcd_display(struct img_ascii_lcd_ctx *ctx,
    if (msg[count - 1] == '\n')
    count--;

    + if (!count) {
    + /* clear the LCD */
    + devm_kfree(&ctx->pdev->dev, ctx->message);
    + ctx->message = NULL;
    + ctx->message_len = 0;
    + memset(ctx->curr, ' ', ctx->cfg->num_chars);
    + ctx->cfg->update(ctx);
    + return 0;
    + }
    +
    new_msg = devm_kmalloc(&ctx->pdev->dev, count + 1, GFP_KERNEL);
    if (!new_msg)
    return -ENOMEM;
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-24 14:08    [W:5.973 / U:0.452 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site