Re: [PATCH net 4/7] net/handshake: Take a long-lived file reference at submit
Hannes Reinecke <[email protected]> Tue, 19 May 2026 09:55:48 +0200
| Newsgroups | dev.linux.lists.kernel-tls-handshake,org.infradead.lists.linux-nvme,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
On 5/18/26 20:24, Chuck Lever wrote: > From: Chuck Lever <[email protected]> > > handshake_nl_accept_doit() needs the file pointer backing > req->hr_sk->sk_socket to survive the window between > handshake_req_next() and the subsequent FD_PREPARE() and get_file(). > The submit-side sock_hold() does not provide that. sk_refcnt keeps > struct sock alive, but struct socket is owned by sock->file: when > the consumer fputs the last file reference, sock_release() tears > the socket down regardless of any sock_hold. > > Prepare for a fix by adding an hr_file pointer to struct > handshake_req and acquiring an explicit reference on sock->file > during handshake_req_submit(). Release the reference on the > completion-bit-winning path of handshake_complete() and > handshake_req_cancel(), and on the submit error paths that destroy > the request before it has been published. > > The accept-side dereferences are not yet retargeted; that change > comes in the next patch. > > Signed-off-by: Chuck Lever <[email protected]> > --- > net/handshake/handshake.h | 2 ++ > net/handshake/netlink.c | 6 ------ > net/handshake/request.c | 27 ++++++++++++++++++++++++++- > 3 files changed, 28 insertions(+), 7 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