From: Sasha Levin Date: Sat, 1 Oct 2022 22:03:38 +0000 (-0400) Subject: Fixes for 5.15 X-Git-Tag: v5.19.13~58 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3ac4aa368199968c9c621b5bfeea6885bb2757af;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.15 Signed-off-by: Sasha Levin --- diff --git a/queue-5.15/alsa-hda-do-disconnect-jacks-at-codec-unbind.patch b/queue-5.15/alsa-hda-do-disconnect-jacks-at-codec-unbind.patch new file mode 100644 index 00000000000..21e9c36fcff --- /dev/null +++ b/queue-5.15/alsa-hda-do-disconnect-jacks-at-codec-unbind.patch @@ -0,0 +1,85 @@ +From 0baa5de622c98f8ed22de8ccd1474a17574ca94a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 17 Nov 2021 14:30:40 +0100 +Subject: ALSA: hda: Do disconnect jacks at codec unbind + +From: Takashi Iwai + +[ Upstream commit 37c4fd0db7c961145d9d1909ecab386fdf703c26 ] + +The HD-audio codec driver remove may happen also at dynamically +unbinding during operation, hence it needs manual triggers of +snd_device_disconnect() calls, while it's missing for the jack objects +that are associated with the codec. + +This patch adds the manual disconnection call for jacks when the +remove happens without card->shutdown (i.e. not under the full +removal). + +Link: https://lore.kernel.org/r/20211117133040.20272-1-tiwai@suse.de +Signed-off-by: Takashi Iwai +Stable-dep-of: ead3d3c5b54f ("ALSA: hda: Fix hang at HD-audio codec unbinding due to refcount saturation") +Signed-off-by: Sasha Levin +--- + sound/pci/hda/hda_bind.c | 2 ++ + sound/pci/hda/hda_jack.c | 11 +++++++++++ + sound/pci/hda/hda_jack.h | 1 + + 3 files changed, 14 insertions(+) + +diff --git a/sound/pci/hda/hda_bind.c b/sound/pci/hda/hda_bind.c +index 7153bd53e189..c572fb5886d5 100644 +--- a/sound/pci/hda/hda_bind.c ++++ b/sound/pci/hda/hda_bind.c +@@ -14,6 +14,7 @@ + #include + #include + #include "hda_local.h" ++#include "hda_jack.h" + + /* + * find a matching codec id +@@ -158,6 +159,7 @@ static int hda_codec_driver_remove(struct device *dev) + + refcount_dec(&codec->pcm_ref); + snd_hda_codec_disconnect_pcms(codec); ++ snd_hda_jack_tbl_disconnect(codec); + wait_event(codec->remove_sleep, !refcount_read(&codec->pcm_ref)); + snd_power_sync_ref(codec->bus->card); + +diff --git a/sound/pci/hda/hda_jack.c b/sound/pci/hda/hda_jack.c +index f29975e3e98d..7d7786df60ea 100644 +--- a/sound/pci/hda/hda_jack.c ++++ b/sound/pci/hda/hda_jack.c +@@ -158,6 +158,17 @@ snd_hda_jack_tbl_new(struct hda_codec *codec, hda_nid_t nid, int dev_id) + return jack; + } + ++void snd_hda_jack_tbl_disconnect(struct hda_codec *codec) ++{ ++ struct hda_jack_tbl *jack = codec->jacktbl.list; ++ int i; ++ ++ for (i = 0; i < codec->jacktbl.used; i++, jack++) { ++ if (!codec->bus->shutdown && jack->jack) ++ snd_device_disconnect(codec->card, jack->jack); ++ } ++} ++ + void snd_hda_jack_tbl_clear(struct hda_codec *codec) + { + struct hda_jack_tbl *jack = codec->jacktbl.list; +diff --git a/sound/pci/hda/hda_jack.h b/sound/pci/hda/hda_jack.h +index 2abf7aac243a..ff7d289c034b 100644 +--- a/sound/pci/hda/hda_jack.h ++++ b/sound/pci/hda/hda_jack.h +@@ -69,6 +69,7 @@ struct hda_jack_tbl * + snd_hda_jack_tbl_get_from_tag(struct hda_codec *codec, + unsigned char tag, int dev_id); + ++void snd_hda_jack_tbl_disconnect(struct hda_codec *codec); + void snd_hda_jack_tbl_clear(struct hda_codec *codec); + + void snd_hda_jack_set_dirty_all(struct hda_codec *codec); +-- +2.35.1 + diff --git a/queue-5.15/alsa-hda-fix-hang-at-hd-audio-codec-unbinding-due-to.patch b/queue-5.15/alsa-hda-fix-hang-at-hd-audio-codec-unbinding-due-to.patch new file mode 100644 index 00000000000..c4f56abb7ec --- /dev/null +++ b/queue-5.15/alsa-hda-fix-hang-at-hd-audio-codec-unbinding-due-to.patch @@ -0,0 +1,66 @@ +From 2d6dc8e2c1d63544239af803b55c09ec1a9d4277 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 10 Sep 2022 16:25:50 +0200 +Subject: ALSA: hda: Fix hang at HD-audio codec unbinding due to refcount + saturation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Takashi Iwai + +[ Upstream commit ead3d3c5b54f76da79c079e61bacb4279ec56965 ] + +We fixed the potential deadlock at dynamic unbinding the HD-audio +codec at the commit 7206998f578d ("ALSA: hda: Fix potential deadlock +at codec unbinding"), but ironically, this caused another potential +deadlock. The current code uses refcount_dec() and waits for the +pending task with wait_event for dropping the refcount to 0. This +works fine when PCMs are assigned and actually waiting for the +refcount drop. + +Meanwhile, when there was no PCM assigned, the refcount_dec() call +itself was supposed to drop to zero -- alas, it doesn't in reality; +refcount_dec() complains, spews kernel warning and it saturates +instead of dropping to 0, due to the nature of refcount_dec() +implementation. This eventually blocks the wait_event() wakeup and +the code get stuck there. + +For avoiding the problem, we call refcount_dec_and_test() and skips +the sync-wait if it already reaches to zero. + +The patch does a slight code reshuffling to make sure to invoke other +disconnect calls before the sync-wait, too. + +Fixes: 7206998f578d ("ALSA: hda: Fix potential deadlock at codec unbinding") +Reported-by: Ville Syrjälä +Tested-by: Ville Syrjälä +Cc: +Link: https://lore.kernel.org/r/YxtflWQnslMHVlU7@intel.com +Link: https://lore.kernel.org/r/20220910142550.28494-1-tiwai@suse.de +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/hda_bind.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sound/pci/hda/hda_bind.c b/sound/pci/hda/hda_bind.c +index c572fb5886d5..7af251573595 100644 +--- a/sound/pci/hda/hda_bind.c ++++ b/sound/pci/hda/hda_bind.c +@@ -157,10 +157,10 @@ static int hda_codec_driver_remove(struct device *dev) + return codec->bus->core.ext_ops->hdev_detach(&codec->core); + } + +- refcount_dec(&codec->pcm_ref); + snd_hda_codec_disconnect_pcms(codec); + snd_hda_jack_tbl_disconnect(codec); +- wait_event(codec->remove_sleep, !refcount_read(&codec->pcm_ref)); ++ if (!refcount_dec_and_test(&codec->pcm_ref)) ++ wait_event(codec->remove_sleep, !refcount_read(&codec->pcm_ref)); + snd_power_sync_ref(codec->bus->card); + + if (codec->patch_ops.free) +-- +2.35.1 + diff --git a/queue-5.15/alsa-hda-fix-nvidia-dp-infoframe.patch b/queue-5.15/alsa-hda-fix-nvidia-dp-infoframe.patch new file mode 100644 index 00000000000..c0a8292a78d --- /dev/null +++ b/queue-5.15/alsa-hda-fix-nvidia-dp-infoframe.patch @@ -0,0 +1,100 @@ +From a07e163c766205d3c92f6d086a23632907024686 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 13 Sep 2022 12:28:18 +0530 +Subject: ALSA: hda: Fix Nvidia dp infoframe + +From: Mohan Kumar + +[ Upstream commit f89e409402e2aeb3bc3aa44d2b7a597959e4e6af ] + +Nvidia HDA HW expects infoframe data bytes order same for both +HDMI and DP i.e infoframe data starts from 5th bytes offset. As +dp infoframe structure has 4th byte as valid infoframe data, use +hdmi infoframe structure for nvidia dp infoframe to match HW behvaior. + +Signed-off-by: Mohan Kumar +Cc: +Link: https://lore.kernel.org/r/20220913065818.13015-1-mkumard@nvidia.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_hdmi.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) + +diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c +index d19bc2b9f778..d3da42e0e7b3 100644 +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -162,6 +162,8 @@ struct hdmi_spec { + bool dyn_pin_out; + bool dyn_pcm_assign; + bool dyn_pcm_no_legacy; ++ bool nv_dp_workaround; /* workaround DP audio infoframe for Nvidia */ ++ + bool intel_hsw_fixup; /* apply Intel platform-specific fixups */ + /* + * Non-generic VIA/NVIDIA specific +@@ -671,15 +673,24 @@ static void hdmi_pin_setup_infoframe(struct hda_codec *codec, + int ca, int active_channels, + int conn_type) + { ++ struct hdmi_spec *spec = codec->spec; + union audio_infoframe ai; + + memset(&ai, 0, sizeof(ai)); +- if (conn_type == 0) { /* HDMI */ ++ if ((conn_type == 0) || /* HDMI */ ++ /* Nvidia DisplayPort: Nvidia HW expects same layout as HDMI */ ++ (conn_type == 1 && spec->nv_dp_workaround)) { + struct hdmi_audio_infoframe *hdmi_ai = &ai.hdmi; + +- hdmi_ai->type = 0x84; +- hdmi_ai->ver = 0x01; +- hdmi_ai->len = 0x0a; ++ if (conn_type == 0) { /* HDMI */ ++ hdmi_ai->type = 0x84; ++ hdmi_ai->ver = 0x01; ++ hdmi_ai->len = 0x0a; ++ } else {/* Nvidia DP */ ++ hdmi_ai->type = 0x84; ++ hdmi_ai->ver = 0x1b; ++ hdmi_ai->len = 0x11 << 2; ++ } + hdmi_ai->CC02_CT47 = active_channels - 1; + hdmi_ai->CA = ca; + hdmi_checksum_audio_infoframe(hdmi_ai); +@@ -3539,6 +3550,7 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) + spec->pcm_playback.rates = SUPPORTED_RATES; + spec->pcm_playback.maxbps = SUPPORTED_MAXBPS; + spec->pcm_playback.formats = SUPPORTED_FORMATS; ++ spec->nv_dp_workaround = true; + return 0; + } + +@@ -3678,6 +3690,7 @@ static int patch_nvhdmi(struct hda_codec *codec) + spec->chmap.ops.chmap_cea_alloc_validate_get_type = + nvhdmi_chmap_cea_alloc_validate_get_type; + spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; ++ spec->nv_dp_workaround = true; + + codec->link_down_at_suspend = 1; + +@@ -3701,6 +3714,7 @@ static int patch_nvhdmi_legacy(struct hda_codec *codec) + spec->chmap.ops.chmap_cea_alloc_validate_get_type = + nvhdmi_chmap_cea_alloc_validate_get_type; + spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; ++ spec->nv_dp_workaround = true; + + codec->link_down_at_suspend = 1; + +@@ -3874,6 +3888,7 @@ static int patch_tegra_hdmi(struct hda_codec *codec) + spec->chmap.ops.chmap_cea_alloc_validate_get_type = + nvhdmi_chmap_cea_alloc_validate_get_type; + spec->chmap.ops.chmap_validate = nvhdmi_chmap_validate; ++ spec->nv_dp_workaround = true; + + return 0; + } +-- +2.35.1 + diff --git a/queue-5.15/alsa-hda-realtek-fix-speakers-and-micmute-on-hp-855-.patch b/queue-5.15/alsa-hda-realtek-fix-speakers-and-micmute-on-hp-855-.patch new file mode 100644 index 00000000000..9152a750e57 --- /dev/null +++ b/queue-5.15/alsa-hda-realtek-fix-speakers-and-micmute-on-hp-855-.patch @@ -0,0 +1,72 @@ +From 931d0b54dc0149d1de786319013a3b49e7ee9768 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 14 Jan 2022 19:50:50 +0300 +Subject: ALSA: hda/realtek: fix speakers and micmute on HP 855 G8 + +From: Alexander Sergeyev + +[ Upstream commit 91502a9a0b0d5252cf3f32ebd898823c2f5aadab ] + +There are several PCI ids associated with HP EliteBook 855 G8 Notebook +PC. Commit 0e68c4b11f1e6 ("ALSA: hda/realtek: fix mute/micmute LEDs for +HP 855 G8") covers 0x103c:0x8896, while this commit covers 0x103c:0x8895 +which needs some additional work on top of the quirk from 0e68c4b11f1e6. + +Note that the device can boot up with working speakers and micmute LED +without this patch, but the success rate would be quite low (order of +16 working boots across 709 boots) at least for the built-in drivers +scenario. This also means that there are some timing issues during early +boot and this patch is a workaround. + +With this patch applied speakers and headphones are consistenly working, +as well as mute/micmute LEDs and the internal microphone. + +Signed-off-by: Alexander Sergeyev +Link: https://lore.kernel.org/r/20220114165050.ouw2nknuspclynro@localhost.localdomain +Signed-off-by: Takashi Iwai +Stable-dep-of: 496322302bf1 ("ALSA: hda/realtek: Add a quirk for HP OMEN 16 (8902) mute LED") +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_realtek.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index c4b3f2d3c7e3..f7b6a516439d 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -6939,6 +6939,7 @@ enum { + ALC256_FIXUP_MIC_NO_PRESENCE_AND_RESUME, + ALC285_FIXUP_LEGION_Y9000X_SPEAKERS, + ALC285_FIXUP_LEGION_Y9000X_AUTOMUTE, ++ ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED, + }; + + /* A special fixup for Lenovo C940 and Yoga Duet 7; +@@ -8753,6 +8754,16 @@ static const struct hda_fixup alc269_fixups[] = { + .chained = true, + .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC + }, ++ [ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED] = { ++ .type = HDA_FIXUP_VERBS, ++ .v.verbs = (const struct hda_verb[]) { ++ { 0x20, AC_VERB_SET_COEF_INDEX, 0x19 }, ++ { 0x20, AC_VERB_SET_PROC_COEF, 0x8e11 }, ++ { } ++ }, ++ .chained = true, ++ .chain_id = ALC285_FIXUP_HP_MUTE_LED, ++ }, + }; + + static const struct snd_pci_quirk alc269_fixup_tbl[] = { +@@ -8976,6 +8987,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x103c, 0x8870, "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8873, "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x888d, "HP ZBook Power 15.6 inch G8 Mobile Workstation PC", ALC236_FIXUP_HP_GPIO_LED), ++ SND_PCI_QUIRK(0x103c, 0x8895, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_SPEAKERS_MICMUTE_LED), + SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x8898, "HP EliteBook 845 G8 Notebook PC", ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST), + SND_PCI_QUIRK(0x103c, 0x88d0, "HP Pavilion 15-eh1xxx (mainboard 88D0)", ALC287_FIXUP_HP_GPIO_LED), +-- +2.35.1 + diff --git a/queue-5.15/cgroup-cgroup_get_from_id-must-check-the-looked-up-k.patch b/queue-5.15/cgroup-cgroup_get_from_id-must-check-the-looked-up-k.patch new file mode 100644 index 00000000000..31a0b925668 --- /dev/null +++ b/queue-5.15/cgroup-cgroup_get_from_id-must-check-the-looked-up-k.patch @@ -0,0 +1,51 @@ +From 3da6a620885c933439c7c8ec5cc789f9e4018058 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Sep 2022 19:51:19 +0800 +Subject: cgroup: cgroup_get_from_id() must check the looked-up kn is a + directory + +From: Ming Lei + +[ Upstream commit df02452f3df069a59bc9e69c84435bf115cb6e37 ] + +cgroup has to be one kernfs dir, otherwise kernel panic is caused, +especially cgroup id is provide from userspace. + +Reported-by: Marco Patalano +Fixes: 6b658c4863c1 ("scsi: cgroup: Add cgroup_get_from_id()") +Cc: Muneendra +Signed-off-by: Ming Lei +Acked-by: Mukesh Ojha +Cc: stable@vger.kernel.org # v5.14+ +Signed-off-by: Tejun Heo +Signed-off-by: Sasha Levin +--- + kernel/cgroup/cgroup.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c +index 97282d6b5d18..4b19f7fc4deb 100644 +--- a/kernel/cgroup/cgroup.c ++++ b/kernel/cgroup/cgroup.c +@@ -6025,6 +6025,9 @@ struct cgroup *cgroup_get_from_id(u64 id) + if (!kn) + goto out; + ++ if (kernfs_type(kn) != KERNFS_DIR) ++ goto put; ++ + rcu_read_lock(); + + cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv); +@@ -6032,7 +6035,7 @@ struct cgroup *cgroup_get_from_id(u64 id) + cgrp = NULL; + + rcu_read_unlock(); +- ++put: + kernfs_put(kn); + out: + return cgrp; +-- +2.35.1 + diff --git a/queue-5.15/cgroup-reduce-dependency-on-cgroup_mutex.patch b/queue-5.15/cgroup-reduce-dependency-on-cgroup_mutex.patch new file mode 100644 index 00000000000..4bc25722f19 --- /dev/null +++ b/queue-5.15/cgroup-reduce-dependency-on-cgroup_mutex.patch @@ -0,0 +1,114 @@ +From 5545e127d9dd0ed4f21ba449fdb6e55db5aa1af7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 24 Oct 2021 23:19:14 -0700 +Subject: cgroup: reduce dependency on cgroup_mutex + +From: Shakeel Butt + +[ Upstream commit be288169712f3dea0bc6b50c00b3ab53d85f1435 ] + +Currently cgroup_get_from_path() and cgroup_get_from_id() grab +cgroup_mutex before traversing the default hierarchy to find the +kernfs_node corresponding to the path/id and then extract the linked +cgroup. Since cgroup_mutex is still held, it is guaranteed that the +cgroup will be alive and the reference can be taken on it. + +However similar guarantee can be provided without depending on the +cgroup_mutex and potentially reducing avenues of cgroup_mutex contentions. +The kernfs_node's priv pointer is RCU protected pointer and with just +rcu read lock we can grab the reference on the cgroup without +cgroup_mutex. So, remove cgroup_mutex from them. + +Signed-off-by: Shakeel Butt +Signed-off-by: Tejun Heo +Stable-dep-of: df02452f3df0 ("cgroup: cgroup_get_from_id() must check the looked-up kn is a directory") +Signed-off-by: Sasha Levin +--- + kernel/cgroup/cgroup.c | 51 ++++++++++++++++++++++++------------------ + 1 file changed, 29 insertions(+), 22 deletions(-) + +diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c +index 75c3881af078..97282d6b5d18 100644 +--- a/kernel/cgroup/cgroup.c ++++ b/kernel/cgroup/cgroup.c +@@ -6021,17 +6021,20 @@ struct cgroup *cgroup_get_from_id(u64 id) + struct kernfs_node *kn; + struct cgroup *cgrp = NULL; + +- mutex_lock(&cgroup_mutex); + kn = kernfs_find_and_get_node_by_id(cgrp_dfl_root.kf_root, id); + if (!kn) +- goto out_unlock; ++ goto out; ++ ++ rcu_read_lock(); + +- cgrp = kn->priv; +- if (cgroup_is_dead(cgrp) || !cgroup_tryget(cgrp)) ++ cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv); ++ if (cgrp && !cgroup_tryget(cgrp)) + cgrp = NULL; ++ ++ rcu_read_unlock(); ++ + kernfs_put(kn); +-out_unlock: +- mutex_unlock(&cgroup_mutex); ++out: + return cgrp; + } + EXPORT_SYMBOL_GPL(cgroup_get_from_id); +@@ -6585,30 +6588,34 @@ struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss) + * + * Find the cgroup at @path on the default hierarchy, increment its + * reference count and return it. Returns pointer to the found cgroup on +- * success, ERR_PTR(-ENOENT) if @path doesn't exist and ERR_PTR(-ENOTDIR) +- * if @path points to a non-directory. ++ * success, ERR_PTR(-ENOENT) if @path doesn't exist or if the cgroup has already ++ * been released and ERR_PTR(-ENOTDIR) if @path points to a non-directory. + */ + struct cgroup *cgroup_get_from_path(const char *path) + { + struct kernfs_node *kn; +- struct cgroup *cgrp; +- +- mutex_lock(&cgroup_mutex); ++ struct cgroup *cgrp = ERR_PTR(-ENOENT); + + kn = kernfs_walk_and_get(cgrp_dfl_root.cgrp.kn, path); +- if (kn) { +- if (kernfs_type(kn) == KERNFS_DIR) { +- cgrp = kn->priv; +- cgroup_get_live(cgrp); +- } else { +- cgrp = ERR_PTR(-ENOTDIR); +- } +- kernfs_put(kn); +- } else { +- cgrp = ERR_PTR(-ENOENT); ++ if (!kn) ++ goto out; ++ ++ if (kernfs_type(kn) != KERNFS_DIR) { ++ cgrp = ERR_PTR(-ENOTDIR); ++ goto out_kernfs; + } + +- mutex_unlock(&cgroup_mutex); ++ rcu_read_lock(); ++ ++ cgrp = rcu_dereference(*(void __rcu __force **)&kn->priv); ++ if (!cgrp || !cgroup_tryget(cgrp)) ++ cgrp = ERR_PTR(-ENOENT); ++ ++ rcu_read_unlock(); ++ ++out_kernfs: ++ kernfs_put(kn); ++out: + return cgrp; + } + EXPORT_SYMBOL_GPL(cgroup_get_from_path); +-- +2.35.1 + diff --git a/queue-5.15/series b/queue-5.15/series new file mode 100644 index 00000000000..fe189247939 --- /dev/null +++ b/queue-5.15/series @@ -0,0 +1,6 @@ +alsa-hda-do-disconnect-jacks-at-codec-unbind.patch +alsa-hda-fix-hang-at-hd-audio-codec-unbinding-due-to.patch +alsa-hda-fix-nvidia-dp-infoframe.patch +alsa-hda-realtek-fix-speakers-and-micmute-on-hp-855-.patch +cgroup-reduce-dependency-on-cgroup_mutex.patch +cgroup-cgroup_get_from_id-must-check-the-looked-up-k.patch