Re: [PATCH] watchdog: imx2_wdg: Save the actual timeout value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/15/24 08:14, L.Q wrote:
Well
If I first set a timeout value greater than 128 and then start the watchdog, the watchdog timeout value is illegal.
In the function 'imx2_wdt_start', there is no validity check on the timeout value


static int imx2_wdt_start(struct watchdog_device *wdog)
{
        struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog);

        if (imx2_wdt_is_running(wdev))
                imx2_wdt_set_timeout(wdog, wdog->timeout);
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        else
                imx2_wdt_setup(wdog);
...

static int imx2_wdt_set_timeout(struct watchdog_device *wdog,
                                unsigned int new_timeout)
{
        unsigned int actual;

        actual = min(new_timeout, IMX2_WDT_MAX_TIME);
	^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        __imx2_wdt_set_timeout(wdog, actual);
                                     ^^^^^^
        wdog->timeout = new_timeout;
        return 0;
}

Please point out the code path where an attempt is made to write
a value larger than IMX2_WDT_MAX_TIME into the chip.

Guenter

---- Replied Message ----
From	Guenter Roeck<linux@xxxxxxxxxxxx> <mailto:undefined>
Date	6/15/2024 22:18
To	LongQiang<lqking7735@xxxxxxx>,
<mailto:lqking7735@xxxxxxx><wim@xxxxxxxxxxxxxxxxxx> <mailto:wim@xxxxxxxxxxxxxxxxxx>
Cc	<shawnguo@xxxxxxxxxx>,
<mailto:shawnguo@xxxxxxxxxx><s.hauer@xxxxxxxxxxxxxx>,
<mailto:s.hauer@xxxxxxxxxxxxxx><kernel@xxxxxxxxxxxxxx>,
<mailto:kernel@xxxxxxxxxxxxxx><festevam@xxxxxxxxx>,
<mailto:festevam@xxxxxxxxx><linux-watchdog@xxxxxxxxxxxxxxx>,
<mailto:linux-watchdog@xxxxxxxxxxxxxxx><imx@xxxxxxxxxxxxxxx>,
<mailto:imx@xxxxxxxxxxxxxxx><linux-arm-kernel@xxxxxxxxxxxxxxxxxxx> <mailto:linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>
Subject	Re: [PATCH] watchdog: imx2_wdg: Save the actual timeout value

On 6/15/24 07:10, LongQiang wrote:

    When setting the timeout, the effective timeout value should be saved.
    Otherwise, the illegal timeout will take effect at 'start'.

    Signed-off-by: LongQiang <lqking7735@xxxxxxx>
    ---
    drivers/watchdog/imx2_wdt.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
    index 42e8ffae18dd..d4a4d4c58c3f 100644
    --- a/drivers/watchdog/imx2_wdt.c
    +++ b/drivers/watchdog/imx2_wdt.c
    @@ -196,7 +196,7 @@ static int imx2_wdt_set_timeout(struct watchdog_device *wdog,

    actual = min(new_timeout, IMX2_WDT_MAX_TIME);
    __imx2_wdt_set_timeout(wdog, actual);
    -  wdog->timeout = new_timeout;
    +  wdog->timeout = actual;
    return 0;
    }

No, that would be wrong.

NACK.

Guenter






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux