linux/drivers/nvme/host
zhenwei pi 25c1ca6eca nvme-rdma: handle unexpected nvme completion data length
Receiving a zero length message leads to the following warnings because
the CQE is processed twice:

refcount_t: underflow; use-after-free.
WARNING: CPU: 0 PID: 0 at lib/refcount.c:28

RIP: 0010:refcount_warn_saturate+0xd9/0xe0
Call Trace:
 <IRQ>
 nvme_rdma_recv_done+0xf3/0x280 [nvme_rdma]
 __ib_process_cq+0x76/0x150 [ib_core]
 ...

Sanity check the received data length, to avoids this.

Thanks to Chao Leng & Sagi for suggestions.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2020-10-27 10:00:05 +01:00
..
core.c nvme: ignore zone validate errors on subsequent scans 2020-10-27 09:58:42 +01:00
fabrics.c nvme-fabrics: allow to queue requests for live queues 2020-09-09 08:00:50 +02:00
fabrics.h nvme: fix deadlock in disconnect during scan_work and/or ana_work 2020-07-29 07:45:19 +02:00
fault_inject.c nvme: enable to inject errors into admin commands 2019-06-21 11:15:50 +02:00
fc.c nvme-fc: shorten reconnect delay if possible for FC 2020-10-23 12:54:45 +02:00
fc.h nvme-fc: Update header and host for common definitions for LS handling 2020-05-09 16:18:33 -06:00
hwmon.c nvme: return errors for hwmon init 2020-09-22 17:49:55 +02:00
Kconfig nvme-tcp: fix kconfig dependency warning when !CRYPTO 2020-09-15 07:58:49 +02:00
lightnvm.c nvme: support for multiple Command Sets Supported and Effects log pages 2020-07-08 16:16:20 +02:00
Makefile nvme: support for zoned namespaces 2020-07-08 16:16:20 +02:00
multipath.c bdi: replace BDI_CAP_STABLE_WRITES with a queue and a sb flag 2020-09-24 13:43:39 -06:00
nvme.h nvme: use queuedata for nvme_req_qid 2020-10-22 15:27:14 +02:00
pci.c nvme-pci: disable Write Zeroes on Sandisk Skyhawk 2020-10-22 15:27:14 +02:00
rdma.c nvme-rdma: handle unexpected nvme completion data length 2020-10-27 10:00:05 +01:00
tcp.c nvme-tcp: check page by sendpage_ok() before calling kernel_sendpage() 2020-10-02 15:27:08 -07:00
trace.c nvme: trace: parse Get LBA Status command in detail 2019-08-29 12:55:01 -07:00
trace.h nvme-trace: print result and status in hex format 2019-06-21 11:12:37 +02:00
zns.c nvme: remove the disk argument to nvme_update_zone_info 2020-10-07 07:56:17 +02:00