All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Vincent Whitchurch <vincent.whitchurch@axis.com>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>,
	linux-spi@vger.kernel.org
Subject: [PATCH AUTOSEL 5.8 11/29] spi: spi-loopback-test: Fix out-of-bounds read
Date: Mon, 14 Sep 2020 09:03:40 -0400	[thread overview]
Message-ID: <20200914130358.1804194-11-sashal@kernel.org> (raw)
In-Reply-To: <20200914130358.1804194-1-sashal@kernel.org>

From: Vincent Whitchurch <vincent.whitchurch@axis.com>

[ Upstream commit 837ba18dfcd4db21ad58107c65bfe89753aa56d7 ]

The "tx/rx-transfer - crossing PAGE_SIZE" test always fails when
len=131071 and rx_offset >= 5:

 spi-loopback-test spi0.0: Running test tx/rx-transfer - crossing PAGE_SIZE
 ...
   with iteration values: len = 131071, tx_off = 0, rx_off = 3
   with iteration values: len = 131071, tx_off = 0, rx_off = 4
   with iteration values: len = 131071, tx_off = 0, rx_off = 5
 loopback strangeness - rx changed outside of allowed range at: ...a4321000
   spi_msg@ffffffd5a4157690
     frame_length:  131071
     actual_length: 131071
     spi_transfer@ffffffd5a41576f8
       len:    131071
       tx_buf: ffffffd5a4340ffc

Note that rx_offset > 3 can only occur if the SPI controller driver sets
->dma_alignment to a higher value than 4, so most SPI controller drivers
are not affect.

The allocated Rx buffer is of size SPI_TEST_MAX_SIZE_PLUS, which is 132
KiB (assuming 4 KiB pages).  This test uses an initial offset into the
rx_buf of PAGE_SIZE - 4, and a len of 131071, so the range expected to
be written in this transfer ends at (4096 - 4) + 5 + 131071 == 132 KiB,
which is also the end of the allocated buffer.  But the code which
verifies the content of the buffer reads a byte beyond the allocated
buffer and spuriously fails because this out-of-bounds read doesn't
return the expected value.

Fix this by using ITERATE_LEN instead of ITERATE_MAX_LEN to avoid
testing sizes which cause out-of-bounds reads.

Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
Link: https://lore.kernel.org/r/20200902132341.7079-1-vincent.whitchurch@axis.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/spi/spi-loopback-test.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-loopback-test.c b/drivers/spi/spi-loopback-test.c
index b6d79cd156fb5..da1153ec9f0e3 100644
--- a/drivers/spi/spi-loopback-test.c
+++ b/drivers/spi/spi-loopback-test.c
@@ -90,7 +90,7 @@ static struct spi_test spi_tests[] = {
 	{
 		.description	= "tx/rx-transfer - crossing PAGE_SIZE",
 		.fill_option	= FILL_COUNT_8,
-		.iterate_len    = { ITERATE_MAX_LEN },
+		.iterate_len    = { ITERATE_LEN },
 		.iterate_tx_align = ITERATE_ALIGN,
 		.iterate_rx_align = ITERATE_ALIGN,
 		.transfer_count = 1,
-- 
2.25.1


  parent reply	other threads:[~2020-09-14 17:13 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14 13:03 [PATCH AUTOSEL 5.8 01/29] xprtrdma: Release in-flight MRs on disconnect Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 02/29] NFSv4.1 handle ERR_DELAY error reclaiming locking state on delegation recall Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 03/29] phy: omap-usb2-phy: disable PHY charger detect Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 04/29] habanalabs: prevent user buff overflow Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 05/29] habanalabs: fix report of RAZWI initiator coordinates Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 06/29] scsi: pm8001: Fix memleak in pm8001_exec_internal_task_abort Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 07/29] scsi: libfc: Fix for double free() Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 08/29] scsi: lpfc: Fix FLOGI/PLOGI receive race condition in pt2pt discovery Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 09/29] scsi: lpfc: Extend the RDF FPIN Registration descriptor for additional events Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 10/29] regulator: pwm: Fix machine constraints application Sasha Levin
2020-09-14 13:03 ` Sasha Levin [this message]
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 12/29] interconnect: Show bandwidth for disabled paths as zero in debugfs Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 13/29] NFS: Zero-stateid SETATTR should first return delegation Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 14/29] SUNRPC: stop printk reading past end of string Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 15/29] rapidio: Replace 'select' DMAENGINES 'with depends on' Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 16/29] cifs: fix DFS mount with cifsacl/modefromsid Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 17/29] kobject: Drop unneeded conditional in __kobject_del() Sasha Levin
2020-09-14 13:03 ` [OpenRISC] [PATCH AUTOSEL 5.8 18/29] openrisc: Fix cache API compile issue when not inlining Sasha Levin
2020-09-14 13:03   ` Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 19/29] nvme-fc: cancel async events before freeing event struct Sasha Levin
2020-09-14 13:03   ` Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 20/29] nvme-rdma: " Sasha Levin
2020-09-14 13:03   ` Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 21/29] nvme-tcp: " Sasha Levin
2020-09-14 13:03   ` Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 22/29] block: only call sched requeue_request() for scheduled requests Sasha Levin
2020-09-14 13:03 ` [f2fs-dev] [PATCH AUTOSEL 5.8 23/29] f2fs: fix indefinite loop scanning for free nid Sasha Levin
2020-09-14 13:03   ` Sasha Levin
2020-09-14 13:03 ` [f2fs-dev] [PATCH AUTOSEL 5.8 24/29] f2fs: Return EOF on unaligned end of file DIO read Sasha Levin
2020-09-14 13:03   ` Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 25/29] i2c: algo: pca: Reapply i2c bus settings after reset Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 26/29] spi: Fix memory leak on splited transfers Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 27/29] gcov: add support for GCC 10.1 Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 28/29] KVM: Check the allocation of pv cpu mask Sasha Levin
2020-09-14 13:03 ` [PATCH AUTOSEL 5.8 29/29] KVM: MIPS: Change the definition of kvm type Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200914130358.1804194-11-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=broonie@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=vincent.whitchurch@axis.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.