Re: [PATCH net-next v11 1/6] tls: Avoid evaluating freed skb in tls_sw_read_sock() loop
Hannes Reinecke <[email protected]> Wed, 27 May 2026 11:46:21 +0200
| Newsgroups | dev.linux.lists.kernel-tls-handshake,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 5/26/26 16:21, 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: Hannes Reinecke <[email protected]> Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect [email protected] +49 911 74053 688 SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich