• Marcin Jurkowski's avatar
    w1: fix oops when w1_search is called from netlink connector · 9d1817ca
    Marcin Jurkowski authored
    On Sat, Mar 02, 2013 at 10:45:10AM +0100, Sven Geggus wrote:
    > This is the bad commit I found doing git bisect:
    > 04f482fa is the first bad commit
    > commit 04f482fa
    > Author: Patrick McHardy <kaber@trash.net>
    > Date:   Mon Mar 28 08:39:36 2011 +0000
    
    Good job. I was too lazy to bisect for bad commit;)
    
    Reading the code I found problematic kthread_should_stop call from netlink
    connector which causes the oops. After applying a patch, I've been testing
    owfs+w1 setup for nearly two days and it seems to work very reliable (no
    hangs, no memleaks etc).
    More detailed description and possible fix is given below:
    
    Function w1_search can be called from either kthread or netlink callback.
    While the former works fine, the latter causes oops due to kthread_should_stop
    invocation.
    
    This patch adds a check if w1_search is serving netlink command, skipping
    kthread_should_stop invocation if so.
    Signed-off-by: default avatarMarcin Jurkowski <marcin1j@gmail.com>
    Acked-by: default avatarEvgeniy Polyakov <zbr@ioremap.net>
    Cc: Josh Boyer <jwboyer@gmail.com>
    Tested-by: default avatarSven Geggus <lists@fuchsschwanzdomain.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org> # 3.0+
    9d1817ca
w1.c 25.9 KB