[PATCH net 4/7] net/handshake: Take a long-lived file reference at submit
Hannes Reinecke
hare at suse.de
Tue May 19 00:55:48 PDT 2026
On 5/18/26 20:24, Chuck Lever wrote:
> From: Chuck Lever <chuck.lever at oracle.com>
>
> 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 <chuck.lever at oracle.com>
> ---
> 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 <hare at kernel.org>
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare at suse.de +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
More information about the Linux-nvme
mailing list