}
                if (!devc->shared_irq)
                {
-                       if (request_irq(devc->irq, mpuintr, 0, "mpu401", (void *)m) < 0)
+                       if (request_irq(devc->irq, mpuintr, 0, "mpu401",
+                                       hw_config) < 0)
                        {
                                printk(KERN_WARNING "mpu401: Failed to allocate IRQ%d\n", devc->irq);
                                ret = -ENOMEM;
        return 0;
 
 out_irq:
-       free_irq(devc->irq, (void *)m);
+       free_irq(devc->irq, hw_config);
 out_mididev:
        sound_unload_mididev(m);
 out_err:
        if (n != -1) {
                release_region(hw_config->io_base, 2);
                if (hw_config->always_detect == 0 && hw_config->irq > 0)
-                       free_irq(hw_config->irq, (void *)n);
+                       free_irq(hw_config->irq, hw_config);
                p=mpu401_synth_operations[n];
                sound_unload_mididev(n);
                sound_unload_timerdev(hw_config->slots[2]);