Message ID | 20241216093410.377112-2-arnd@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/2] ALSA: compress_offload: import DMA_BUF namespace | expand |
On Mon, Dec 16, 2024 at 5:34 PM Arnd Bergmann <arnd@kernel.org> wrote: > > From: Arnd Bergmann <arnd@arndb.de> > > On some architectures, get_user() cannot read a 64-bit user variable: > > arm-linux-gnueabi-ld: sound/core/compress_offload.o: in function `snd_compr_ioctl': > compress_offload.c:(.text.snd_compr_ioctl+0x538): undefined reference to `__get_user_bad' > > Use an equivalent copy_from_user() instead. > > Fixes: 04177158cf98 ("ALSA: compress_offload: introduce accel operation mode") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com> Best regards Shengjiu Wang > --- > sound/core/compress_offload.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c > index ec2485c00e49..1d6769a66810 100644 > --- a/sound/core/compress_offload.c > +++ b/sound/core/compress_offload.c > @@ -1180,9 +1180,9 @@ static int snd_compr_task_seq(struct snd_compr_stream *stream, unsigned long arg > > if (stream->runtime->state != SNDRV_PCM_STATE_SETUP) > return -EPERM; > - retval = get_user(seqno, (__u64 __user *)arg); > - if (retval < 0) > - return retval; > + retval = copy_from_user(&seqno, (__u64 __user *)arg, sizeof(seqno)); > + if (retval) > + return -EFAULT; > retval = 0; > if (seqno == 0) { > list_for_each_entry_reverse(task, &stream->runtime->tasks, list) > -- > 2.39.5 > >
On 16-12-24, 10:33, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > On some architectures, get_user() cannot read a 64-bit user variable: > > arm-linux-gnueabi-ld: sound/core/compress_offload.o: in function `snd_compr_ioctl': > compress_offload.c:(.text.snd_compr_ioctl+0x538): undefined reference to `__get_user_bad' > > Use an equivalent copy_from_user() instead. Acked-by: Vinod Koul <vkoul@kernel.org>
diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index ec2485c00e49..1d6769a66810 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -1180,9 +1180,9 @@ static int snd_compr_task_seq(struct snd_compr_stream *stream, unsigned long arg if (stream->runtime->state != SNDRV_PCM_STATE_SETUP) return -EPERM; - retval = get_user(seqno, (__u64 __user *)arg); - if (retval < 0) - return retval; + retval = copy_from_user(&seqno, (__u64 __user *)arg, sizeof(seqno)); + if (retval) + return -EFAULT; retval = 0; if (seqno == 0) { list_for_each_entry_reverse(task, &stream->runtime->tasks, list)