[ALSA] This patch removes memset() from snd_emu10k1_fx8010_info() which apparently
isn't needed there. Upatched code uses: memset(info, 0, sizeof(info)); where 'info' is a pointer and therefore only first 4 bytes of 'info' gets cleared on a 32bit machine. Anyway looking at the code zeoring this memory region isn't needed at all because the snd_emu10k1_fx8010_info() function initializes all the 'info' fields on its own. So that's why this code works at all in its original form. This patch removes this redundant code. Also snd_emu10k1_fx8010_info() can't fail so lets save some bytes and change its return type to void. Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
parent
6ca2cdcc5e
commit
51882453a7
@ -2440,14 +2440,13 @@ static void copy_string(char *dst, char *src, char *null, int idx)
|
|||||||
strcpy(dst, src);
|
strcpy(dst, src);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snd_emu10k1_fx8010_info(struct snd_emu10k1 *emu,
|
static void snd_emu10k1_fx8010_info(struct snd_emu10k1 *emu,
|
||||||
struct snd_emu10k1_fx8010_info *info)
|
struct snd_emu10k1_fx8010_info *info)
|
||||||
{
|
{
|
||||||
char **fxbus, **extin, **extout;
|
char **fxbus, **extin, **extout;
|
||||||
unsigned short fxbus_mask, extin_mask, extout_mask;
|
unsigned short fxbus_mask, extin_mask, extout_mask;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
memset(info, 0, sizeof(info));
|
|
||||||
info->internal_tram_size = emu->fx8010.itram_size;
|
info->internal_tram_size = emu->fx8010.itram_size;
|
||||||
info->external_tram_size = emu->fx8010.etram_pages.bytes / 2;
|
info->external_tram_size = emu->fx8010.etram_pages.bytes / 2;
|
||||||
fxbus = fxbuses;
|
fxbus = fxbuses;
|
||||||
@ -2464,7 +2463,6 @@ static int snd_emu10k1_fx8010_info(struct snd_emu10k1 *emu,
|
|||||||
for (res = 16; res < 32; res++, extout++)
|
for (res = 16; res < 32; res++, extout++)
|
||||||
copy_string(info->extout_names[res], extout_mask & (1 << res) ? *extout : NULL, "Unused", res);
|
copy_string(info->extout_names[res], extout_mask & (1 << res) ? *extout : NULL, "Unused", res);
|
||||||
info->gpr_controls = emu->fx8010.gpr_count;
|
info->gpr_controls = emu->fx8010.gpr_count;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, unsigned int cmd, unsigned long arg)
|
static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, unsigned int cmd, unsigned long arg)
|
||||||
@ -2485,10 +2483,7 @@ static int snd_emu10k1_fx8010_ioctl(struct snd_hwdep * hw, struct file *file, un
|
|||||||
info = kmalloc(sizeof(*info), GFP_KERNEL);
|
info = kmalloc(sizeof(*info), GFP_KERNEL);
|
||||||
if (!info)
|
if (!info)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
if ((res = snd_emu10k1_fx8010_info(emu, info)) < 0) {
|
snd_emu10k1_fx8010_info(emu, info);
|
||||||
kfree(info);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
if (copy_to_user(argp, info, sizeof(*info))) {
|
if (copy_to_user(argp, info, sizeof(*info))) {
|
||||||
kfree(info);
|
kfree(info);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user