lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 096/239] pcmcia: fix setting of kthread task states
    Date
    From: Dominik Brodowski <linux@dominikbrodowski.net>

    [ Upstream commit fbb3485f1f931102d8ba606f1c28123f5b48afa3 ]

    We need to set TASK_INTERRUPTIBLE before calling kthread_should_stop().
    Otherwise, kthread_stop() might see that the pccardd thread is still
    in TASK_RUNNING state and fail to wake it up.

    Additionally, we only need to set the state back to TASK_RUNNING if
    kthread_should_stop() breaks the loop.

    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Fixes: d3046ba809ce ("pcmcia: fix a boot time warning in pcmcia cs code")
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pcmcia/cs.c | 8 +++-----
    1 file changed, 3 insertions(+), 5 deletions(-)

    diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
    index 8c8caec3a72cc..182e5ef4ab83d 100644
    --- a/drivers/pcmcia/cs.c
    +++ b/drivers/pcmcia/cs.c
    @@ -669,18 +669,16 @@ static int pccardd(void *__skt)
    if (events || sysfs_events)
    continue;

    + set_current_state(TASK_INTERRUPTIBLE);
    if (kthread_should_stop())
    break;

    - set_current_state(TASK_INTERRUPTIBLE);
    -
    schedule();

    - /* make sure we are running */
    - __set_current_state(TASK_RUNNING);
    -
    try_to_freeze();
    }
    + /* make sure we are running before we exit */
    + __set_current_state(TASK_RUNNING);

    /* shut down socket, if a device is still present */
    if (skt->state & SOCKET_PRESENT) {
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 21:11    [W:4.153 / U:0.412 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site