]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
tty: fix memory leak in vc_deallocate
authorPavel Skripkin <paskripkin@gmail.com>
Sat, 27 Mar 2021 21:44:43 +0000 (00:44 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 May 2021 06:37:39 +0000 (08:37 +0200)
commit 211b4d42b70f1c1660feaa968dac0efc2a96ac4d upstream.

syzbot reported memory leak in tty/vt.
The problem was in VT_DISALLOCATE ioctl cmd.
After allocating unimap with PIO_UNIMAP it wasn't
freed via VT_DISALLOCATE, but vc_cons[currcons].d was
zeroed.

Reported-by: syzbot+bcc922b19ccc64240b42@syzkaller.appspotmail.com
Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210327214443.21548-1-paskripkin@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/vt.c

index d04a162939a4d527306bf7b1312306f1900184ef..8f88ee2a2c8d0eef2204ba2b2cbdd405e3bcb40a 100644 (file)
@@ -1382,6 +1382,7 @@ struct vc_data *vc_deallocate(unsigned int currcons)
                atomic_notifier_call_chain(&vt_notifier_list, VT_DEALLOCATE, &param);
                vcs_remove_sysfs(currcons);
                visual_deinit(vc);
+               con_free_unimap(vc);
                put_pid(vc->vt_pid);
                vc_uniscr_set(vc, NULL);
                kfree(vc->vc_screenbuf);