Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d23359b authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Jaroslav Kysela
Browse files

[ALSA] sparse address space annotations



ALSA Core,RawMidi Midlevel,ALSA<-OSS emulation,ALSA sequencer
RME32 driver,RME96 driver,EMU10K1/EMU10K2 driver,NM256 driver
Add sparse annotations where we do strange this with __iomem/__user
pointers.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
parent 49045d3d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ int __exit snd_memory_info_done(void)
int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, size_t count)
{
#if defined(__i386__) || defined(CONFIG_SPARC32)
	return copy_to_user(dst, (const void*)src, count) ? -EFAULT : 0;
	return copy_to_user(dst, (const void __force*)src, count) ? -EFAULT : 0;
#else
	char buf[256];
	while (count) {
@@ -280,7 +280,7 @@ int copy_to_user_fromio(void __user *dst, const volatile void __iomem *src, size
int copy_from_user_toio(volatile void __iomem *dst, const void __user *src, size_t count)
{
#if defined(__i386__) || defined(CONFIG_SPARC32)
	return copy_from_user((void*)dst, src, count) ? -EFAULT : 0;
	return copy_from_user((void __force *)dst, src, count) ? -EFAULT : 0;
#else
	char buf[256];
	while (count) {
+5 −2
Original line number Diff line number Diff line
@@ -850,7 +850,9 @@ static ssize_t snd_pcm_oss_write1(snd_pcm_substream_t *substream, const char __u
					return xfer > 0 ? xfer : -EAGAIN;
			}
		} else {
			tmp = snd_pcm_oss_write2(substream, (const char *)buf, runtime->oss.period_bytes, 0);
			tmp = snd_pcm_oss_write2(substream,
						 (const char __force *)buf,
						 runtime->oss.period_bytes, 0);
			if (tmp <= 0)
				return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp;
			runtime->oss.bytes += tmp;
@@ -926,7 +928,8 @@ static ssize_t snd_pcm_oss_read1(snd_pcm_substream_t *substream, char __user *bu
			xfer += tmp;
			runtime->oss.buffer_used -= tmp;
		} else {
			tmp = snd_pcm_oss_read2(substream, (char *)buf, runtime->oss.period_bytes, 0);
			tmp = snd_pcm_oss_read2(substream, (char __force *)buf,
						runtime->oss.period_bytes, 0);
			if (tmp <= 0)
				return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp;
			runtime->oss.bytes += tmp;
+6 −2
Original line number Diff line number Diff line
@@ -984,7 +984,9 @@ static ssize_t snd_rawmidi_read(struct file *file, char __user *buf, size_t coun
			spin_lock_irq(&runtime->lock);
		}
		spin_unlock_irq(&runtime->lock);
		count1 = snd_rawmidi_kernel_read1(substream, (unsigned char *)buf, count, 0);
		count1 = snd_rawmidi_kernel_read1(substream,
						  (unsigned char __force *)buf,
						  count, 0);
		if (count1 < 0)
			return result > 0 ? result : count1;
		result += count1;
@@ -1213,7 +1215,9 @@ static ssize_t snd_rawmidi_write(struct file *file, const char __user *buf, size
			spin_lock_irq(&runtime->lock);
		}
		spin_unlock_irq(&runtime->lock);
		count1 = snd_rawmidi_kernel_write1(substream, (unsigned char *)buf, count, 0);
		count1 = snd_rawmidi_kernel_write1(substream,
						   (unsigned char __force *)buf,
						   count, 0);
		if (count1 < 0)
			return result > 0 ? result : count1;
		result += count1;
+5 −2
Original line number Diff line number Diff line
@@ -413,7 +413,9 @@ static ssize_t snd_seq_read(struct file *file, char __user *buf, size_t count, l
			}
			count -= sizeof(snd_seq_event_t);
			buf += sizeof(snd_seq_event_t);
			err = snd_seq_expand_var_event(&cell->event, count, (char *)buf, 0, sizeof(snd_seq_event_t));
			err = snd_seq_expand_var_event(&cell->event, count,
						       (char __force *)buf, 0,
						       sizeof(snd_seq_event_t));
			if (err < 0)
				break;
			result += err;
@@ -1009,7 +1011,8 @@ static ssize_t snd_seq_write(struct file *file, const char __user *buf, size_t c
			}
			/* set user space pointer */
			event.data.ext.len = extlen | SNDRV_SEQ_EXT_USRPTR;
			event.data.ext.ptr = (char*)buf + sizeof(snd_seq_event_t);
			event.data.ext.ptr = (char __force *)buf
						+ sizeof(snd_seq_event_t);
			len += extlen; /* increment data length */
		} else {
#ifdef CONFIG_COMPAT
+6 −6
Original line number Diff line number Diff line
@@ -470,7 +470,7 @@ static void snd_emu10k1_write_op(emu10k1_fx8010_code_t *icode, unsigned int *ptr
{
	u_int32_t *code;
	snd_assert(*ptr < 512, return);
	code = (u_int32_t *)icode->code + (*ptr) * 2;
	code = (u_int32_t __force *)icode->code + (*ptr) * 2;
	set_bit(*ptr, icode->code_valid);
	code[0] = ((x & 0x3ff) << 10) | (y & 0x3ff);
	code[1] = ((op & 0x0f) << 20) | ((r & 0x3ff) << 10) | (a & 0x3ff);
@@ -485,7 +485,7 @@ static void snd_emu10k1_audigy_write_op(emu10k1_fx8010_code_t *icode, unsigned i
{
	u_int32_t *code;
	snd_assert(*ptr < 1024, return);
	code = (u_int32_t *)icode->code + (*ptr) * 2;
	code = (u_int32_t __force *)icode->code + (*ptr) * 2;
	set_bit(*ptr, icode->code_valid);
	code[0] = ((x & 0x7ff) << 12) | (y & 0x7ff);
	code[1] = ((op & 0x0f) << 24) | ((r & 0x7ff) << 12) | (a & 0x7ff);
@@ -1042,7 +1042,7 @@ static int __devinit _snd_emu10k1_audigy_init_efx(emu10k1_t *emu)
		err = -ENOMEM;
		goto __err;
	}
	gpr_map = (u32 *)icode->gpr_map;
	gpr_map = (u32 __force *)icode->gpr_map;

	icode->tram_data_map = icode->gpr_map + 512;
	icode->tram_addr_map = icode->tram_data_map + 256;
@@ -1431,7 +1431,7 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))
 __err:
	kfree(controls);
	if (icode != NULL) {
		kfree((void *)icode->gpr_map);
		kfree((void __force *)icode->gpr_map);
		kfree(icode);
	}
	return err;
@@ -1511,7 +1511,7 @@ static int __devinit _snd_emu10k1_init_efx(emu10k1_t *emu)
		err = -ENOMEM;
		goto __err;
	}
	gpr_map = (u32 *)icode->gpr_map;
	gpr_map = (u32 __force *)icode->gpr_map;

	icode->tram_data_map = icode->gpr_map + 256;
	icode->tram_addr_map = icode->tram_data_map + 160;
@@ -2032,7 +2032,7 @@ static int __devinit _snd_emu10k1_init_efx(emu10k1_t *emu)
	kfree(ipcm);
	kfree(controls);
	if (icode != NULL) {
		kfree((void *)icode->gpr_map);
		kfree((void __force *)icode->gpr_map);
		kfree(icode);
	}
	return err;
Loading