From: Greg Kroah-Hartman Date: Thu, 25 Jul 2024 13:48:04 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v4.19.319~16 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=af3959cac951ec95f096cd2b2aab50e08e5c3612;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: alsa-pcm_dmaengine-don-t-synchronize-dma-channel-when-dma-is-paused.patch filelock-fix-fcntl-close-race-recovery-compat-path.patch --- diff --git a/queue-5.10/alsa-pcm_dmaengine-don-t-synchronize-dma-channel-when-dma-is-paused.patch b/queue-5.10/alsa-pcm_dmaengine-don-t-synchronize-dma-channel-when-dma-is-paused.patch new file mode 100644 index 00000000000..61668b9aa23 --- /dev/null +++ b/queue-5.10/alsa-pcm_dmaengine-don-t-synchronize-dma-channel-when-dma-is-paused.patch @@ -0,0 +1,40 @@ +From 88e98af9f4b5b0d60c1fe7f7f2701b5467691e75 Mon Sep 17 00:00:00 2001 +From: Shengjiu Wang +Date: Wed, 17 Jul 2024 14:44:53 +0800 +Subject: ALSA: pcm_dmaengine: Don't synchronize DMA channel when DMA is paused + +From: Shengjiu Wang + +commit 88e98af9f4b5b0d60c1fe7f7f2701b5467691e75 upstream. + +When suspended, the DMA channel may enter PAUSE state if dmaengine_pause() +is supported by DMA. +At this state, dmaengine_synchronize() should not be called, otherwise +the DMA channel can't be resumed successfully. + +Fixes: e8343410ddf0 ("ALSA: dmaengine: Synchronize dma channel after drop()") +Signed-off-by: Shengjiu Wang +Cc: +Link: https://patch.msgid.link/1721198693-27636-1-git-send-email-shengjiu.wang@nxp.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/core/pcm_dmaengine.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/sound/core/pcm_dmaengine.c ++++ b/sound/core/pcm_dmaengine.c +@@ -345,8 +345,12 @@ EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_open + int snd_dmaengine_pcm_sync_stop(struct snd_pcm_substream *substream) + { + struct dmaengine_pcm_runtime_data *prtd = substream_to_prtd(substream); ++ struct dma_tx_state state; ++ enum dma_status status; + +- dmaengine_synchronize(prtd->dma_chan); ++ status = dmaengine_tx_status(prtd->dma_chan, prtd->cookie, &state); ++ if (status != DMA_PAUSED) ++ dmaengine_synchronize(prtd->dma_chan); + + return 0; + } diff --git a/queue-5.10/filelock-fix-fcntl-close-race-recovery-compat-path.patch b/queue-5.10/filelock-fix-fcntl-close-race-recovery-compat-path.patch new file mode 100644 index 00000000000..4471f5e6c01 --- /dev/null +++ b/queue-5.10/filelock-fix-fcntl-close-race-recovery-compat-path.patch @@ -0,0 +1,54 @@ +From f8138f2ad2f745b9a1c696a05b749eabe44337ea Mon Sep 17 00:00:00 2001 +From: Jann Horn +Date: Tue, 23 Jul 2024 17:03:56 +0200 +Subject: filelock: Fix fcntl/close race recovery compat path + +From: Jann Horn + +commit f8138f2ad2f745b9a1c696a05b749eabe44337ea upstream. + +When I wrote commit 3cad1bc01041 ("filelock: Remove locks reliably when +fcntl/close race is detected"), I missed that there are two copies of the +code I was patching: The normal version, and the version for 64-bit offsets +on 32-bit kernels. +Thanks to Greg KH for stumbling over this while doing the stable +backport... + +Apply exactly the same fix to the compat path for 32-bit kernels. + +Fixes: c293621bbf67 ("[PATCH] stale POSIX lock handling") +Cc: stable@kernel.org +Link: https://bugs.chromium.org/p/project-zero/issues/detail?id=2563 +Signed-off-by: Jann Horn +Link: https://lore.kernel.org/r/20240723-fs-lock-recover-compatfix-v1-1-148096719529@google.com +Signed-off-by: Christian Brauner +Signed-off-by: Greg Kroah-Hartman +--- + fs/locks.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- a/fs/locks.c ++++ b/fs/locks.c +@@ -2719,8 +2719,9 @@ int fcntl_setlk64(unsigned int fd, struc + error = do_lock_file_wait(filp, cmd, file_lock); + + /* +- * Attempt to detect a close/fcntl race and recover by releasing the +- * lock that was just acquired. There is no need to do that when we're ++ * Detect close/fcntl races and recover by zapping all POSIX locks ++ * associated with this file and our files_struct, just like on ++ * filp_flush(). There is no need to do that when we're + * unlocking though, or for OFD locks. + */ + if (!error && file_lock->fl_type != F_UNLCK && +@@ -2735,9 +2736,7 @@ int fcntl_setlk64(unsigned int fd, struc + f = files_lookup_fd_locked(files, fd); + spin_unlock(&files->file_lock); + if (f != filp) { +- file_lock->fl_type = F_UNLCK; +- error = do_lock_file_wait(filp, cmd, file_lock); +- WARN_ON_ONCE(error); ++ locks_remove_posix(filp, files); + error = -EBADF; + } + } diff --git a/queue-5.10/series b/queue-5.10/series index 81b993338c3..d5c3f5db228 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -55,3 +55,5 @@ jfs-don-t-walk-off-the-end-of-ealist.patch alsa-hda-realtek-enable-headset-mic-on-positivo-su-c1400.patch alsa-hda-realtek-fix-the-speaker-output-on-samsung-galaxy-book-pro-360.patch arm64-dts-qcom-msm8996-disable-ss-instance-in-parkmode-for-usb.patch +alsa-pcm_dmaengine-don-t-synchronize-dma-channel-when-dma-is-paused.patch +filelock-fix-fcntl-close-race-recovery-compat-path.patch