ALSA: emu10k1: move patch loader assertions into low-level functions
Convert some checks in snd_emu10k1_sample_new() back into assertions (as they were prior to da3cec35dd (ALSA: Kill snd_assert() in sound/pci/*, 2008-08-08)), and move them into the low-level memory access functions they protect. Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Message-ID: <20240406064830.1029573-9-oswald.buddenhagen@gmx.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
89b32ccb12
commit
6e36d4c274
@ -65,8 +65,6 @@ snd_emu10k1_sample_new(struct snd_emux *rec, struct snd_sf_sample *sp,
|
||||
size = BLANK_HEAD_SIZE;
|
||||
if (! (sp->v.mode_flags & SNDRV_SFNT_SAMPLE_8BITS))
|
||||
size *= 2;
|
||||
if (offset + size > blocksize)
|
||||
return -EINVAL;
|
||||
snd_emu10k1_synth_bzero(emu, sp->block, offset, size);
|
||||
offset += size;
|
||||
|
||||
@ -74,8 +72,6 @@ snd_emu10k1_sample_new(struct snd_emux *rec, struct snd_sf_sample *sp,
|
||||
size = sp->v.size;
|
||||
if (! (sp->v.mode_flags & SNDRV_SFNT_SAMPLE_8BITS))
|
||||
size *= 2;
|
||||
if (offset + size > blocksize)
|
||||
return -EINVAL;
|
||||
if (snd_emu10k1_synth_copy_from_user(emu, sp->block, offset, data, size)) {
|
||||
snd_emu10k1_synth_free(emu, sp->block);
|
||||
sp->block = NULL;
|
||||
|
@ -574,6 +574,9 @@ int snd_emu10k1_synth_bzero(struct snd_emu10k1 *emu, struct snd_util_memblk *blk
|
||||
void *ptr;
|
||||
struct snd_emu10k1_memblk *p = (struct snd_emu10k1_memblk *)blk;
|
||||
|
||||
if (snd_BUG_ON(offset + size > p->mem.size))
|
||||
return -EFAULT;
|
||||
|
||||
offset += blk->offset & (PAGE_SIZE - 1);
|
||||
end_offset = offset + size;
|
||||
page = get_aligned_page(offset);
|
||||
@ -604,6 +607,9 @@ int snd_emu10k1_synth_copy_from_user(struct snd_emu10k1 *emu, struct snd_util_me
|
||||
void *ptr;
|
||||
struct snd_emu10k1_memblk *p = (struct snd_emu10k1_memblk *)blk;
|
||||
|
||||
if (snd_BUG_ON(offset + size > p->mem.size))
|
||||
return -EFAULT;
|
||||
|
||||
offset += blk->offset & (PAGE_SIZE - 1);
|
||||
end_offset = offset + size;
|
||||
page = get_aligned_page(offset);
|
||||
|
Loading…
x
Reference in New Issue
Block a user