Files
kernel_amazon_mt8127-common/include/linux
Herton R. Krzesinski 8355335f9b pty: make sure super_block is still valid in final /dev/tty close
commit 1f55c718c290616889c04946864a13ef30f64929 upstream.

Considering current pty code and multiple devpts instances, it's possible
to umount a devpts file system while a program still has /dev/tty opened
pointing to a previosuly closed pty pair in that instance. In the case all
ptmx and pts/N files are closed, umount can be done. If the program closes
/dev/tty after umount is done, devpts_kill_index will use now an invalid
super_block, which was already destroyed in the umount operation after
running ->kill_sb. This is another "use after free" type of issue, but now
related to the allocated super_block instance.

To avoid the problem (warning at ida_remove and potential crashes) for
this specific case, I added two functions in devpts which grabs additional
references to the super_block, which pty code now uses so it makes sure
the super block structure is still valid until pty shutdown is done.
I also moved the additional inode references to the same functions, which
also covered similar case with inode being freed before /dev/tty final
close/shutdown.

Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-02-25 11:57:46 -08:00
..
2013-05-17 14:31:05 -04:00
2015-04-29 10:33:54 +02:00
2013-12-04 10:56:22 -08:00
2013-05-07 19:46:02 -07:00
2013-12-08 07:29:27 -08:00
2014-10-30 09:35:12 -07:00
2014-11-14 08:47:55 -08:00
2013-05-01 16:36:22 +05:30
2013-07-28 16:30:11 -07:00
2013-05-07 18:38:27 -07:00
2013-04-29 18:28:40 -07:00
2015-07-03 19:48:08 -07:00
2013-10-13 16:08:28 -07:00
2014-04-03 12:01:05 -07:00
2014-06-26 15:12:38 -04:00
2013-07-28 16:30:05 -07:00
2013-04-30 17:04:06 -07:00
2015-08-03 09:29:45 -07:00
2013-04-30 17:04:00 -07:00
2013-10-13 16:08:35 -07:00
2015-04-29 10:34:00 +02:00
2013-07-21 18:21:29 -07:00
2014-01-15 15:28:47 -08:00
2013-05-04 14:47:26 -04:00
2013-04-29 15:54:28 -07:00
2014-02-13 13:47:59 -08:00
2013-04-29 15:54:28 -07:00
2013-04-12 10:26:23 +02:00
2013-04-30 15:50:12 +05:30
2013-07-28 16:29:55 -07:00