Amaury Denoyelle
95f624540b
BUG/MEDIUM: quic: prevent crash on accept queue full
...
Handshake for quic_conn instances runs on a single non-chosen thread. On
completion, listener_accept() is performed to select the less loaded
thread before initializing connection instance. As such, quic_conn
instance is migrated to the thread with its upper connection.
In case accept queue is full, listener_accept() fallback to local accept
mode, which cause the connection to be assigned to the current thread.
However, this is not supported by QUIC as quic_conn instance is left on
the previously selected thread. In most cases, this will cause a
BUG_ON() due to a task manipulation from an outside thread.
To fix this, handle quic_conn thread rebind in multiple steps using the
new extended protocol API. Several operations have been moved from
qc_set_tid_affinity1() to newly defined qc_set_tid_affinity2(), in
particular CID TID update. This ensures that quic_conn instance is not
prematurely accessed on the new thread until accept queue push is
guaranteed to succeed.
qc_reset_tid_affinity() is also newly defined to reassign the newly
created tasks and tasklets to the current thread. This is necessary to
prevent the BUG_ON() crash described above.
This must be backported up to 2.8 after a period of observation. Note
that it depends on previous patch :
MINOR: proto: extend connection thread rebind API
2024-07-04 17:28:56 +02:00
..
2024-05-06 18:42:54 +02:00
2024-05-28 19:25:08 +02:00
2024-06-05 07:28:10 +02:00
2024-05-24 14:47:21 +02:00
2024-05-10 17:18:13 +02:00
2024-06-26 11:06:31 +02:00
2024-06-17 19:37:29 +02:00
2024-05-16 10:58:20 +02:00
2024-06-14 11:36:52 +02:00
2024-04-30 21:40:17 +02:00
2024-06-17 19:37:29 +02:00
2024-05-10 17:18:13 +02:00
2024-06-13 15:43:09 +02:00
2024-05-06 08:25:17 +02:00
2024-05-10 17:18:13 +02:00
2024-05-24 14:47:21 +02:00
2024-04-02 07:27:33 +02:00
2024-06-26 07:43:00 +02:00
2024-03-25 17:34:19 +00:00
2024-03-25 17:34:19 +00:00
2024-05-10 17:18:13 +02:00
2024-05-21 17:55:20 +02:00
2024-05-24 12:07:18 +02:00
2024-05-17 15:57:18 +02:00
2024-05-24 12:07:18 +02:00
2024-05-24 12:07:18 +02:00
2024-04-02 07:27:33 +02:00
2023-11-23 16:53:57 +01:00
2024-06-13 15:43:09 +02:00
2024-05-27 19:14:14 +02:00
2023-11-18 11:16:21 +01:00
2024-04-03 17:34:36 +02:00
2024-05-10 17:18:13 +02:00
2024-06-13 15:43:09 +02:00
2023-11-08 16:38:06 +01:00
2024-06-13 15:43:09 +02:00
2024-04-26 11:29:25 +02:00
2024-06-04 14:23:40 +02:00
2024-05-15 21:20:37 +02:00
2024-05-16 10:31:17 +02:00
2024-06-28 14:36:30 +02:00
2024-07-04 07:52:42 +02:00
2024-04-26 10:20:57 +02:00
2024-07-02 10:05:40 +02:00
2024-05-10 17:18:13 +02:00
2024-04-04 19:10:01 +02:00
2024-06-13 15:43:09 +02:00
2024-05-24 14:36:31 +02:00
2024-06-20 16:38:48 +02:00
2024-03-25 16:24:15 +01:00
2024-04-04 19:10:01 +02:00
2024-05-24 16:17:24 +02:00
2024-04-04 19:10:01 +02:00
2024-01-11 15:10:08 +01:00
2023-11-23 16:23:14 +01:00
2024-04-02 07:00:10 +02:00
2024-03-29 17:08:37 +01:00
2024-06-26 07:38:21 +02:00
2024-07-04 16:33:21 +02:00
2024-06-14 18:25:21 +02:00
2024-04-13 08:43:12 +02:00
2024-06-17 19:37:29 +02:00
2024-03-28 17:28:20 +01:00
2024-05-15 19:37:12 +02:00
2024-06-12 16:12:47 +02:00
2024-05-15 19:37:12 +02:00
2024-05-06 22:00:00 +02:00
2024-06-24 14:40:38 +02:00
2024-06-27 16:08:42 +02:00
2024-01-11 11:13:54 +01:00
2024-05-03 09:01:36 +02:00
2024-04-12 18:01:55 +02:00
2024-07-04 17:28:56 +02:00
2024-07-04 16:33:21 +02:00
2024-05-22 12:00:11 +02:00
2024-01-02 11:44:42 +01:00
2024-05-22 12:00:11 +02:00
2024-04-12 18:51:40 +02:00
2024-06-17 19:37:29 +02:00
2023-12-21 15:42:08 +01:00
2024-01-31 16:28:54 +01:00
2024-05-16 10:31:17 +02:00
2024-01-29 15:40:19 +01:00
2024-05-02 10:55:25 +02:00
2024-02-05 14:31:21 +01:00
2024-04-03 11:14:50 +02:00
2024-04-02 18:47:19 +02:00
2023-11-28 15:37:50 +01:00
2024-07-03 15:02:40 +02:00
2024-03-28 17:28:20 +01:00
2024-07-04 17:28:56 +02:00
2024-01-31 16:28:54 +01:00
2024-02-15 17:04:17 +01:00
2024-02-14 11:32:29 +01:00
2024-01-16 10:17:27 +01:00
2023-11-28 15:47:18 +01:00
2024-04-06 00:07:49 +02:00
2024-07-03 15:02:40 +02:00
2024-05-24 14:36:31 +02:00
2024-06-13 19:36:40 +02:00
2024-04-26 10:20:57 +02:00
2024-01-31 16:28:54 +01:00
2024-04-10 11:06:41 +02:00
2024-04-06 00:07:49 +02:00
2023-11-23 16:23:14 +01:00
2024-07-01 09:29:09 +02:00
2024-06-12 08:55:52 +02:00
2024-04-17 11:14:44 +02:00
2024-07-03 12:35:50 +02:00
2024-05-02 10:55:25 +02:00
2024-07-03 09:20:24 +02:00
2024-06-13 15:43:09 +02:00
2024-05-21 17:55:03 +02:00
2023-11-23 16:23:14 +01:00
2024-05-21 17:55:09 +02:00
2024-04-30 21:38:24 +02:00
2024-05-24 14:36:31 +02:00
2024-05-21 18:30:45 +02:00
2024-06-17 17:40:49 +02:00
2024-05-21 18:30:45 +02:00
2024-03-12 17:37:11 +01:00
2024-05-17 17:35:51 +02:00
2024-04-19 14:48:44 +02:00
2024-06-14 10:41:36 +02:00
2024-05-17 14:53:19 +02:00
2024-05-17 16:33:53 +02:00
2024-04-26 10:20:57 +02:00
2024-05-02 16:43:26 +02:00
2024-05-03 09:01:36 +02:00
2024-05-10 17:18:13 +02:00
2024-06-26 15:05:06 +02:00
2024-06-13 15:43:09 +02:00
2024-04-03 15:53:18 +02:00
2023-11-23 16:23:14 +01:00
2024-05-24 14:36:31 +02:00
2023-11-18 11:16:21 +01:00
2024-05-31 18:37:56 +02:00
2024-05-24 09:46:49 +02:00
2024-05-31 18:55:36 +02:00
2024-05-24 14:36:03 +02:00
2024-04-22 16:25:18 +02:00
2024-04-04 19:10:01 +02:00
2024-03-06 10:39:57 +01:00