Neal Cardwell 1c95df85ca inet_diag: fix oops for IPv4 AF_INET6 TCP SYN-RECV state
Fix inet_diag to be aware of the fact that AF_INET6 TCP connections
instantiated for IPv4 traffic and in the SYN-RECV state were actually
created with inet_reqsk_alloc(), instead of inet6_reqsk_alloc(). This
means that for such connections inet6_rsk(req) returns a pointer to a
random spot in memory up to roughly 64KB beyond the end of the
request_sock.

With this bug, for a server using AF_INET6 TCP sockets and serving
IPv4 traffic, an inet_diag user like `ss state SYN-RECV` would lead to
inet_diag_fill_req() causing an oops or the export to user space of 16
bytes of kernel memory as a garbage IPv6 address, depending on where
the garbage inet6_rsk(req) pointed.

Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-12-09 18:59:37 -05:00
..
2012-10-08 17:42:35 -04:00
2012-10-01 18:39:44 -04:00
2012-04-15 12:37:19 -04:00
2011-10-19 03:10:46 -04:00
2012-10-08 17:42:36 -04:00
2012-10-01 17:35:31 -04:00
2012-07-30 14:53:21 -07:00
2012-10-08 17:42:36 -04:00
2012-09-25 13:22:30 -04:00
2012-11-26 17:36:59 -05:00
2012-07-31 18:42:43 -07:00
2012-11-22 16:06:49 -05:00
2012-01-20 14:17:26 -05:00
2012-01-20 14:17:26 -05:00
2012-05-17 14:59:59 -04:00
2012-10-22 15:16:06 -04:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2012-12-01 20:39:16 -05:00
2012-03-11 23:42:51 -07:00
2012-04-15 12:37:19 -04:00