]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Oct 2022 14:49:56 +0000 (16:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Oct 2022 14:49:56 +0000 (16:49 +0200)
added patches:
revert-alsa-hda-fix-page-fault-in-snd_hda_codec_shutdown.patch

queue-6.0/revert-alsa-hda-fix-page-fault-in-snd_hda_codec_shutdown.patch [new file with mode: 0644]
queue-6.0/series

diff --git a/queue-6.0/revert-alsa-hda-fix-page-fault-in-snd_hda_codec_shutdown.patch b/queue-6.0/revert-alsa-hda-fix-page-fault-in-snd_hda_codec_shutdown.patch
new file mode 100644 (file)
index 0000000..6d7d301
--- /dev/null
@@ -0,0 +1,88 @@
+From tiwai@suse.de  Mon Oct 24 16:49:03 2022
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 24 Oct 2022 16:39:31 +0200
+Subject: Revert "ALSA: hda: Fix page fault in snd_hda_codec_shutdown()"
+To: stable@vger.kernel.org
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Sasha Levin <sashal@kernel.org>, linux-kernel@vger.kernel.org
+Message-ID: <20221024143931.15722-1-tiwai@suse.de>
+
+From: Takashi Iwai <tiwai@suse.de>
+
+This reverts commit 7494e2e6c55ed192f2b91c821fd6832744ba8741.
+
+Which was upstream commit f2bd1c5ae2cb0cf9525c9bffc0038c12dd7e1338.
+
+The patch caused a regression leading to the missing HD-audio device
+with ASoC SOF driver.  It was a part of large series and backporting
+it alone breaks things while backporting the whole is too intrusive
+as stable changes.  And, the issue the patch tries to address is a
+corner case, hence it's better to revert.
+
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=216613
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/hda_codec.c |   41 +++++++++++++++++++++--------------------
+ 1 file changed, 21 insertions(+), 20 deletions(-)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -931,28 +931,8 @@ snd_hda_codec_device_init(struct hda_bus
+       }
+       codec->bus = bus;
+-      codec->depop_delay = -1;
+-      codec->fixup_id = HDA_FIXUP_ID_NOT_SET;
+-      codec->core.dev.release = snd_hda_codec_dev_release;
+-      codec->core.exec_verb = codec_exec_verb;
+       codec->core.type = HDA_DEV_LEGACY;
+-      mutex_init(&codec->spdif_mutex);
+-      mutex_init(&codec->control_mutex);
+-      snd_array_init(&codec->mixers, sizeof(struct hda_nid_item), 32);
+-      snd_array_init(&codec->nids, sizeof(struct hda_nid_item), 32);
+-      snd_array_init(&codec->init_pins, sizeof(struct hda_pincfg), 16);
+-      snd_array_init(&codec->driver_pins, sizeof(struct hda_pincfg), 16);
+-      snd_array_init(&codec->cvt_setups, sizeof(struct hda_cvt_setup), 8);
+-      snd_array_init(&codec->spdif_out, sizeof(struct hda_spdif_out), 16);
+-      snd_array_init(&codec->jacktbl, sizeof(struct hda_jack_tbl), 16);
+-      snd_array_init(&codec->verbs, sizeof(struct hda_verb *), 8);
+-      INIT_LIST_HEAD(&codec->conn_list);
+-      INIT_LIST_HEAD(&codec->pcm_list_head);
+-      INIT_DELAYED_WORK(&codec->jackpoll_work, hda_jackpoll_work);
+-      refcount_set(&codec->pcm_ref, 1);
+-      init_waitqueue_head(&codec->remove_sleep);
+-
+       return codec;
+ }
+ EXPORT_SYMBOL_GPL(snd_hda_codec_device_init);
+@@ -1005,8 +985,29 @@ int snd_hda_codec_device_new(struct hda_
+       if (snd_BUG_ON(codec_addr > HDA_MAX_CODEC_ADDRESS))
+               return -EINVAL;
++      codec->core.dev.release = snd_hda_codec_dev_release;
++      codec->core.exec_verb = codec_exec_verb;
++
+       codec->card = card;
+       codec->addr = codec_addr;
++      mutex_init(&codec->spdif_mutex);
++      mutex_init(&codec->control_mutex);
++      snd_array_init(&codec->mixers, sizeof(struct hda_nid_item), 32);
++      snd_array_init(&codec->nids, sizeof(struct hda_nid_item), 32);
++      snd_array_init(&codec->init_pins, sizeof(struct hda_pincfg), 16);
++      snd_array_init(&codec->driver_pins, sizeof(struct hda_pincfg), 16);
++      snd_array_init(&codec->cvt_setups, sizeof(struct hda_cvt_setup), 8);
++      snd_array_init(&codec->spdif_out, sizeof(struct hda_spdif_out), 16);
++      snd_array_init(&codec->jacktbl, sizeof(struct hda_jack_tbl), 16);
++      snd_array_init(&codec->verbs, sizeof(struct hda_verb *), 8);
++      INIT_LIST_HEAD(&codec->conn_list);
++      INIT_LIST_HEAD(&codec->pcm_list_head);
++      refcount_set(&codec->pcm_ref, 1);
++      init_waitqueue_head(&codec->remove_sleep);
++
++      INIT_DELAYED_WORK(&codec->jackpoll_work, hda_jackpoll_work);
++      codec->depop_delay = -1;
++      codec->fixup_id = HDA_FIXUP_ID_NOT_SET;
+ #ifdef CONFIG_PM
+       codec->power_jiffies = jiffies;
index 4d38dc5c61011c8459542eb7e0ac80393e934031..ec06dfb188509e85416a89270c2b9d3baf27bcce 100644 (file)
@@ -18,3 +18,4 @@ gcov-support-gcc-12.1-and-newer-compilers.patch
 io-wq-fix-memory-leak-in-worker-creation.patch
 mm-huge_memory-do-not-clobber-swp_entry_t-during-thp-split.patch
 fbdev-core-remove-remove_conflicting_pci_framebuffers.patch
+revert-alsa-hda-fix-page-fault-in-snd_hda_codec_shutdown.patch