Jaswinder Singh Rajput
f96e080821
ALSA: OSS sequencer should be initialized after snd_seq_system_client_init
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>
|
2009-07-19 19:10:01 +02:00 |
| .. |
|
oss
|
ALSA: Add missing KERN_* prefix to printk in sound/core
|
2009-02-05 16:00:49 +01:00 |
|
Kconfig
|
ALSA: clean up the logic for building sequencer modules
|
2009-05-29 11:49:42 +02:00 |
|
Makefile
|
ALSA: OSS sequencer should be initialized after snd_seq_system_client_init
|
2009-07-19 19:10:01 +02:00 |
|
seq.c
|
ALSA: Add hrtimer backend for ALSA timer interface
|
2008-10-24 18:16:50 +02:00 |
|
seq_clientmgr.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_clientmgr.h
|
[ALSA] sound/core/seq: move declarations of globally visible variables to proper headers
|
2008-01-31 17:29:35 +01:00 |
|
seq_compat.c
|
ALSA: sound/core: use memdup_user()
|
2009-04-14 12:39:12 +02:00 |
|
seq_device.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_dummy.c
|
[ALSA] Remove sound/driver.h
|
2008-01-31 17:29:48 +01:00 |
|
seq_fifo.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_fifo.h
|
[ALSA] Remove xxx_t typedefs: Sequencer
|
2006-01-03 12:17:52 +01:00 |
|
seq_info.c
|
[ALSA] Remove sound/driver.h
|
2008-01-31 17:29:48 +01:00 |
|
seq_info.h
|
[ALSA] Optimize for config without PROC_FS (seq and oss parts)
|
2006-01-03 12:30:05 +01:00 |
|
seq_lock.c
|
[ALSA] Remove sound/driver.h
|
2008-01-31 17:29:48 +01:00 |
|
seq_lock.h
|
Linux-2.6.12-rc2
|
2005-04-16 15:20:36 -07:00 |
|
seq_memory.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_memory.h
|
spelling fixes
|
2006-06-26 18:35:02 +02:00 |
|
seq_midi.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_midi_emul.c
|
[ALSA] Remove sound/driver.h
|
2008-01-31 17:29:48 +01:00 |
|
seq_midi_event.c
|
sound: seq_midi_event: fix decoding of (N)RPN events
|
2009-06-22 11:11:49 +02:00 |
|
seq_ports.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_ports.h
|
[ALSA] Remove xxx_t typedefs: Sequencer
|
2006-01-03 12:17:52 +01:00 |
|
seq_prioq.c
|
ALSA: Add missing KERN_* prefix to printk in sound/core
|
2009-02-05 16:00:49 +01:00 |
|
seq_prioq.h
|
[ALSA] Remove xxx_t typedefs: Sequencer
|
2006-01-03 12:17:52 +01:00 |
|
seq_queue.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_queue.h
|
[ALSA] semaphore -> mutex (core part)
|
2006-03-22 10:24:50 +01:00 |
|
seq_system.c
|
[ALSA] Remove sound/driver.h
|
2008-01-31 17:29:48 +01:00 |
|
seq_system.h
|
[ALSA] Remove xxx_t typedefs: Sequencer
|
2006-01-03 12:17:52 +01:00 |
|
seq_timer.c
|
ALSA: Kill snd_assert() in sound/core/*
|
2008-08-13 11:46:35 +02:00 |
|
seq_timer.h
|
[ALSA] sound/core/seq: move declarations of globally visible variables to proper headers
|
2008-01-31 17:29:35 +01:00 |
|
seq_virmidi.c
|
[ALSA] Remove sound/driver.h
|
2008-01-31 17:29:48 +01:00 |