ASoC: dmaengine: Drop unused iov_iter for process callback
authorTakashi Iwai <tiwai@suse.de>
Thu, 31 Aug 2023 13:04:56 +0000 (15:04 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 1 Sep 2023 13:38:29 +0000 (15:38 +0200)
Passing the iov_iter to the process callback is rather buggy, as the
iterator has been already processed for playback.  Similarly, it makes
the copy for capture buggy after the process callback reading the
iterator out.  Moreover, all existing process callbacks don't refer to
the passed iterator at all.  So, it's better to drop the argument from
the process callback.

Fixes: 9bebd65443c1 ("ASoC: dmaengine: Use iov_iter for process callback, too")
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/CAHk-=wje+VkXjjfVTmK-uJdG_M5=ar14QxAwK+XDiq07k_pzBg@mail.gmail.com
Reviewed-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20230831130457.8180-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/dmaengine_pcm.h
sound/soc/atmel/mchp-pdmc.c
sound/soc/soc-generic-dmaengine-pcm.c
sound/soc/stm/stm32_sai_sub.c

index c9a8bce9a78539f02ef2b83386187c556105857d..d70c55f17df7ca8f9e68f91beb86a93b5f4711d4 100644 (file)
@@ -142,7 +142,7 @@ struct snd_dmaengine_pcm_config {
                        struct snd_pcm_substream *substream);
        int (*process)(struct snd_pcm_substream *substream,
                       int channel, unsigned long hwoff,
-                      struct iov_iter *buf, unsigned long bytes);
+                      unsigned long bytes);
        dma_filter_fn compat_filter_fn;
        struct device *dma_dev;
        const char *chan_names[SNDRV_PCM_STREAM_LAST + 1];
index afe213a71212fc1fd227d41d4620553e6507cf15..dcc4e14b3dde275551688e9eacb85639b4fbd974 100644 (file)
@@ -954,7 +954,7 @@ static int mchp_pdmc_dt_init(struct mchp_pdmc *dd)
 /* used to clean the channel index found on RHR's MSB */
 static int mchp_pdmc_process(struct snd_pcm_substream *substream,
                             int channel, unsigned long hwoff,
-                            struct iov_iter *buf, unsigned long bytes)
+                            unsigned long bytes)
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        u8 *dma_ptr = runtime->dma_area + hwoff +
index ff2166525dbce83c64117722b7482e89b9444e35..7a07fbf98e2eb317638bb437b0bd687cc813f042 100644 (file)
@@ -296,7 +296,7 @@ static int dmaengine_copy(struct snd_soc_component *component,
        struct dmaengine_pcm *pcm = soc_component_to_pcm(component);
        int (*process)(struct snd_pcm_substream *substream,
                       int channel, unsigned long hwoff,
-                      struct iov_iter *buf, unsigned long bytes) = pcm->config->process;
+                      unsigned long bytes) = pcm->config->process;
        bool is_playback = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
        void *dma_ptr = runtime->dma_area + hwoff +
                        channel * (runtime->dma_bytes / runtime->channels);
@@ -306,7 +306,7 @@ static int dmaengine_copy(struct snd_soc_component *component,
                        return -EFAULT;
 
        if (process) {
-               int ret = process(substream, channel, hwoff, buf, bytes);
+               int ret = process(substream, channel, hwoff, bytes);
                if (ret < 0)
                        return ret;
        }
index f9b5d59691550f036ca6467c90035f0551a9647c..0acc848c1f004d7218ba0d42496003591074245b 100644 (file)
@@ -1246,7 +1246,7 @@ static const struct snd_soc_dai_ops stm32_sai_pcm_dai_ops2 = {
 
 static int stm32_sai_pcm_process_spdif(struct snd_pcm_substream *substream,
                                       int channel, unsigned long hwoff,
-                                      struct iov_iter *buf, unsigned long bytes)
+                                      unsigned long bytes)
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);