Messages in this thread | | | Date | Fri, 14 Aug 2009 10:00:58 +0800 | From | Danny Feng <> | Subject | Re: [PATCH] selinux: fix memory leak in sel_make_bools |
| |
On 08/14/2009 02:55 AM, Paul Moore wrote: > On Thursday 13 August 2009 04:26:16 am Xiaotian Feng wrote: >> In sel_make_bools, kernel allocates memory for bool_pending_names[i] >> with security_get_bools. So if we just free bool_pending_names, those >> memories for bool_pending_names[i] will be leaked. >> >> This patch resolves dozens of following kmemleak report after resuming >> from suspend: >> unreferenced object 0xffff88022e4c7380 (size 32): >> comm "init", pid 1, jiffies 4294677173 >> backtrace: >> [<ffffffff810f76b5>] create_object+0x1a2/0x2a9 >> [<ffffffff810f78bb>] kmemleak_alloc+0x26/0x4b >> [<ffffffff810ef3eb>] __kmalloc+0x18f/0x1b8 >> [<ffffffff811cd511>] security_get_bools+0xd7/0x16f >> [<ffffffff811c48c0>] sel_write_load+0x12e/0x62b >> [<ffffffff810f9a39>] vfs_write+0xae/0x10b >> [<ffffffff810f9b56>] sys_write+0x4a/0x6e >> [<ffffffff81011b82>] system_call_fastpath+0x16/0x1b >> [<ffffffffffffffff>] 0xffffffffffffffff >> >> Signed-off-by: Xiaotian Feng<dfeng@redhat.com> >> --- >> security/selinux/selinuxfs.c | 6 +++++- >> 1 files changed, 5 insertions(+), 1 deletions(-) >> >> diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c >> index b4fc506..ab93472 100644 >> --- a/security/selinux/selinuxfs.c >> +++ b/security/selinux/selinuxfs.c >> @@ -979,7 +979,11 @@ static int sel_make_bools(void) >> u32 sid; >> >> /* remove any existing files */ >> - kfree(bool_pending_names); >> + if (bool_pending_names) { >> + for (i = 0; i< bool_num; i++) >> + kfree(bool_pending_names[i]); >> + kfree(bool_pending_names); >> + } >> kfree(bool_pending_values); >> bool_pending_names = NULL; >> bool_pending_values = NULL; > > Since the code seems to rely on 'bool_num' in other places to ensure we don't > walk off the end of the array it is probably safe to omit the 'if > (bool_pending_names) ...' conditional and just rely on the for loop to do the > right thing. Thanks for point out, I'll resend V2 patch :-)
| |