: 2.5.54: fix oopsable bug in OSS PCI sound drivers
PATCH 1/1 : 2.5.54: fix oopsable bug in OSS PCI sound drivers
The following patch fixes an oopsable (according to a few reports) bug in the multiple open exclusion logic in my sound drivers and a driver derived from my code. If you intend to keep the OSS drivers for 2.6, please apply.
Tom
oss/es1370.c renamed from oss/es1370.c.orig +5 -4
@@ -3,7 +3,7 @@/* * es1370.c -- Ensoniq ES1370/Asahi Kasei AK4531 audio driver. * -* Copyright (C) 1998-2001 Thomas Sailer ([email protected]) +* Copyright (C) 1998-2001, 2003 Thomas Sailer ([email protected]) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
@@ -117,6 +117,7 @@* 07.01.2001 0.36 Timeout change in wrcodec as requested by Frank Klemm <[email protected]> * 31.01.2001 0.37 Register/Unregister gameport * Fix SETTRIGGER non OSS API conformity +* 03.01.2003 0.38 open_mode fixes from Georg Acher <[email protected]> * * some important things missing in Ensoniq documentation: *
@@ -1807,7 +1808,7 @@stop_adc (s);dealloc_dmabuf (s, &s->dma_adc); } - s->open_mode &= (~file->f_mode) & (FMODE_READ |FMODE_WRITE ); + s->open_mode &= ~(file->f_mode & (FMODE_READ |FMODE_WRITE ));wake_up (&s->open_wait);up (&s->open_sem);unlock_kernel ();
@@ -2498,7 +2499,7 @@set_current_state (TASK_RUNNING ); }down (&s->open_sem); - s->open_mode &= (~(file->f_mode <<FMODE_MIDI_SHIFT )) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ); + s->open_mode &= ~((file->f_mode <<FMODE_MIDI_SHIFT ) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ));spin_lock_irqsave (&s->lock, flags);if (!(s->open_mode & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ))) { s->ctrl &= ~CTRL_UART_EN ;
@@ -2740,7 +2741,7 @@ {if (!pci_present ())/* No PCI bus in this machine! */ return -ENODEV ; -printk (KERN_INFO "es1370: version v0.37 time " __TIME__" " __DATE__"\n" ); +printk (KERN_INFO "es1370: version v0.38 time " __TIME__" " __DATE__"\n" );return pci_module_init (&es1370_driver); }
oss/es1371.c renamed from oss/es1371.c.orig +5 -4
@@ -3,7 +3,7 @@/* * es1371.c -- Creative Ensoniq ES1371. * -* Copyright (C) 1998-2001 Thomas Sailer ([email protected]) +* Copyright (C) 1998-2001, 2003 Thomas Sailer ([email protected]) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
@@ -104,6 +104,7 @@* 31.01.2001 0.30 Register/Unregister gameport * Fix SETTRIGGER non OSS API conformity * 14.07.2001 0.31 Add list of laptops needing amplifier control +* 03.01.2003 0.32 open_mode fixes from Georg Acher <[email protected]> */ /*****************************************************************************/
@@ -1995,7 +1996,7 @@stop_adc (s);dealloc_dmabuf (s, &s->dma_adc); } - s->open_mode &= (~file->f_mode) & (FMODE_READ |FMODE_WRITE ); + s->open_mode &= ~(file->f_mode & (FMODE_READ |FMODE_WRITE ));up (&s->open_sem);wake_up (&s->open_wait);unlock_kernel ();
@@ -2675,7 +2676,7 @@set_current_state (TASK_RUNNING ); }down (&s->open_sem); - s->open_mode &= (~(file->f_mode <<FMODE_MIDI_SHIFT )) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ); + s->open_mode &= ~((file->f_mode <<FMODE_MIDI_SHIFT ) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ));spin_lock_irqsave (&s->lock, flags);if (!(s->open_mode & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ))) { s->ctrl &= ~CTRL_UART_EN ;
@@ -3044,7 +3045,7 @@ {if (!pci_present ())/* No PCI bus in this machine! */ return -ENODEV ; - printk(KERN_INFO PFX "version v0.30 time " __TIME__ " " __DATE__ "\n"); + printk(KERN_INFO PFX "version v0.32 time " __TIME__ " " __DATE__ "\n");return pci_module_init (&es1371_driver); }
oss/esssolo1.c renamed from oss/esssolo1.c.orig +4 -3
@@ -3,7 +3,7 @@/* * esssolo1.c -- ESS Technology Solo1 (ES1946) audio driver. * -* Copyright (C) 1998-2001 Thomas Sailer ([email protected]) +* Copyright (C) 1998-2001, 2003 Thomas Sailer ([email protected]) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
@@ -82,6 +82,7 @@* 22.05.2001 0.19 more cleanups, changed PM to PCI 2.4 style, got rid * of global list of devices, using pci device data. * Marcus Meissner <[email protected]> +* 03.01.2003 0.20 open_mode fixes from Georg Acher <[email protected]> */ /*****************************************************************************/
@@ -1986,7 +1987,7 @@set_current_state (TASK_RUNNING ); }down (&s->open_sem); - s->open_mode &= (~(file->f_mode <<FMODE_MIDI_SHIFT )) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ); + s->open_mode &= ~((file->f_mode <<FMODE_MIDI_SHIFT ) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ));spin_lock_irqsave (&s->lock, flags);if (!(s->open_mode & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ))) {outb (0x30 , s->iobase +7 );/* enable A1, A2 irq's */
@@ -2461,7 +2462,7 @@ {if (!pci_present ())/* No PCI bus in this machine! */ return -ENODEV ; -printk (KERN_INFO "solo1: version v0.19 time " __TIME__" " __DATE__"\n" ); +printk (KERN_INFO "solo1: version v0.20 time " __TIME__" " __DATE__"\n" );if (!pci_register_driver (&solo1_driver)) {pci_unregister_driver (&solo1_driver);return -ENODEV ;
oss/sonicvibes.c renamed from oss/sonicvibes.c.orig +5 -4
@@ -3,7 +3,7 @@/* * sonicvibes.c -- S3 Sonic Vibes audio driver. * -* Copyright (C) 1998-2001 Thomas Sailer ([email protected]) +* Copyright (C) 1998-2001, 2003 Thomas Sailer ([email protected]) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
@@ -94,6 +94,7 @@* Fix SETTRIGGER non OSS API conformity * 18.05.2001 0.30 PCI probing and error values cleaned up by Marcus * Meissner <[email protected]> +* 03.01.2003 0.31 open_mode fixes from Georg Acher <[email protected]> * */
@@ -1969,7 +1970,7 @@stop_adc (s);dealloc_dmabuf (s, &s->dma_adc); } - s->open_mode &= (~file->f_mode) & (FMODE_READ |FMODE_WRITE ); + s->open_mode &= ~(file->f_mode & (FMODE_READ |FMODE_WRITE ));wake_up (&s->open_wait);up (&s->open_sem);unlock_kernel ();
@@ -2245,7 +2246,7 @@set_current_state (TASK_RUNNING ); }down (&s->open_sem); - s->open_mode &= (~(file->f_mode <<FMODE_MIDI_SHIFT )) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ); + s->open_mode &= ~((file->f_mode <<FMODE_MIDI_SHIFT ) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ));spin_lock_irqsave (&s->lock, flags);if (!(s->open_mode & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ))) {outb (inb (s->ioenh +SV_CODEC_INTMASK ) & ~SV_CINTMASK_MIDI , s->ioenh +SV_CODEC_INTMASK );
@@ -2725,7 +2726,7 @@ {if (!pci_present ())/* No PCI bus in this machine! */ return -ENODEV ; -printk (KERN_INFO "sv: version v0.30 time " __TIME__" " __DATE__"\n" ); +printk (KERN_INFO "sv: version v0.31 time " __TIME__" " __DATE__"\n" );#if 0 if (!(wavetable_mem =__get_free_pages (GFP_KERNEL ,20 -PAGE_SHIFT )))printk (KERN_INFO "sv: cannot allocate 1MB of contiguous nonpageable memory for wavetable data\n" );
oss/cmpci.c renamed from oss/cmpci.c.orig +3 -2
@@ -82,6 +82,7 @@* - speaker mixer support * Mon Aug 13 2001 * - optimizations and cleanups +* 03/01/2003 - open_mode fixes from Georg Acher <[email protected]> * */ /*****************************************************************************/
@@ -2272,7 +2273,7 @@stop_adc (s);dealloc_dmabuf (&s->dma_adc); } - s->open_mode &= (~file->f_mode) & (FMODE_READ |FMODE_WRITE ); + s->open_mode &= ~(file->f_mode & (FMODE_READ |FMODE_WRITE ));up (&s->open_sem);wake_up (&s->open_wait);unlock_kernel ();
@@ -2540,7 +2541,7 @@set_current_state (TASK_RUNNING ); }down (&s->open_sem); - s->open_mode &= (~(file->f_mode <<FMODE_MIDI_SHIFT )) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ); + s->open_mode &= ~((file->f_mode <<FMODE_MIDI_SHIFT ) & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ));spin_lock_irqsave (&s->lock, flags);if (!(s->open_mode & (FMODE_MIDI_READ |FMODE_MIDI_WRITE ))) {del_timer (&s->midi.timer);