On Tue, 29 Dec 2015 12:37:06 +0100, Takashi Sakamoto wrote:
On 2015年12月29日 19:56, Takashi Sakamoto wrote:
On 2015年12月29日 18:00, Takashi Iwai wrote:
On Sat, 26 Dec 2015 04:35:24 +0100, Takashi Sakamoto wrote:
When work of sound card registration fails, bus reset on IEEE 1394 can schedule the work again. In this case, currently instances of PCM and RawMIDI devices are not released, but allocated and errors occurs.
This commit solves this issue. The allocated data is kept and released at any failures in the work.
Aren't they be released in snd_card_free() in the later error path?
Not in the error path, but indeed in card free processing. They're not released anymore. I should have used snd_pcm_free() and snd_rawmidi_free() for this purpose. (I misunderstand they should be used after calling snd_card_register().)
I realized that both of snd_rawmidi_free() and snd_pcm_free() are called by snd_device_free(), then all of allocated memory blocks are freed.
Which error pathes do you think to cause the problems?
I don't think it causing problems but just superfluous to call explicitly there. You (should) call snd_card_free*() in the error path, and these components are released there automatically.
In which code path did you see the leak? This already sounds strange.
Takashi