aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/arm/sa11xx-uda1341.c2
-rw-r--r--sound/core/pcm_native.c10
-rw-r--r--sound/oss/Kconfig115
-rw-r--r--sound/oss/btaudio.c2
-rw-r--r--sound/oss/emu10k1/audio.c8
-rw-r--r--sound/oss/emu10k1/cardwi.c31
-rw-r--r--sound/oss/emu10k1/cardwi.h2
-rw-r--r--sound/oss/emu10k1/passthrough.c13
-rw-r--r--sound/oss/via82cxxx_audio.c4
-rw-r--r--sound/usb/usx2y/usX2Yhwdep.c2
10 files changed, 49 insertions, 140 deletions
diff --git a/sound/arm/sa11xx-uda1341.c b/sound/arm/sa11xx-uda1341.c
index c79a9afd0955..c7e1b2646193 100644
--- a/sound/arm/sa11xx-uda1341.c
+++ b/sound/arm/sa11xx-uda1341.c
@@ -125,7 +125,7 @@ struct audio_stream {
125#else 125#else
126 dma_regs_t *dma_regs; /* points to our DMA registers */ 126 dma_regs_t *dma_regs; /* points to our DMA registers */
127#endif 127#endif
128 int active:1; /* we are using this stream for transfer now */ 128 unsigned int active:1; /* we are using this stream for transfer now */
129 int period; /* current transfer period */ 129 int period; /* current transfer period */
130 int periods; /* current count of periods registerd in the DMA engine */ 130 int periods; /* current count of periods registerd in the DMA engine */
131 int tx_spin; /* are we recoding - flag used to do DMA trans. for sync */ 131 int tx_spin; /* are we recoding - flag used to do DMA trans. for sync */
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 66e24b5da469..6ea67b16c676 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -3027,7 +3027,7 @@ static struct page * snd_pcm_mmap_status_nopage(struct vm_area_struct *area,
3027 struct page * page; 3027 struct page * page;
3028 3028
3029 if (substream == NULL) 3029 if (substream == NULL)
3030 return NOPAGE_OOM; 3030 return NOPAGE_SIGBUS;
3031 runtime = substream->runtime; 3031 runtime = substream->runtime;
3032 page = virt_to_page(runtime->status); 3032 page = virt_to_page(runtime->status);
3033 get_page(page); 3033 get_page(page);
@@ -3070,7 +3070,7 @@ static struct page * snd_pcm_mmap_control_nopage(struct vm_area_struct *area,
3070 struct page * page; 3070 struct page * page;
3071 3071
3072 if (substream == NULL) 3072 if (substream == NULL)
3073 return NOPAGE_OOM; 3073 return NOPAGE_SIGBUS;
3074 runtime = substream->runtime; 3074 runtime = substream->runtime;
3075 page = virt_to_page(runtime->control); 3075 page = virt_to_page(runtime->control);
3076 get_page(page); 3076 get_page(page);
@@ -3131,18 +3131,18 @@ static struct page *snd_pcm_mmap_data_nopage(struct vm_area_struct *area,
3131 size_t dma_bytes; 3131 size_t dma_bytes;
3132 3132
3133 if (substream == NULL) 3133 if (substream == NULL)
3134 return NOPAGE_OOM; 3134 return NOPAGE_SIGBUS;
3135 runtime = substream->runtime; 3135 runtime = substream->runtime;
3136 offset = area->vm_pgoff << PAGE_SHIFT; 3136 offset = area->vm_pgoff << PAGE_SHIFT;
3137 offset += address - area->vm_start; 3137 offset += address - area->vm_start;
3138 snd_assert((offset % PAGE_SIZE) == 0, return NOPAGE_OOM); 3138 snd_assert((offset % PAGE_SIZE) == 0, return NOPAGE_SIGBUS);
3139 dma_bytes = PAGE_ALIGN(runtime->dma_bytes); 3139 dma_bytes = PAGE_ALIGN(runtime->dma_bytes);
3140 if (offset > dma_bytes - PAGE_SIZE) 3140 if (offset > dma_bytes - PAGE_SIZE)
3141 return NOPAGE_SIGBUS; 3141 return NOPAGE_SIGBUS;
3142 if (substream->ops->page) { 3142 if (substream->ops->page) {
3143 page = substream->ops->page(substream, offset); 3143 page = substream->ops->page(substream, offset);
3144 if (! page) 3144 if (! page)
3145 return NOPAGE_OOM; 3145 return NOPAGE_OOM; /* XXX: is this really due to OOM? */
3146 } else { 3146 } else {
3147 vaddr = runtime->dma_area + offset; 3147 vaddr = runtime->dma_area + offset;
3148 page = virt_to_page(vaddr); 3148 page = virt_to_page(vaddr);
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig
index cc2b9ab7f4e5..a0588c21324a 100644
--- a/sound/oss/Kconfig
+++ b/sound/oss/Kconfig
@@ -5,20 +5,6 @@
5# 5#
6# Prompt user for primary drivers. 6# Prompt user for primary drivers.
7 7
8config OSS_OBSOLETE_DRIVER
9 bool "Obsolete OSS drivers"
10 depends on SOUND_PRIME
11 help
12 This option enables support for obsolete OSS drivers that
13 are scheduled for removal in the near future since there
14 are ALSA drivers for the same hardware.
15
16 Please contact Adrian Bunk <bunk@stusta.de> if you had to
17 say Y here because your soundcard is not properly supported
18 by ALSA.
19
20 If unsure, say N.
21
22config SOUND_BT878 8config SOUND_BT878
23 tristate "BT878 audio dma" 9 tristate "BT878 audio dma"
24 depends on SOUND_PRIME && PCI 10 depends on SOUND_PRIME && PCI
@@ -35,40 +21,6 @@ config SOUND_BT878
35 To compile this driver as a module, choose M here: the module will 21 To compile this driver as a module, choose M here: the module will
36 be called btaudio. 22 be called btaudio.
37 23
38config SOUND_EMU10K1
39 tristate "Creative SBLive! (EMU10K1)"
40 depends on SOUND_PRIME && PCI && OSS_OBSOLETE_DRIVER
41 ---help---
42 Say Y or M if you have a PCI sound card using the EMU10K1 chipset,
43 such as the Creative SBLive!, SB PCI512 or Emu-APS.
44
45 For more information on this driver and the degree of support for
46 the different card models please check:
47
48 <http://sourceforge.net/projects/emu10k1/>
49
50 It is now possible to load dsp microcode patches into the EMU10K1
51 chip. These patches are used to implement real time sound
52 processing effects which include for example: signal routing,
53 bass/treble control, AC3 passthrough, ...
54 Userspace tools to create new patches and load/unload them can be
55 found in the emu-tools package at the above URL.
56
57config MIDI_EMU10K1
58 bool "Creative SBLive! MIDI (EXPERIMENTAL)"
59 depends on SOUND_EMU10K1 && EXPERIMENTAL && ISA_DMA_API
60 help
61 Say Y if you want to be able to use the OSS /dev/sequencer
62 interface. This code is still experimental.
63
64config SOUND_FUSION
65 tristate "Crystal SoundFusion (CS4280/461x)"
66 depends on SOUND_PRIME && PCI && OSS_OBSOLETE_DRIVER
67 help
68 This module drives the Crystal SoundFusion devices (CS4280/46xx
69 series) when wired as native sound drivers with AC97 codecs. If
70 this driver does not work try the CS4232 driver.
71
72config SOUND_BCM_CS4297A 24config SOUND_BCM_CS4297A
73 tristate "Crystal Sound CS4297a (for Swarm)" 25 tristate "Crystal Sound CS4297a (for Swarm)"
74 depends on SOUND_PRIME && SIBYTE_SWARM 26 depends on SOUND_PRIME && SIBYTE_SWARM
@@ -448,47 +400,6 @@ config SOUND_DMAP
448 400
449 Say Y unless you have 16MB or more RAM or a PCI sound card. 401 Say Y unless you have 16MB or more RAM or a PCI sound card.
450 402
451config SOUND_AD1816
452 tristate "AD1816(A) based cards (EXPERIMENTAL)"
453 depends on EXPERIMENTAL && SOUND_OSS && OSS_OBSOLETE_DRIVER
454 help
455 Say M here if you have a sound card based on the Analog Devices
456 AD1816(A) chip.
457
458 If you compile the driver into the kernel, you have to add
459 "ad1816=<io>,<irq>,<dma>,<dma2>" to the kernel command line.
460
461config SOUND_AD1889
462 tristate "AD1889 based cards (AD1819 codec) (EXPERIMENTAL)"
463 depends on EXPERIMENTAL && SOUND_OSS && PCI && OSS_OBSOLETE_DRIVER
464 help
465 Say M here if you have a sound card based on the Analog Devices
466 AD1889 chip.
467
468config SOUND_ADLIB
469 tristate "Adlib Cards"
470 depends on SOUND_OSS && OSS_OBSOLETE_DRIVER
471 help
472 Includes ASB 64 4D. Information on programming AdLib cards is
473 available at <http://www.itsnet.com/home/ldragon/Specs/adlib.html>.
474
475config SOUND_ACI_MIXER
476 tristate "ACI mixer (miroSOUND PCM1-pro/PCM12/PCM20)"
477 depends on SOUND_OSS && OSS_OBSOLETE_DRIVER
478 ---help---
479 ACI (Audio Command Interface) is a protocol used to communicate with
480 the microcontroller on some sound cards produced by miro and
481 Cardinal Technologies. The main function of the ACI is to control
482 the mixer and to get a product identification.
483
484 This VoxWare ACI driver currently supports the ACI functions on the
485 miroSOUND PCM1-pro, PCM12 and PCM20 radio. On the PCM20 radio, ACI
486 also controls the radio tuner. This is supported in the video4linux
487 miropcm20 driver (say M or Y here and go back to "Multimedia
488 devices" -> "Radio Adapters").
489
490 This driver is also available as a module and will be called aci.
491
492config SOUND_CS4232 403config SOUND_CS4232
493 tristate "Crystal CS4232 based (PnP) cards" 404 tristate "Crystal CS4232 based (PnP) cards"
494 depends on SOUND_OSS 405 depends on SOUND_OSS
@@ -594,18 +505,6 @@ config SOUND_MPU401
594 If you compile the driver into the kernel, you have to add 505 If you compile the driver into the kernel, you have to add
595 "mpu401=<io>,<irq>" to the kernel command line. 506 "mpu401=<io>,<irq>" to the kernel command line.
596 507
597config SOUND_NM256
598 tristate "NM256AV/NM256ZX audio support"
599 depends on SOUND_OSS && OSS_OBSOLETE_DRIVER
600 help
601 Say M here to include audio support for the NeoMagic 256AV/256ZX
602 chipsets. These are the audio chipsets found in the Sony
603 Z505S/SX/DX, some Sony F-series, and the Dell Latitude CPi and CPt
604 laptops. It includes support for an AC97-compatible mixer and an
605 apparently proprietary sound engine.
606
607 See <file:Documentation/sound/oss/NM256> for further information.
608
609config SOUND_PAS 508config SOUND_PAS
610 tristate "ProAudioSpectrum 16 support" 509 tristate "ProAudioSpectrum 16 support"
611 depends on SOUND_OSS 510 depends on SOUND_OSS
@@ -714,20 +613,6 @@ config SOUND_YM3812
714 613
715 If unsure, say Y. 614 If unsure, say Y.
716 615
717config SOUND_OPL3SA2
718 tristate "Yamaha OPL3-SA2 and SA3 based PnP cards"
719 depends on SOUND_OSS && OSS_OBSOLETE_DRIVER
720 help
721 Say Y or M if you have a card based on one of these Yamaha sound
722 chipsets or the "SAx", which is actually a SA3. Read
723 <file:Documentation/sound/oss/OPL3-SA2> for more information on
724 configuring these cards.
725
726 If you compile the driver into the kernel and do not also
727 configure in the optional ISA PnP support, you will have to add
728 "opl3sa2=<io>,<irq>,<dma>,<dma2>,<mssio>,<mpuio>" to the kernel
729 command line.
730
731config SOUND_UART6850 616config SOUND_UART6850
732 tristate "6850 UART support" 617 tristate "6850 UART support"
733 depends on SOUND_OSS 618 depends on SOUND_OSS
diff --git a/sound/oss/btaudio.c b/sound/oss/btaudio.c
index 6ad384114239..ad7210a00dc0 100644
--- a/sound/oss/btaudio.c
+++ b/sound/oss/btaudio.c
@@ -1020,6 +1020,7 @@ static int __devinit btaudio_probe(struct pci_dev *pci_dev,
1020 fail2: 1020 fail2:
1021 free_irq(bta->irq,bta); 1021 free_irq(bta->irq,bta);
1022 fail1: 1022 fail1:
1023 iounmap(bta->mmio);
1023 kfree(bta); 1024 kfree(bta);
1024 fail0: 1025 fail0:
1025 release_mem_region(pci_resource_start(pci_dev,0), 1026 release_mem_region(pci_resource_start(pci_dev,0),
@@ -1051,6 +1052,7 @@ static void __devexit btaudio_remove(struct pci_dev *pci_dev)
1051 free_irq(bta->irq,bta); 1052 free_irq(bta->irq,bta);
1052 release_mem_region(pci_resource_start(pci_dev,0), 1053 release_mem_region(pci_resource_start(pci_dev,0),
1053 pci_resource_len(pci_dev,0)); 1054 pci_resource_len(pci_dev,0));
1055 iounmap(bta->mmio);
1054 1056
1055 /* remove from linked list */ 1057 /* remove from linked list */
1056 if (bta == btaudios) { 1058 if (bta == btaudios) {
diff --git a/sound/oss/emu10k1/audio.c b/sound/oss/emu10k1/audio.c
index 86dd23974e05..49f902f35c28 100644
--- a/sound/oss/emu10k1/audio.c
+++ b/sound/oss/emu10k1/audio.c
@@ -111,9 +111,15 @@ static ssize_t emu10k1_audio_read(struct file *file, char __user *buffer, size_t
111 111
112 if ((bytestocopy >= wiinst->buffer.fragment_size) 112 if ((bytestocopy >= wiinst->buffer.fragment_size)
113 || (bytestocopy >= count)) { 113 || (bytestocopy >= count)) {
114 int rc;
115
114 bytestocopy = min_t(u32, bytestocopy, count); 116 bytestocopy = min_t(u32, bytestocopy, count);
115 117
116 emu10k1_wavein_xferdata(wiinst, (u8 __user *)buffer, &bytestocopy); 118 rc = emu10k1_wavein_xferdata(wiinst,
119 (u8 __user *)buffer,
120 &bytestocopy);
121 if (rc)
122 return rc;
117 123
118 count -= bytestocopy; 124 count -= bytestocopy;
119 buffer += bytestocopy; 125 buffer += bytestocopy;
diff --git a/sound/oss/emu10k1/cardwi.c b/sound/oss/emu10k1/cardwi.c
index 8bbf44b881b4..060d1be94d33 100644
--- a/sound/oss/emu10k1/cardwi.c
+++ b/sound/oss/emu10k1/cardwi.c
@@ -304,11 +304,12 @@ void emu10k1_wavein_getxfersize(struct wiinst *wiinst, u32 * size)
304 } 304 }
305} 305}
306 306
307static void copy_block(u8 __user *dst, u8 * src, u32 str, u32 len, u8 cov) 307static int copy_block(u8 __user *dst, u8 * src, u32 str, u32 len, u8 cov)
308{ 308{
309 if (cov == 1) 309 if (cov == 1) {
310 __copy_to_user(dst, src + str, len); 310 if (__copy_to_user(dst, src + str, len))
311 else { 311 return -EFAULT;
312 } else {
312 u8 byte; 313 u8 byte;
313 u32 i; 314 u32 i;
314 315
@@ -316,22 +317,26 @@ static void copy_block(u8 __user *dst, u8 * src, u32 str, u32 len, u8 cov)
316 317
317 for (i = 0; i < len; i++) { 318 for (i = 0; i < len; i++) {
318 byte = src[2 * i] ^ 0x80; 319 byte = src[2 * i] ^ 0x80;
319 __copy_to_user(dst + i, &byte, 1); 320 if (__copy_to_user(dst + i, &byte, 1))
321 return -EFAULT;
320 } 322 }
321 } 323 }
324
325 return 0;
322} 326}
323 327
324void emu10k1_wavein_xferdata(struct wiinst *wiinst, u8 __user *data, u32 * size) 328int emu10k1_wavein_xferdata(struct wiinst *wiinst, u8 __user *data, u32 * size)
325{ 329{
326 struct wavein_buffer *buffer = &wiinst->buffer; 330 struct wavein_buffer *buffer = &wiinst->buffer;
327 u32 sizetocopy, sizetocopy_now, start; 331 u32 sizetocopy, sizetocopy_now, start;
328 unsigned long flags; 332 unsigned long flags;
333 int ret;
329 334
330 sizetocopy = min_t(u32, buffer->size, *size); 335 sizetocopy = min_t(u32, buffer->size, *size);
331 *size = sizetocopy; 336 *size = sizetocopy;
332 337
333 if (!sizetocopy) 338 if (!sizetocopy)
334 return; 339 return 0;
335 340
336 spin_lock_irqsave(&wiinst->lock, flags); 341 spin_lock_irqsave(&wiinst->lock, flags);
337 start = buffer->pos; 342 start = buffer->pos;
@@ -345,11 +350,17 @@ void emu10k1_wavein_xferdata(struct wiinst *wiinst, u8 __user *data, u32 * size)
345 if (sizetocopy > sizetocopy_now) { 350 if (sizetocopy > sizetocopy_now) {
346 sizetocopy -= sizetocopy_now; 351 sizetocopy -= sizetocopy_now;
347 352
348 copy_block(data, buffer->addr, start, sizetocopy_now, buffer->cov); 353 ret = copy_block(data, buffer->addr, start, sizetocopy_now,
349 copy_block(data + sizetocopy_now, buffer->addr, 0, sizetocopy, buffer->cov); 354 buffer->cov);
355 if (ret == 0)
356 ret = copy_block(data + sizetocopy_now, buffer->addr, 0,
357 sizetocopy, buffer->cov);
350 } else { 358 } else {
351 copy_block(data, buffer->addr, start, sizetocopy, buffer->cov); 359 ret = copy_block(data, buffer->addr, start, sizetocopy,
360 buffer->cov);
352 } 361 }
362
363 return ret;
353} 364}
354 365
355void emu10k1_wavein_update(struct emu10k1_card *card, struct wiinst *wiinst) 366void emu10k1_wavein_update(struct emu10k1_card *card, struct wiinst *wiinst)
diff --git a/sound/oss/emu10k1/cardwi.h b/sound/oss/emu10k1/cardwi.h
index 15cfb9b35596..e82029b46ad1 100644
--- a/sound/oss/emu10k1/cardwi.h
+++ b/sound/oss/emu10k1/cardwi.h
@@ -83,7 +83,7 @@ void emu10k1_wavein_close(struct emu10k1_wavedevice *);
83void emu10k1_wavein_start(struct emu10k1_wavedevice *); 83void emu10k1_wavein_start(struct emu10k1_wavedevice *);
84void emu10k1_wavein_stop(struct emu10k1_wavedevice *); 84void emu10k1_wavein_stop(struct emu10k1_wavedevice *);
85void emu10k1_wavein_getxfersize(struct wiinst *, u32 *); 85void emu10k1_wavein_getxfersize(struct wiinst *, u32 *);
86void emu10k1_wavein_xferdata(struct wiinst *, u8 __user *, u32 *); 86int emu10k1_wavein_xferdata(struct wiinst *, u8 __user *, u32 *);
87int emu10k1_wavein_setformat(struct emu10k1_wavedevice *, struct wave_format *); 87int emu10k1_wavein_setformat(struct emu10k1_wavedevice *, struct wave_format *);
88void emu10k1_wavein_update(struct emu10k1_card *, struct wiinst *); 88void emu10k1_wavein_update(struct emu10k1_card *, struct wiinst *);
89 89
diff --git a/sound/oss/emu10k1/passthrough.c b/sound/oss/emu10k1/passthrough.c
index 4e3baca7d41f..6d21d4368dec 100644
--- a/sound/oss/emu10k1/passthrough.c
+++ b/sound/oss/emu10k1/passthrough.c
@@ -162,12 +162,15 @@ ssize_t emu10k1_pt_write(struct file *file, const char __user *buffer, size_t co
162 162
163 DPD(3, "prepend size %d, prepending %d bytes\n", pt->prepend_size, needed); 163 DPD(3, "prepend size %d, prepending %d bytes\n", pt->prepend_size, needed);
164 if (count < needed) { 164 if (count < needed) {
165 copy_from_user(pt->buf + pt->prepend_size, buffer, count); 165 if (copy_from_user(pt->buf + pt->prepend_size,
166 buffer, count))
167 return -EFAULT;
166 pt->prepend_size += count; 168 pt->prepend_size += count;
167 DPD(3, "prepend size now %d\n", pt->prepend_size); 169 DPD(3, "prepend size now %d\n", pt->prepend_size);
168 return count; 170 return count;
169 } 171 }
170 copy_from_user(pt->buf + pt->prepend_size, buffer, needed); 172 if (copy_from_user(pt->buf + pt->prepend_size, buffer, needed))
173 return -EFAULT;
171 r = pt_putblock(wave_dev, (u16 *) pt->buf, nonblock); 174 r = pt_putblock(wave_dev, (u16 *) pt->buf, nonblock);
172 if (r) 175 if (r)
173 return r; 176 return r;
@@ -178,7 +181,8 @@ ssize_t emu10k1_pt_write(struct file *file, const char __user *buffer, size_t co
178 blocks_copied = 0; 181 blocks_copied = 0;
179 while (blocks > 0) { 182 while (blocks > 0) {
180 u16 __user *bufptr = (u16 __user *) buffer + (bytes_copied/2); 183 u16 __user *bufptr = (u16 __user *) buffer + (bytes_copied/2);
181 copy_from_user(pt->buf, bufptr, PT_BLOCKSIZE); 184 if (copy_from_user(pt->buf, bufptr, PT_BLOCKSIZE))
185 return -EFAULT;
182 r = pt_putblock(wave_dev, (u16 *)pt->buf, nonblock); 186 r = pt_putblock(wave_dev, (u16 *)pt->buf, nonblock);
183 if (r) { 187 if (r) {
184 if (bytes_copied) 188 if (bytes_copied)
@@ -193,7 +197,8 @@ ssize_t emu10k1_pt_write(struct file *file, const char __user *buffer, size_t co
193 i = count - bytes_copied; 197 i = count - bytes_copied;
194 if (i) { 198 if (i) {
195 pt->prepend_size = i; 199 pt->prepend_size = i;
196 copy_from_user(pt->buf, buffer + bytes_copied, i); 200 if (copy_from_user(pt->buf, buffer + bytes_copied, i))
201 return -EFAULT;
197 bytes_copied += i; 202 bytes_copied += i;
198 DPD(3, "filling prepend buffer with %d bytes", i); 203 DPD(3, "filling prepend buffer with %d bytes", i);
199 } 204 }
diff --git a/sound/oss/via82cxxx_audio.c b/sound/oss/via82cxxx_audio.c
index 17837d4b5ed3..c96cc8c68b3b 100644
--- a/sound/oss/via82cxxx_audio.c
+++ b/sound/oss/via82cxxx_audio.c
@@ -2120,8 +2120,8 @@ static struct page * via_mm_nopage (struct vm_area_struct * vma,
2120 return NOPAGE_SIGBUS; /* Disallow mremap */ 2120 return NOPAGE_SIGBUS; /* Disallow mremap */
2121 } 2121 }
2122 if (!card) { 2122 if (!card) {
2123 DPRINTK ("EXIT, returning NOPAGE_OOM\n"); 2123 DPRINTK ("EXIT, returning NOPAGE_SIGBUS\n");
2124 return NOPAGE_OOM; /* Nothing allocated */ 2124 return NOPAGE_SIGBUS; /* Nothing allocated */
2125 } 2125 }
2126 2126
2127 pgoff = vma->vm_pgoff + ((address - vma->vm_start) >> PAGE_SHIFT); 2127 pgoff = vma->vm_pgoff + ((address - vma->vm_start) >> PAGE_SHIFT);
diff --git a/sound/usb/usx2y/usX2Yhwdep.c b/sound/usb/usx2y/usX2Yhwdep.c
index 4b52d18dcd53..b76b3dd9df25 100644
--- a/sound/usb/usx2y/usX2Yhwdep.c
+++ b/sound/usb/usx2y/usX2Yhwdep.c
@@ -48,7 +48,7 @@ static struct page * snd_us428ctls_vm_nopage(struct vm_area_struct *area, unsign
48 48
49 offset = area->vm_pgoff << PAGE_SHIFT; 49 offset = area->vm_pgoff << PAGE_SHIFT;
50 offset += address - area->vm_start; 50 offset += address - area->vm_start;
51 snd_assert((offset % PAGE_SIZE) == 0, return NOPAGE_OOM); 51 snd_assert((offset % PAGE_SIZE) == 0, return NOPAGE_SIGBUS);
52 vaddr = (char*)((struct usX2Ydev *)area->vm_private_data)->us428ctls_sharedmem + offset; 52 vaddr = (char*)((struct usX2Ydev *)area->vm_private_data)->us428ctls_sharedmem + offset;
53 page = virt_to_page(vaddr); 53 page = virt_to_page(vaddr);
54 get_page(page); 54 get_page(page);