From: Jan H. Schönherr Date: Sun, 27 Aug 2017 13:56:37 +0000 (+0200) Subject: nvme: fix uninitialized prp2 value on small transfers X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=5228b3280b9bb8fa6aef59f891cca64a028e9b36;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git nvme: fix uninitialized prp2 value on small transfers The value of iod->first_dma ends up as prp2 in NVMe commands. In case there is not enough data to cross a page boundary, iod->first_dma is never initialized and contains random data. Comply with the NVMe specification and fill in 0 in that case. Signed-off-by: Jan H. Schönherr Signed-off-by: Christoph Hellwig --- diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index e6283745ecd2..544805a2421b 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -555,8 +555,10 @@ static blk_status_t nvme_setup_prps(struct nvme_dev *dev, struct request *req) int nprps, i; length -= (page_size - offset); - if (length <= 0) + if (length <= 0) { + iod->first_dma = 0; return BLK_STS_OK; + } dma_len -= (page_size - offset); if (dma_len) {