mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
ALSA: pcm: Fix error checks of default read/write copy ops
copy_from/to_iter() returns the actually copied bytes, and the more
correct check should be to compare with the given bytes, instead of
zero-check.
Fixes: cf393babb3
("ALSA: pcm: Add copy ops with iov_iter")
Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Closes: https://lore.kernel.org/r/20230902053044.GJ3390869@ZenIV
Link: https://lore.kernel.org/r/20230902061044.19366-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
ef98a48832
commit
e14ebde5df
@ -1992,8 +1992,8 @@ static int default_write_copy(struct snd_pcm_substream *substream,
|
||||
int channel, unsigned long hwoff,
|
||||
struct iov_iter *iter, unsigned long bytes)
|
||||
{
|
||||
if (!copy_from_iter(get_dma_ptr(substream->runtime, channel, hwoff),
|
||||
bytes, iter))
|
||||
if (copy_from_iter(get_dma_ptr(substream->runtime, channel, hwoff),
|
||||
bytes, iter) != bytes)
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
@ -2025,8 +2025,8 @@ static int default_read_copy(struct snd_pcm_substream *substream,
|
||||
int channel, unsigned long hwoff,
|
||||
struct iov_iter *iter, unsigned long bytes)
|
||||
{
|
||||
if (!copy_to_iter(get_dma_ptr(substream->runtime, channel, hwoff),
|
||||
bytes, iter))
|
||||
if (copy_to_iter(get_dma_ptr(substream->runtime, channel, hwoff),
|
||||
bytes, iter) != bytes)
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user