diff options
Diffstat (limited to 'sound/core')
-rw-r--r-- | sound/core/seq/oss/seq_oss_synth.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sound/core/seq/oss/seq_oss_synth.c b/sound/core/seq/oss/seq_oss_synth.c index ab570a0a6183..558dadbf45f1 100644 --- a/sound/core/seq/oss/seq_oss_synth.c +++ b/sound/core/seq/oss/seq_oss_synth.c | |||
@@ -245,8 +245,13 @@ snd_seq_oss_synth_setup(struct seq_oss_devinfo *dp) | |||
245 | info->nr_voices = rec->nr_voices; | 245 | info->nr_voices = rec->nr_voices; |
246 | if (info->nr_voices > 0) { | 246 | if (info->nr_voices > 0) { |
247 | info->ch = kcalloc(info->nr_voices, sizeof(struct seq_oss_chinfo), GFP_KERNEL); | 247 | info->ch = kcalloc(info->nr_voices, sizeof(struct seq_oss_chinfo), GFP_KERNEL); |
248 | if (!info->ch) | 248 | if (!info->ch) { |
249 | BUG(); | 249 | snd_printk(KERN_ERR "Cannot malloc\n"); |
250 | rec->oper.close(&info->arg); | ||
251 | module_put(rec->oper.owner); | ||
252 | snd_use_lock_free(&rec->use_lock); | ||
253 | continue; | ||
254 | } | ||
250 | reset_channels(info); | 255 | reset_channels(info); |
251 | } | 256 | } |
252 | debug_printk(("synth %d assigned\n", i)); | 257 | debug_printk(("synth %d assigned\n", i)); |