Commit 0b36f2bd authored by Takashi Iwai's avatar Takashi Iwai

ALSA: emu10k1: Fix forgotten user-copy conversion in init code

The commit d42fe63d ("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: d42fe63d ("ALSA: emu10k1: Get rid of set_fs() usage")
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ed993c6f
...@@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu, ...@@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu,
{ {
struct snd_emu10k1_fx8010_control_old_gpr __user *octl; struct snd_emu10k1_fx8010_control_old_gpr __user *octl;
if (emu->support_tlv) if (emu->support_tlv) {
return copy_from_user(gctl, &_gctl[idx], sizeof(*gctl)); 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; 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; return -EFAULT;
gctl->tlv = NULL; gctl->tlv = NULL;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment