Re: [PATCH net-next v11 1/6] tls: Avoid evaluating freed skb in tls_sw_read_sock() loop
Sabrina Dubroca <[email protected]> Wed, 27 May 2026 19:17:47 +0200
| Newsgroups | dev.linux.lists.kernel-tls-handshake,org.kernel.vger.netdev |
|---|---|
| Message-ID | <ahcnO2S7QfhTBNhK@krikkit> |
2026-05-26, 10:21:31 -0400, Chuck Lever wrote: > From: Chuck Lever <[email protected]> > > tls_sw_read_sock() ends its receive loop with while (skb), but > the else branch in the body calls consume_skb(skb) before the > predicate is re-evaluated. A pointer becomes indeterminate when > the object it points to reaches end-of-lifetime (C2011 6.2.4p2), > and using an indeterminate value is undefined behavior (Annex > J.2). The pointer is not dereferenced today -- the predicate > either exits the loop or skb is overwritten at the top of the > next iteration -- but any future change that adds a dereference > between consume_skb() and the predicate would silently introduce > a use-after-free. > > Replace the do/while form with an explicit for(;;) loop so > termination happens through a break statement rather than > predicate evaluation of a freed pointer. > > Cc: Sagi Grimberg <[email protected]> > Signed-off-by: Chuck Lever <[email protected]> > --- > net/tls/tls_sw.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) Reviewed-by: Sabrina Dubroca <[email protected]> -- Sabrina