John Fastabend
597222f72a
bpf: avoid misuse of psock when TCP_ULP_BPF collides with another ULP
...
Currently we check sk_user_data is non NULL to determine if the sk
exists in a map. However, this is not sufficient to ensure the psock
or the ULP ops are not in use by another user, such as kcm or TLS. To
avoid this when adding a sock to a map also verify it is of the
correct ULP type. Additionally, when releasing a psock verify that
it is the TCP_ULP_BPF type before releasing the ULP. The error case
where we abort an update due to ULP collision can cause this error
path.
For example,
__sock_map_ctx_update_elem()
[...]
err = tcp_set_ulp_id(sock, TCP_ULP_BPF) <- collides with TLS
if (err) <- so err out here
goto out_free
[...]
out_free:
smap_release_sock() <- calling tcp_cleanup_ulp releases the
TLS ULP incorrectly.
Fixes: 2f857d0460 ("bpf: sockmap, remove STRPARSER map_flags and add multi-map support")
Signed-off-by: John Fastabend <john.fastabend@gmail.com >
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net >
2018-09-02 22:31:10 +02:00
..
2018-09-02 22:31:10 +02:00
2018-08-24 13:19:27 -07:00
2018-06-15 07:15:28 +09:00
2018-06-12 16:19:22 -07:00
2018-08-17 16:20:32 -07:00
2018-08-23 18:48:43 -07:00
2018-06-08 18:56:02 +09:00
2018-08-13 10:47:26 -07:00
2018-08-20 18:33:50 +02:00
2018-08-20 18:32:00 -07:00
2018-08-15 00:07:08 +02:00
2018-08-23 15:44:58 -07:00
2018-08-13 11:25:07 -07:00
2018-08-22 12:34:08 -07:00
2018-08-21 13:47:29 -07:00
2018-08-23 13:07:00 -07:00
2018-01-04 16:45:09 -08:00
2018-02-06 18:32:44 -08:00
2018-05-18 14:58:22 +02:00
2018-08-17 09:41:28 -07:00
2018-07-18 11:43:36 -04:00
2018-07-17 14:45:08 -04:00
2018-02-23 11:22:22 -05:00
2018-06-19 10:39:54 -04:00
2018-08-15 10:46:54 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-06-24 14:39:47 +02:00
2018-08-14 15:00:00 -07:00
2018-08-22 10:52:47 -07:00
2018-04-27 14:34:51 +02:00
2018-05-16 07:23:35 +02:00
2017-11-02 11:10:55 +01:00
2018-05-16 07:23:35 +02:00
2018-07-21 12:57:35 -05:00
2018-02-21 16:54:06 +01:00
2018-06-21 12:33:19 +02:00
2018-08-22 12:34:08 -07:00
2018-08-06 12:35:20 +02:00
2017-11-02 11:10:55 +01:00
2018-08-20 18:23:00 +02:00
2017-12-14 16:00:49 -08:00
2018-08-22 10:52:47 -07:00
2018-05-15 23:08:33 -07:00
2018-01-08 19:43:15 +01:00
2018-03-20 08:57:17 +01:00
2018-08-14 19:12:29 -03:00
2017-11-02 11:10:55 +01:00
2018-08-02 08:06:54 +09:00
2018-06-15 07:55:24 +09:00
2018-06-15 07:55:24 +09:00
2018-06-12 16:19:22 -07:00
2017-11-02 11:10:55 +01:00
2018-07-16 12:31:57 -07:00
2017-09-08 18:26:51 -07:00
2018-06-21 17:33:42 +02:00
2018-08-13 11:25:07 -07:00
2018-07-18 01:18:05 +09:00
2018-08-25 18:43:59 -07:00
2018-07-02 11:36:17 +02:00
2018-07-02 11:36:17 +02:00
2018-08-22 10:52:47 -07:00
2018-01-05 18:43:00 +11:00
2018-06-14 12:21:18 +09:00
2018-04-11 10:28:37 -07:00
2018-04-03 19:15:32 -07:00
2018-07-21 10:43:12 -05:00
2018-02-06 18:32:46 -08:00
2017-11-02 11:10:55 +01:00
2018-08-06 12:35:20 +02:00
2018-06-15 07:55:24 +09:00
2018-06-08 17:21:52 -07:00
2018-07-10 22:18:52 +02:00
2018-06-06 16:34:00 -07:00
2018-08-22 12:34:08 -07:00
2018-08-07 12:25:30 +02:00
2018-07-03 09:20:44 +02:00
2017-11-02 11:10:55 +01:00
2018-08-03 15:52:10 +02:00
2018-08-13 11:25:07 -07:00
2018-06-10 10:17:09 -07:00
2018-08-24 09:25:39 -07:00
2018-04-16 11:26:49 +02:00
2018-08-23 18:48:43 -07:00
2017-12-17 13:57:15 +01:00
2018-02-06 18:32:46 -08:00
2018-06-21 12:33:05 +02:00
2018-06-25 11:30:10 -07:00
2018-08-22 10:52:47 -07:00
2018-04-05 21:36:27 -07:00
2018-04-02 20:15:59 +02:00
2018-04-02 20:15:30 +02:00
2018-06-07 16:56:28 -04:00
2017-08-29 15:14:38 +02:00
2018-08-11 02:05:53 -05:00
2018-08-22 10:52:47 -07:00
2018-08-11 02:05:53 -05:00
2018-04-11 10:28:35 -07:00
2018-08-03 12:19:08 +02:00
2018-07-15 23:51:19 +02:00
2018-05-18 08:47:13 -07:00
2018-08-24 13:16:36 -07:00