From: Greg Kroah-Hartman Date: Fri, 14 Jan 2022 05:51:34 +0000 (+0100) Subject: 5.16-stable patches X-Git-Tag: v5.16.1~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=78c577b6b01ca12f65114ebcca85f6da846beab1;p=thirdparty%2Fkernel%2Fstable-queue.git 5.16-stable patches added patches: drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch staging-greybus-fix-stack-size-warning-with-ubsan.patch --- diff --git a/queue-5.16/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch b/queue-5.16/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch new file mode 100644 index 00000000000..8ec20e8c871 --- /dev/null +++ b/queue-5.16/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch @@ -0,0 +1,55 @@ +From 2e70570656adfe1c5d9a29940faa348d5f132199 Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Thu, 14 Oct 2021 14:19:16 -0700 +Subject: drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Nathan Chancellor + +commit 2e70570656adfe1c5d9a29940faa348d5f132199 upstream. + +A new warning in clang points out a place in this file where a bitwise +OR is being used with boolean types: + +drivers/gpu/drm/i915/intel_pm.c:3066:12: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical] + changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12) | + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This construct is intentional, as it allows every one of the calls to +ilk_increase_wm_latency() to occur (instead of short circuiting with +logical OR) while still caring about the result of each call. + +To make this clearer to the compiler, use the '|=' operator to assign +the result of each ilk_increase_wm_latency() call to changed, which +keeps the meaning of the code the same but makes it obvious that every +one of these calls is expected to happen. + +Link: https://github.com/ClangBuiltLinux/linux/issues/1473 +Reported-by: Nick Desaulniers +Signed-off-by: Nathan Chancellor +Suggested-by: Dávid Bolvanský +Reviewed-by: Nick Desaulniers +Signed-off-by: Ville Syrjälä +Link: https://patchwork.freedesktop.org/patch/msgid/20211014211916.3550122-1-nathan@kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_pm.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_pm.c ++++ b/drivers/gpu/drm/i915/intel_pm.c +@@ -3062,9 +3062,9 @@ static void snb_wm_latency_quirk(struct + * The BIOS provided WM memory latency values are often + * inadequate for high resolution displays. Adjust them. + */ +- changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12) | +- ilk_increase_wm_latency(dev_priv, dev_priv->wm.spr_latency, 12) | +- ilk_increase_wm_latency(dev_priv, dev_priv->wm.cur_latency, 12); ++ changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12); ++ changed |= ilk_increase_wm_latency(dev_priv, dev_priv->wm.spr_latency, 12); ++ changed |= ilk_increase_wm_latency(dev_priv, dev_priv->wm.cur_latency, 12); + + if (!changed) + return; diff --git a/queue-5.16/series b/queue-5.16/series index a683f253829..6a4de8426d1 100644 --- a/queue-5.16/series +++ b/queue-5.16/series @@ -32,3 +32,5 @@ random-fix-data-race-on-crng-init-time.patch random-fix-crash-on-multiple-early-calls-to-add_bootloader_randomness.patch platform-x86-intel-hid-add-quirk-to-support-surface-go-3.patch media-revert-media-uvcvideo-set-unique-vdev-name-based-in-type.patch +drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch +staging-greybus-fix-stack-size-warning-with-ubsan.patch diff --git a/queue-5.16/staging-greybus-fix-stack-size-warning-with-ubsan.patch b/queue-5.16/staging-greybus-fix-stack-size-warning-with-ubsan.patch new file mode 100644 index 00000000000..a39d5eb6f43 --- /dev/null +++ b/queue-5.16/staging-greybus-fix-stack-size-warning-with-ubsan.patch @@ -0,0 +1,164 @@ +From 144779edf598e0896302c35a0926ef0b68f17c4b Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Thu, 9 Dec 2021 12:51:42 -0700 +Subject: staging: greybus: fix stack size warning with UBSAN + +From: Arnd Bergmann + +commit 144779edf598e0896302c35a0926ef0b68f17c4b upstream. + +clang warns about excessive stack usage in this driver when +UBSAN is enabled: + +drivers/staging/greybus/audio_topology.c:977:12: error: stack frame size of 1836 bytes in function 'gbaudio_tplg_create_widget' [-Werror,-Wframe-larger-than=] + +Rework this code to no longer use compound literals for +initializing the structure in each case, but instead keep +the common bits in a preallocated constant array and copy +them as needed. + +Link: https://github.com/ClangBuiltLinux/linux/issues/1535 +Link: https://lore.kernel.org/r/20210103223541.2790855-1-arnd@kernel.org/ +Reviewed-by: Nick Desaulniers +Reviewed-by: Alex Elder +Signed-off-by: Arnd Bergmann +[nathan: Address review comments from v1] +Signed-off-by: Nathan Chancellor +Link: https://lore.kernel.org/r/20211209195141.1165233-1-nathan@kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/greybus/audio_topology.c | 92 +++++++++++++++---------------- + 1 file changed, 45 insertions(+), 47 deletions(-) + +--- a/drivers/staging/greybus/audio_topology.c ++++ b/drivers/staging/greybus/audio_topology.c +@@ -974,6 +974,44 @@ static int gbaudio_widget_event(struct s + return ret; + } + ++static const struct snd_soc_dapm_widget gbaudio_widgets[] = { ++ [snd_soc_dapm_spk] = SND_SOC_DAPM_SPK(NULL, gbcodec_event_spk), ++ [snd_soc_dapm_hp] = SND_SOC_DAPM_HP(NULL, gbcodec_event_hp), ++ [snd_soc_dapm_mic] = SND_SOC_DAPM_MIC(NULL, gbcodec_event_int_mic), ++ [snd_soc_dapm_output] = SND_SOC_DAPM_OUTPUT(NULL), ++ [snd_soc_dapm_input] = SND_SOC_DAPM_INPUT(NULL), ++ [snd_soc_dapm_switch] = SND_SOC_DAPM_SWITCH_E(NULL, SND_SOC_NOPM, ++ 0, 0, NULL, ++ gbaudio_widget_event, ++ SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++ [snd_soc_dapm_pga] = SND_SOC_DAPM_PGA_E(NULL, SND_SOC_NOPM, ++ 0, 0, NULL, 0, ++ gbaudio_widget_event, ++ SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++ [snd_soc_dapm_mixer] = SND_SOC_DAPM_MIXER_E(NULL, SND_SOC_NOPM, ++ 0, 0, NULL, 0, ++ gbaudio_widget_event, ++ SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++ [snd_soc_dapm_mux] = SND_SOC_DAPM_MUX_E(NULL, SND_SOC_NOPM, ++ 0, 0, NULL, ++ gbaudio_widget_event, ++ SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++ [snd_soc_dapm_aif_in] = SND_SOC_DAPM_AIF_IN_E(NULL, NULL, 0, ++ SND_SOC_NOPM, 0, 0, ++ gbaudio_widget_event, ++ SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++ [snd_soc_dapm_aif_out] = SND_SOC_DAPM_AIF_OUT_E(NULL, NULL, 0, ++ SND_SOC_NOPM, 0, 0, ++ gbaudio_widget_event, ++ SND_SOC_DAPM_PRE_PMU | ++ SND_SOC_DAPM_POST_PMD), ++}; ++ + static int gbaudio_tplg_create_widget(struct gbaudio_module_info *module, + struct snd_soc_dapm_widget *dw, + struct gb_audio_widget *w, int *w_size) +@@ -1052,77 +1090,37 @@ static int gbaudio_tplg_create_widget(st + + switch (w->type) { + case snd_soc_dapm_spk: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_SPK(w->name, gbcodec_event_spk); ++ *dw = gbaudio_widgets[w->type]; + module->op_devices |= GBAUDIO_DEVICE_OUT_SPEAKER; + break; + case snd_soc_dapm_hp: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_HP(w->name, gbcodec_event_hp); ++ *dw = gbaudio_widgets[w->type]; + module->op_devices |= (GBAUDIO_DEVICE_OUT_WIRED_HEADSET + | GBAUDIO_DEVICE_OUT_WIRED_HEADPHONE); + module->ip_devices |= GBAUDIO_DEVICE_IN_WIRED_HEADSET; + break; + case snd_soc_dapm_mic: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_MIC(w->name, gbcodec_event_int_mic); ++ *dw = gbaudio_widgets[w->type]; + module->ip_devices |= GBAUDIO_DEVICE_IN_BUILTIN_MIC; + break; + case snd_soc_dapm_output: +- *dw = (struct snd_soc_dapm_widget)SND_SOC_DAPM_OUTPUT(w->name); +- break; + case snd_soc_dapm_input: +- *dw = (struct snd_soc_dapm_widget)SND_SOC_DAPM_INPUT(w->name); +- break; + case snd_soc_dapm_switch: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_SWITCH_E(w->name, SND_SOC_NOPM, 0, 0, +- widget_kctls, +- gbaudio_widget_event, +- SND_SOC_DAPM_PRE_PMU | +- SND_SOC_DAPM_POST_PMD); +- break; + case snd_soc_dapm_pga: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_PGA_E(w->name, SND_SOC_NOPM, 0, 0, NULL, 0, +- gbaudio_widget_event, +- SND_SOC_DAPM_PRE_PMU | +- SND_SOC_DAPM_POST_PMD); +- break; + case snd_soc_dapm_mixer: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_MIXER_E(w->name, SND_SOC_NOPM, 0, 0, NULL, +- 0, gbaudio_widget_event, +- SND_SOC_DAPM_PRE_PMU | +- SND_SOC_DAPM_POST_PMD); +- break; + case snd_soc_dapm_mux: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_MUX_E(w->name, SND_SOC_NOPM, 0, 0, +- widget_kctls, gbaudio_widget_event, +- SND_SOC_DAPM_PRE_PMU | +- SND_SOC_DAPM_POST_PMD); ++ *dw = gbaudio_widgets[w->type]; + break; + case snd_soc_dapm_aif_in: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_AIF_IN_E(w->name, w->sname, 0, +- SND_SOC_NOPM, +- 0, 0, gbaudio_widget_event, +- SND_SOC_DAPM_PRE_PMU | +- SND_SOC_DAPM_POST_PMD); +- break; + case snd_soc_dapm_aif_out: +- *dw = (struct snd_soc_dapm_widget) +- SND_SOC_DAPM_AIF_OUT_E(w->name, w->sname, 0, +- SND_SOC_NOPM, +- 0, 0, gbaudio_widget_event, +- SND_SOC_DAPM_PRE_PMU | +- SND_SOC_DAPM_POST_PMD); ++ *dw = gbaudio_widgets[w->type]; ++ dw->sname = w->sname; + break; + default: + ret = -EINVAL; + goto error; + } ++ dw->name = w->name; + + dev_dbg(module->dev, "%s: widget of type %d created\n", dw->name, + dw->id);