Message ID | 20211118010453.843286-1-robdclark@gmail.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [1/2] ASoC: rt5682: Fix crash due to out of scope stack vars | expand |
Quoting Rob Clark (2021-11-17 17:04:52) > From: Rob Clark <robdclark@chromium.org> > > Move the declaration of temporary arrays to somewhere that won't go out > of scope before the devm_clk_hw_register() call, lest we be at the whim > of the compiler for whether those stack variables get overwritten. > > Fixes a crash seen with gcc version 11.2.1 20210728 (Red Hat 11.2.1-1) > > Fixes: edbd24ea1e5c ("ASoC: rt5682: Drop usage of __clk_get_name()") > Signed-off-by: Rob Clark <robdclark@chromium.org> > --- Reviewed-by: Stephen Boyd <swboyd@chromium.org>
On Wed, 17 Nov 2021 17:04:52 -0800, Rob Clark wrote: > From: Rob Clark <robdclark@chromium.org> > > Move the declaration of temporary arrays to somewhere that won't go out > of scope before the devm_clk_hw_register() call, lest we be at the whim > of the compiler for whether those stack variables get overwritten. > > Fixes a crash seen with gcc version 11.2.1 20210728 (Red Hat 11.2.1-1) > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-linus Thanks! [1/2] ASoC: rt5682: Fix crash due to out of scope stack vars commit: 4999d703c0e66f9f196b6edc0b8fdeca8846b8b6 [2/2] ASoC: rt5682s: Fix crash due to out of scope stack vars commit: 750dc2f622192c08664a15413bc9746d9cbc4361 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark
diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c index 78b4cb5fb6c8..0d59ec2a5460 100644 --- a/sound/soc/codecs/rt5682.c +++ b/sound/soc/codecs/rt5682.c @@ -2844,6 +2844,8 @@ int rt5682_register_dai_clks(struct rt5682_priv *rt5682) for (i = 0; i < RT5682_DAI_NUM_CLKS; ++i) { struct clk_init_data init = { }; + struct clk_parent_data parent_data; + const struct clk_hw *parent; dai_clk_hw = &rt5682->dai_clks_hw[i]; @@ -2851,17 +2853,17 @@ int rt5682_register_dai_clks(struct rt5682_priv *rt5682) case RT5682_DAI_WCLK_IDX: /* Make MCLK the parent of WCLK */ if (rt5682->mclk) { - init.parent_data = &(struct clk_parent_data){ + parent_data = (struct clk_parent_data){ .fw_name = "mclk", }; + init.parent_data = &parent_data; init.num_parents = 1; } break; case RT5682_DAI_BCLK_IDX: /* Make WCLK the parent of BCLK */ - init.parent_hws = &(const struct clk_hw *){ - &rt5682->dai_clks_hw[RT5682_DAI_WCLK_IDX] - }; + parent = &rt5682->dai_clks_hw[RT5682_DAI_WCLK_IDX]; + init.parent_hws = &parent; init.num_parents = 1; break; default: