patch-2.4.19 linux-2.4.19/drivers/sound/maestro.c
Next file: linux-2.4.19/drivers/sound/maestro3.c
Previous file: linux-2.4.19/drivers/sound/mad16.c
Back to the patch index
Back to the overall index
- Lines: 38
- Date:
Fri Aug 2 17:39:44 2002
- Orig file:
linux-2.4.18/drivers/sound/maestro.c
- Orig date:
Sun Sep 30 12:26:08 2001
diff -urN linux-2.4.18/drivers/sound/maestro.c linux-2.4.19/drivers/sound/maestro.c
@@ -2756,7 +2756,7 @@
if (s->dma_adc.mapped)
s->dma_adc.count &= s->dma_adc.fragsize-1;
spin_unlock_irqrestore(&s->lock, flags);
- return copy_to_user((void *)arg, &cinfo, sizeof(cinfo));
+ return copy_to_user((void *)arg, &cinfo, sizeof(cinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETOPTR:
if (!(file->f_mode & FMODE_WRITE))
@@ -2771,7 +2771,7 @@
if (s->dma_dac.mapped)
s->dma_dac.count &= s->dma_dac.fragsize-1;
spin_unlock_irqrestore(&s->lock, flags);
- return copy_to_user((void *)arg, &cinfo, sizeof(cinfo));
+ return copy_to_user((void *)arg, &cinfo, sizeof(cinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETBLKSIZE:
if (file->f_mode & FMODE_WRITE) {
@@ -3569,9 +3569,19 @@
static void maestro_remove(struct pci_dev *pcidev) {
struct ess_card *card = pci_get_drvdata(pcidev);
int i;
+ u32 n;
/* XXX maybe should force stop bob, but should be all
stopped by _release by now */
+
+ /* Turn off hardware volume control interrupt.
+ This has to come before we leave the IRQ below,
+ or a crash results if a button is pressed ! */
+
+ n = inw(card->iobase+0x18);
+ n&=~(1<<6);
+ outw(n, card->iobase+0x18);
+
free_irq(card->irq, card);
unregister_sound_mixer(card->dev_mixer);
for(i=0;i<NR_DSPS;i++)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)