• Thierry Reding's avatar
    pinctrl: Initialize pinctrl_dev.node · 46daed6e
    Thierry Reding authored
    The struct pinctrl_dev's node field is not properly set up, which means
    the .prev and .next fields will be NULL. That's not something that the
    linked list code can deal with, so extra care must be taken when using
    these fields. An example of this is introduced in commit 3429fb3c
    ("pinctrl: Fix panic when pinctrl devices with hogs are unregistered")
    where list_del() is made conditional on the pinctrl device being part
    of the pinctrl device list. This is to ensure that list_del() won't
    crash upon encountering a NULL pointer in .prev and/or .next.
    
    After initializing the list head there's no need to jump through these
    extra hoops and list_del() will work unconditionally. This is because
    the initialized list head points to itself and therefore the .prev and
    .next fields can be properly dereferenced.
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    46daed6e
core.c 55 KB