lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.14 623/849] soundwire: bus: stop dereferencing invalid slave pointer
    Date
    From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

    [ Upstream commit 4cbbe74d906be0bcffbe1e74b43a00f99626a69c ]

    Slave pointer is invalid after end of list iteration, using this
    would result in below Memory abort.

    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004
    ...
    Call trace:
    __dev_printk+0x34/0x7c
    _dev_warn+0x6c/0x90
    sdw_bus_exit_clk_stop+0x194/0x1d0
    swrm_runtime_resume+0x13c/0x238
    pm_generic_runtime_resume+0x2c/0x48
    __rpm_callback+0x44/0x150
    rpm_callback+0x6c/0x78
    rpm_resume+0x314/0x558
    rpm_resume+0x378/0x558
    rpm_resume+0x378/0x558
    __pm_runtime_resume+0x3c/0x88

    Use bus->dev instead to print this error message.

    Fixes: b50bb8ba369cd ("soundwire: bus: handle -ENODATA errors in clock stop/start sequences")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20211012101521.32087-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/soundwire/bus.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
    index 3e6d4addac2f6..98c526aaf24b8 100644
    --- a/drivers/soundwire/bus.c
    +++ b/drivers/soundwire/bus.c
    @@ -1103,7 +1103,7 @@ int sdw_bus_exit_clk_stop(struct sdw_bus *bus)
    if (!simple_clk_stop) {
    ret = sdw_bus_wait_for_clk_prep_deprep(bus, SDW_BROADCAST_DEV_NUM);
    if (ret < 0)
    - dev_warn(&slave->dev, "clock stop deprepare wait failed:%d\n", ret);
    + dev_warn(bus->dev, "clock stop deprepare wait failed:%d\n", ret);
    }

    list_for_each_entry(slave, &bus->slaves, node) {
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-16 00:13    [W:4.086 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site