RE: [PATCH] tty/vt: Fix the memory leak in visual_init

From: Zhang, Dongxing
Date: Fri Jun 12 2015 - 03:48:06 EST


Add more reviewers

> -----Original Message-----
> From: Zhang, Dongxing
> Sent: Wednesday, June 10, 2015 3:21 PM
> To: gregkh@xxxxxxxxxxxxxxxxxxx; peter@xxxxxxxxxxxxxxxxxx;
> alan@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx; Zhang, Dongxing; Wang, Xiaoming
> Subject: [PATCH] tty/vt: Fix the memory leak in visual_init
>
> If vc->vc_uni_pagedir_loc is not NULL, its refcount needs to be decreased before
> vc_uni_pagedir_loc is re-assigned.
>
> unreferenced object 0xffff88002cdd13b0 (size 512):
> comm "setfont", pid 503, jiffies 4294896503 (age 722.828s)
> hex dump (first 32 bytes):
> 40 92 61 2b 00 88 ff ff 00 00 00 00 00 00 00 00 @.a+............
> 00 00 00 00 00 00 00 00 a0 ad 61 2b 00 88 ff ff ..........a+....
> backtrace:
> [<ffffffff817b755e>] kmemleak_alloc+0x4e/0xb0
> [<ffffffff811d4898>] kmem_cache_alloc_trace+0x1c8/0x240
> [<ffffffff814ae7d3>] con_do_clear_unimap.isra.2+0x83/0xe0
> [<ffffffff814ae9b2>] con_clear_unimap+0x22/0x40
> [<ffffffff814a8db8>] vt_ioctl+0xeb8/0x1170
> [<ffffffff8149b458>] tty_ioctl+0x208/0xca0
> [<ffffffff81207858>] do_vfs_ioctl+0x2f8/0x510
> [<ffffffff81207af1>] SyS_ioctl+0x81/0xa0
> [<ffffffff817ca2b2>] system_call_fastpath+0x16/0x75
> [<ffffffffffffffff>] 0xffffffffffffffff unreferenced object 0xffff88002b619240
> (size 256):
> comm "setfont", pid 503, jiffies 4294896503 (age 722.828s)
> hex dump (first 32 bytes):
> 90 bc 84 d5 00 88 ff ff 58 85 84 d5 00 88 ff ff ........X.......
> 88 ac 84 d5 00 88 ff ff e0 b1 84 d5 00 88 ff ff ................
> backtrace:
> [<ffffffff817b755e>] kmemleak_alloc+0x4e/0xb0
> [<ffffffff811d4898>] kmem_cache_alloc_trace+0x1c8/0x240
> [<ffffffff814ae286>] con_insert_unipair+0x86/0x170
> [<ffffffff814af107>] con_set_unimap+0x1b7/0x280
> [<ffffffff814a8d65>] vt_ioctl+0xe65/0x1170
> [<ffffffff8149b458>] tty_ioctl+0x208/0xca0
> [<ffffffff81207858>] do_vfs_ioctl+0x2f8/0x510
> [<ffffffff81207af1>] SyS_ioctl+0x81/0xa0
> [<ffffffff817ca2b2>] system_call_fastpath+0x16/0x75
> [<ffffffffffffffff>] 0xffffffffffffffff
>
> Signed-off-by: Dongxing Zhang <dongxing.zhang@xxxxxxxxx>
> Signed-off-by: Xiaoming Wang <xiaoming.wang@xxxxxxxxx>
> ---
> drivers/tty/vt/vt.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 4a24eb2..334c502
> 100644
> --- a/drivers/tty/vt/vt.c
> +++ b/drivers/tty/vt/vt.c
> @@ -738,6 +738,8 @@ static void visual_init(struct vc_data *vc, int num, int init)
> __module_get(vc->vc_sw->owner);
> vc->vc_num = num;
> vc->vc_display_fg = &master_display_fg;
> + if (vc->vc_uni_pagedir_loc)
> + con_free_unimap(vc);
> vc->vc_uni_pagedir_loc = &vc->vc_uni_pagedir;
> vc->vc_uni_pagedir = NULL;
> vc->vc_hi_font_mask = 0;
> --
> 1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/