lkml.org 
[lkml]   [2023]   [Mar]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 22/23] interconnect: Teach lockdep about icc_bw_lock order
    Date
    From: Rob Clark <robdclark@chromium.org>

    Teach lockdep that icc_bw_lock is needed in code paths that could
    deadlock if they trigger reclaim.

    Signed-off-by: Rob Clark <robdclark@chromium.org>
    ---
    drivers/interconnect/core.c | 10 +++++++++-
    1 file changed, 9 insertions(+), 1 deletion(-)

    diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
    index f7251784765f..5619963ee85c 100644
    --- a/drivers/interconnect/core.c
    +++ b/drivers/interconnect/core.c
    @@ -1127,13 +1127,21 @@ void icc_sync_state(struct device *dev)
    }
    }
    }
    + mutex_unlock(&icc_bw_lock);
    mutex_unlock(&icc_lock);
    }
    EXPORT_SYMBOL_GPL(icc_sync_state);

    static int __init icc_init(void)
    {
    - struct device_node *root = of_find_node_by_path("/");
    + struct device_node *root;
    +
    + /* Teach lockdep about lock ordering wrt. shrinker: */
    + fs_reclaim_acquire(GFP_KERNEL);
    + might_lock(&icc_bw_lock);
    + fs_reclaim_release(GFP_KERNEL);
    +
    + root = of_find_node_by_path("/");

    providers_count = of_count_icc_providers(root);
    of_node_put(root);
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-03-27 01:09    [W:3.240 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site