forked from luck/tmp_suning_uos_patched
ALSA: emu10k1: Fix forgotten user-copy conversion in init code
The commitd42fe63d58
("ALSA: emu10k1: Get rid of set_fs() usage") converted the user-space copy hack with set_fs() to the direct memcpy(), but one place was forgotten. This resulted in the error from snd_emu10k1_init_efx(), eventually failed to load the driver. Fix the missing piece. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196687 Fixes:d42fe63d58
("ALSA: emu10k1: Get rid of set_fs() usage") Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
ed993c6fdf
commit
0b36f2bd28
|
@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu,
|
|||
{
|
||||
struct snd_emu10k1_fx8010_control_old_gpr __user *octl;
|
||||
|
||||
if (emu->support_tlv)
|
||||
return copy_from_user(gctl, &_gctl[idx], sizeof(*gctl));
|
||||
if (emu->support_tlv) {
|
||||
if (in_kernel)
|
||||
memcpy(gctl, (void *)&_gctl[idx], sizeof(*gctl));
|
||||
else if (copy_from_user(gctl, &_gctl[idx], sizeof(*gctl)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
octl = (struct snd_emu10k1_fx8010_control_old_gpr __user *)_gctl;
|
||||
if (copy_from_user(gctl, &octl[idx], sizeof(*octl)))
|
||||
if (in_kernel)
|
||||
memcpy(gctl, (void *)&octl[idx], sizeof(*octl));
|
||||
else if (copy_from_user(gctl, &octl[idx], sizeof(*octl)))
|
||||
return -EFAULT;
|
||||
gctl->tlv = NULL;
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue
Block a user