nvme-tcp: don't access released socket during error recovery
authorAkinobu Mita <akinobu.mita@gmail.com>
Sun, 26 Feb 2023 12:42:54 +0000 (21:42 +0900)
committerChristoph Hellwig <hch@lst.de>
Tue, 28 Feb 2023 13:14:44 +0000 (06:14 -0700)
commit76d54bf20cdcc1ed7569a89885e09636e9a8d71d
tree8e3f71e12f26ceb97febce3a84fd038ff398de86
parent51d24f701f453c18cb5f4596d8bbe8034e5d3fb4
nvme-tcp: don't access released socket during error recovery

While the error recovery work is temporarily failing reconnect attempts,
running the 'nvme list' command causes a kernel NULL pointer dereference
by calling getsockname() with a released socket.

During error recovery work, the nvme tcp socket is released and a new one
created, so it is not safe to access the socket without proper check.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Fixes: 02c57a82c008 ("nvme-tcp: print actual source IP address through sysfs "address" attr")
Reviewed-by: Martin Belanger <martin.belanger@dell.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/tcp.c