From: Dan Carpenter <dan.carpenter@oracle.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: alsa-devel@alsa-project.org,
Kai Vehmanen <kai.vehmanen@linux.intel.com>,
kernel-janitors@vger.kernel.org,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Takashi Iwai <tiwai@suse.com>,
Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
Mark Brown <broonie@kernel.org>,
Daniel Baluta <daniel.baluta@nxp.com>,
sound-open-firmware@alsa-project.org
Subject: [PATCH 1/2] ASoC: SOF: sof-client-probes: fix error codes in sof_probes_compr_copy()
Date: Wed, 6 Jul 2022 10:23:33 +0300 [thread overview]
Message-ID: <YsU4dYXYYVsfs92J@kili> (raw)
This function tries to return the number of bytes that it was able to
copy to the user. However, because there are multiple calls to
copy_to_user() in a row that means the bytes are not necessarily
consecutive so it's not useful. Just return -EFAULT instead.
Fixes: 3dc0d7091778 ("ASoC: SOF: Convert the generic probe support to SOF client")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
sound/soc/sof/sof-client-probes.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/sound/soc/sof/sof-client-probes.c b/sound/soc/sof/sof-client-probes.c
index 1f1ea93a7fbf..679bc7d371fc 100644
--- a/sound/soc/sof/sof-client-probes.c
+++ b/sound/soc/sof/sof-client-probes.c
@@ -385,7 +385,6 @@ static int sof_probes_compr_copy(struct snd_soc_component *component,
struct snd_compr_runtime *rtd = cstream->runtime;
unsigned int offset, n;
void *ptr;
- int ret;
if (count > rtd->buffer_size)
count = rtd->buffer_size;
@@ -395,14 +394,15 @@ static int sof_probes_compr_copy(struct snd_soc_component *component,
n = rtd->buffer_size - offset;
if (count < n) {
- ret = copy_to_user(buf, ptr, count);
+ if (copy_to_user(buf, ptr, count))
+ return -EFAULT;
} else {
- ret = copy_to_user(buf, ptr, n);
- ret += copy_to_user(buf + n, rtd->dma_area, count - n);
+ if (copy_to_user(buf, ptr, n))
+ return -EFAULT;
+ if (copy_to_user(buf + n, rtd->dma_area, count - n))
+ return -EFAULT;
}
- if (ret)
- return count - ret;
return count;
}
--
2.35.1
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Liam Girdwood <lgirdwood@gmail.com>,
Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
Kai Vehmanen <kai.vehmanen@linux.intel.com>,
Daniel Baluta <daniel.baluta@nxp.com>,
Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
Takashi Iwai <tiwai@suse.com>,
sound-open-firmware@alsa-project.org,
alsa-devel@alsa-project.org, kernel-janitors@vger.kernel.org
Subject: [PATCH 1/2] ASoC: SOF: sof-client-probes: fix error codes in sof_probes_compr_copy()
Date: Wed, 6 Jul 2022 10:23:33 +0300 [thread overview]
Message-ID: <YsU4dYXYYVsfs92J@kili> (raw)
This function tries to return the number of bytes that it was able to
copy to the user. However, because there are multiple calls to
copy_to_user() in a row that means the bytes are not necessarily
consecutive so it's not useful. Just return -EFAULT instead.
Fixes: 3dc0d7091778 ("ASoC: SOF: Convert the generic probe support to SOF client")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
sound/soc/sof/sof-client-probes.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/sound/soc/sof/sof-client-probes.c b/sound/soc/sof/sof-client-probes.c
index 1f1ea93a7fbf..679bc7d371fc 100644
--- a/sound/soc/sof/sof-client-probes.c
+++ b/sound/soc/sof/sof-client-probes.c
@@ -385,7 +385,6 @@ static int sof_probes_compr_copy(struct snd_soc_component *component,
struct snd_compr_runtime *rtd = cstream->runtime;
unsigned int offset, n;
void *ptr;
- int ret;
if (count > rtd->buffer_size)
count = rtd->buffer_size;
@@ -395,14 +394,15 @@ static int sof_probes_compr_copy(struct snd_soc_component *component,
n = rtd->buffer_size - offset;
if (count < n) {
- ret = copy_to_user(buf, ptr, count);
+ if (copy_to_user(buf, ptr, count))
+ return -EFAULT;
} else {
- ret = copy_to_user(buf, ptr, n);
- ret += copy_to_user(buf + n, rtd->dma_area, count - n);
+ if (copy_to_user(buf, ptr, n))
+ return -EFAULT;
+ if (copy_to_user(buf + n, rtd->dma_area, count - n))
+ return -EFAULT;
}
- if (ret)
- return count - ret;
return count;
}
--
2.35.1
next reply other threads:[~2022-07-06 7:24 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-06 7:23 Dan Carpenter [this message]
2022-07-06 7:23 ` [PATCH 1/2] ASoC: SOF: sof-client-probes: fix error codes in sof_probes_compr_copy() Dan Carpenter
2022-07-06 7:25 ` [PATCH 2/2] ASoC: SOF: sof-client-probes: cleanup tokenize_input() Dan Carpenter
2022-07-06 7:25 ` Dan Carpenter
2022-07-06 9:27 ` Péter Ujfalusi
2022-07-06 9:27 ` Péter Ujfalusi
2022-07-06 10:44 ` Dan Carpenter
2022-07-06 10:44 ` Dan Carpenter
2022-07-06 10:56 ` Cezary Rojewski
2022-07-06 10:56 ` Cezary Rojewski
2022-07-06 9:05 ` [PATCH 1/2] ASoC: SOF: sof-client-probes: fix error codes in sof_probes_compr_copy() Péter Ujfalusi
2022-07-06 9:05 ` Péter Ujfalusi
2022-07-06 10:00 ` Péter Ujfalusi
2022-07-06 10:00 ` Péter Ujfalusi
2022-07-06 10:21 ` Dan Carpenter
2022-07-06 10:21 ` Dan Carpenter
2022-07-06 10:31 ` Dan Carpenter
2022-07-06 10:31 ` Dan Carpenter
2022-07-06 10:36 ` Dan Carpenter
2022-07-06 10:36 ` Dan Carpenter
2022-07-06 10:41 ` Péter Ujfalusi
2022-07-06 10:41 ` Péter Ujfalusi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YsU4dYXYYVsfs92J@kili \
--to=dan.carpenter@oracle.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=daniel.baluta@nxp.com \
--cc=kai.vehmanen@linux.intel.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=lgirdwood@gmail.com \
--cc=peter.ujfalusi@linux.intel.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=ranjani.sridharan@linux.intel.com \
--cc=sound-open-firmware@alsa-project.org \
--cc=tiwai@suse.com \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.