mirror of https://gitee.com/openkylin/linux.git
clk: Really fix deadlock with mmap_sem
Commit6314b6796e
(clk: Don't hold prepare_lock across debugfs creation, 2014-09-04) forgot to update one place where we hold the prepare_lock while creating debugfs directories. This means we still have the chance of a deadlock that the commit was trying to fix. Actually fix it by moving the debugfs creation outside the prepare_lock. Cc: <stable@vger.kernel.org> # 3.18 Reported-by: Russell King <rmk+kernel@arm.linux.org.uk> Fixes:6314b6796e
"clk: Don't hold prepare_lock across debugfs creation" Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Michael Turquette <mturquette@linaro.org> [mturquette@linaro.org: removed lockdep_assert]
This commit is contained in:
parent
c9b928148e
commit
89f7e9de59
|
@ -240,7 +240,6 @@ static const struct file_operations clk_dump_fops = {
|
|||
.release = single_release,
|
||||
};
|
||||
|
||||
/* caller must hold prepare_lock */
|
||||
static int clk_debug_create_one(struct clk *clk, struct dentry *pdentry)
|
||||
{
|
||||
struct dentry *d;
|
||||
|
@ -1944,7 +1943,6 @@ int __clk_init(struct device *dev, struct clk *clk)
|
|||
else
|
||||
clk->rate = 0;
|
||||
|
||||
clk_debug_register(clk);
|
||||
/*
|
||||
* walk the list of orphan clocks and reparent any that are children of
|
||||
* this clock
|
||||
|
@ -1979,6 +1977,9 @@ int __clk_init(struct device *dev, struct clk *clk)
|
|||
out:
|
||||
clk_prepare_unlock();
|
||||
|
||||
if (!ret)
|
||||
clk_debug_register(clk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue