|
@@ -352,23 +352,26 @@ int probe_uart401(struct address_info *hw_config, struct module *owner)
|
|
|
goto cleanup_irq;
|
|
|
}
|
|
|
conf_printf(name, hw_config);
|
|
|
- midi_devs[devc->my_dev] = kmalloc(sizeof(struct midi_operations), GFP_KERNEL);
|
|
|
+ midi_devs[devc->my_dev] = kmemdup(&uart401_operations,
|
|
|
+ sizeof(struct midi_operations),
|
|
|
+ GFP_KERNEL);
|
|
|
if (!midi_devs[devc->my_dev]) {
|
|
|
printk(KERN_ERR "uart401: Failed to allocate memory\n");
|
|
|
goto cleanup_unload_mididev;
|
|
|
}
|
|
|
- memcpy(midi_devs[devc->my_dev], &uart401_operations, sizeof(struct midi_operations));
|
|
|
|
|
|
if (owner)
|
|
|
midi_devs[devc->my_dev]->owner = owner;
|
|
|
|
|
|
midi_devs[devc->my_dev]->devc = devc;
|
|
|
- midi_devs[devc->my_dev]->converter = kmalloc(sizeof(struct synth_operations), GFP_KERNEL);
|
|
|
+ midi_devs[devc->my_dev]->converter = kmemdup(&std_midi_synth,
|
|
|
+ sizeof(struct synth_operations),
|
|
|
+ GFP_KERNEL);
|
|
|
+
|
|
|
if (!midi_devs[devc->my_dev]->converter) {
|
|
|
printk(KERN_WARNING "uart401: Failed to allocate memory\n");
|
|
|
goto cleanup_midi_devs;
|
|
|
}
|
|
|
- memcpy(midi_devs[devc->my_dev]->converter, &std_midi_synth, sizeof(struct synth_operations));
|
|
|
strcpy(midi_devs[devc->my_dev]->info.name, name);
|
|
|
midi_devs[devc->my_dev]->converter->id = "UART401";
|
|
|
midi_devs[devc->my_dev]->converter->midi_dev = devc->my_dev;
|