]> git.baikalelectronics.ru Git - kernel.git/commit
nvmet-tcp: fix out-of-bounds access when receiving multiple h2cdata PDUs
authorSagi Grimberg <sagi@grimberg.me>
Wed, 3 Feb 2021 09:20:25 +0000 (01:20 -0800)
committerChristoph Hellwig <hch@lst.de>
Wed, 3 Feb 2021 15:57:36 +0000 (16:57 +0100)
commitc0cb403d63b36a961df0c6971b8e4c1e4e82f0de
tree81c4f3e276b7dcec9bdfde8d9a5b5ec5d23186c8
parent6289581862e77683aed452581e5eb598d2c4a87b
nvmet-tcp: fix out-of-bounds access when receiving multiple h2cdata PDUs

When the host sends multiple h2cdata PDUs, we keep track on
the receive progress and calculate the scatterlist index and
offsets.

The issue is that sg_offset should only be kept for the first
iov entry we map in the iovec as this is the difference between
our cursor and the sg entry offset itself.

In addition, the sg index was calculated wrong because we should
not round up when dividing the command byte offset with PAG_SIZE.

Fixes: 82a5e0cb5a13 ("nvmet-tcp: add NVMe over TCP target driver")
Reported-by: Narayan Ayalasomayajula <Narayan.Ayalasomayajula@wdc.com>
Tested-by: Narayan Ayalasomayajula <Narayan.Ayalasomayajula@wdc.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/tcp.c