File tree Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -294,8 +294,21 @@ int snd_timer_open(struct snd_timer_instance **ti,
294294 get_device (& timer -> card -> card_dev );
295295 timeri -> slave_class = tid -> dev_sclass ;
296296 timeri -> slave_id = slave_id ;
297- if (list_empty (& timer -> open_list_head ) && timer -> hw .open )
298- timer -> hw .open (timer );
297+
298+ if (list_empty (& timer -> open_list_head ) && timer -> hw .open ) {
299+ int err = timer -> hw .open (timer );
300+ if (err ) {
301+ kfree (timeri -> owner );
302+ kfree (timeri );
303+
304+ if (timer -> card )
305+ put_device (& timer -> card -> card_dev );
306+ module_put (timer -> module );
307+ mutex_unlock (& register_mutex );
308+ return err ;
309+ }
310+ }
311+
299312 list_add_tail (& timeri -> open_list , & timer -> open_list_head );
300313 snd_timer_check_master (timeri );
301314 mutex_unlock (& register_mutex );
You can’t perform that action at this time.
0 commit comments