When build SND_SEQUENCER in kernel then OSS sequencer(alsa_seq_oss_init)
is initialized before System (snd_seq_system_client_init) which leads to
memory leak :
unreferenced object 0xf6b0e680 (size 256):
comm "swapper", pid 1, jiffies
4294670753
backtrace:
[<
c108ac5c>] create_object+0x135/0x204
[<
c108adfe>] kmemleak_alloc+0x26/0x4c
[<
c1087de2>] kmem_cache_alloc+0x72/0xff
[<
c126d2ac>] seq_create_client1+0x22/0x160
[<
c126e3b6>] snd_seq_create_kernel_client+0x72/0xef
[<
c1485a05>] snd_seq_oss_create_client+0x86/0x142
[<
c1485920>] alsa_seq_oss_init+0xf6/0x155
[<
c1001059>] do_one_initcall+0x4f/0x111
[<
c14655be>] kernel_init+0x115/0x166
[<
c10032af>] kernel_thread_helper+0x7/0x10
[<
ffffffff>] 0xffffffff
unreferenced object 0xf688a580 (size 64):
comm "swapper", pid 1, jiffies
4294670753
backtrace:
[<
c108ac5c>] create_object+0x135/0x204
[<
c108adfe>] kmemleak_alloc+0x26/0x4c
[<
c1087de2>] kmem_cache_alloc+0x72/0xff
[<
c126f964>] snd_seq_pool_new+0x1c/0xb8
[<
c126d311>] seq_create_client1+0x87/0x160
[<
c126e3b6>] snd_seq_create_kernel_client+0x72/0xef
[<
c1485a05>] snd_seq_oss_create_client+0x86/0x142
[<
c1485920>] alsa_seq_oss_init+0xf6/0x155
[<
c1001059>] do_one_initcall+0x4f/0x111
[<
c14655be>] kernel_init+0x115/0x166
[<
c10032af>] kernel_thread_helper+0x7/0x10
[<
ffffffff>] 0xffffffff
unreferenced object 0xf6b0e480 (size 256):
comm "swapper", pid 1, jiffies
4294670754
backtrace:
[<
c108ac5c>] create_object+0x135/0x204
[<
c108adfe>] kmemleak_alloc+0x26/0x4c
[<
c1087de2>] kmem_cache_alloc+0x72/0xff
[<
c12725a0>] snd_seq_create_port+0x51/0x21c
[<
c126de50>] snd_seq_ioctl_create_port+0x57/0x13c
[<
c126d07a>] snd_seq_do_ioctl+0x4a/0x69
[<
c126d0de>] snd_seq_kernel_client_ctl+0x33/0x49
[<
c1485a74>] snd_seq_oss_create_client+0xf5/0x142
[<
c1485920>] alsa_seq_oss_init+0xf6/0x155
[<
c1001059>] do_one_initcall+0x4f/0x111
[<
c14655be>] kernel_init+0x115/0x166
[<
c10032af>] kernel_thread_helper+0x7/0x10
[<
ffffffff>] 0xffffffff
The correct order should be :
System (snd_seq_system_client_init) should be initialized before
OSS sequencer(alsa_seq_oss_init) which is equivalent to :
1. insmod sound/core/seq/snd-seq-device.ko
2. insmod sound/core/seq/snd-seq.ko
3. insmod sound/core/seq/snd-seq-midi-event.ko
4. insmod sound/core/seq/oss/snd-seq-oss.ko
Including sound/core/seq/oss/Makefile after other seq modules
fixes the ordering and memory leak.
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>