/* Free IRQ */
        free_irq(serstate->irq, (void *)synth_readbuf_handler);
 }
+EXPORT_SYMBOL_GPL(spk_stop_serial_interrupt);
 
 int spk_wait_for_xmitr(struct spk_synth *in_synth)
 {
 
 void spk_serial_release(void)
 {
+       spk_stop_serial_interrupt();
        if (speakup_info.port_tts == 0)
                return;
        synth_release_region(speakup_info.port_tts, 8);
 
 
 static void accent_release(void)
 {
+       spk_stop_serial_interrupt();
        if (speakup_info.port_tts)
                synth_release_region(speakup_info.port_tts-1, SYNTH_IO_EXTENT);
        speakup_info.port_tts = 0;
 
 
 static void dtpc_release(void)
 {
+       spk_stop_serial_interrupt();
        if (speakup_info.port_tts)
                synth_release_region(speakup_info.port_tts, SYNTH_IO_EXTENT);
        speakup_info.port_tts = 0;
 
 
 static void dtlk_release(void)
 {
+       spk_stop_serial_interrupt();
        if (speakup_info.port_tts)
                synth_release_region(speakup_info.port_tts-1, SYNTH_IO_EXTENT);
        speakup_info.port_tts = 0;
 
 
 static void keynote_release(void)
 {
+       spk_stop_serial_interrupt();
        if (synth_port)
                synth_release_region(synth_port, SYNTH_IO_EXTENT);
        synth_port = 0;
 
                sysfs_remove_group(speakup_kobj, &synth->attributes);
        for (var = synth->vars; var->var_id != MAXVARS; var++)
                speakup_unregister_var(var->var_id);
-       spk_stop_serial_interrupt();
        synth->release();
        synth = NULL;
 }