public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [v9 0/2] misc: pci_endpoint_test: Fix overflow of bar_size.
@ 2025-01-08  7:25 Hans Zhang
  2025-01-08  7:25 ` [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code Hans Zhang
  2025-01-08  7:25 ` [v9 2/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
  0 siblings, 2 replies; 6+ messages in thread
From: Hans Zhang @ 2025-01-08  7:25 UTC (permalink / raw)
  To: manivannan.sadhasivam
  Cc: kw, kishon, arnd, gregkh, linux-pci, linux-kernel, rockswang7,
	Hans Zhang

1. Remove the "remainder" code.
2. Fix overflow of bar_size.

Hans Zhang (2):
  misc: pci_endpoint_test: Remove the "remainder" code
  misc: pci_endpoint_test: Fix overflow of bar_size

 drivers/misc/pci_endpoint_test.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)


base-commit: ccb98ccef0e543c2bd4ef1a72270461957f3d8d0
-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code
  2025-01-08  7:25 [v9 0/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
@ 2025-01-08  7:25 ` Hans Zhang
  2025-01-08  7:40   ` Niklas Cassel
  2025-01-08  7:25 ` [v9 2/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
  1 sibling, 1 reply; 6+ messages in thread
From: Hans Zhang @ 2025-01-08  7:25 UTC (permalink / raw)
  To: manivannan.sadhasivam
  Cc: kw, kishon, arnd, gregkh, linux-pci, linux-kernel, rockswang7,
	Hans Zhang, Niklas Cassel

A BAR size is always a power of two. buf_size = min(SZ_1M, bar_size);
If the BAR size is <= 1MB, there will be 1 iteration, no remainder. If
the BAR size is > 1MB, there will be more than one iteration, but the
size will always be evenly divisible by 1MB, so no remainder.

Signed-off-by: Hans Zhang <18255117159@163.com>
Suggested-by: Niklas Cassel <cassel@kernel.org>
---
 drivers/misc/pci_endpoint_test.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
index 3aaaf47fa4ee..0e68dfa7257a 100644
--- a/drivers/misc/pci_endpoint_test.c
+++ b/drivers/misc/pci_endpoint_test.c
@@ -313,12 +313,6 @@ static bool pci_endpoint_test_bar(struct pci_endpoint_test *test,
 						 write_buf, read_buf, buf_size))
 			return false;
 
-	remain = bar_size % buf_size;
-	if (remain)
-		if (pci_endpoint_test_bar_memcmp(test, barno, buf_size * iters,
-						 write_buf, read_buf, remain))
-			return false;
-
 	return true;
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [v9 2/2] misc: pci_endpoint_test: Fix overflow of bar_size
  2025-01-08  7:25 [v9 0/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
  2025-01-08  7:25 ` [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code Hans Zhang
@ 2025-01-08  7:25 ` Hans Zhang
  2025-01-08  7:41   ` Niklas Cassel
  1 sibling, 1 reply; 6+ messages in thread
From: Hans Zhang @ 2025-01-08  7:25 UTC (permalink / raw)
  To: manivannan.sadhasivam
  Cc: kw, kishon, arnd, gregkh, linux-pci, linux-kernel, rockswang7,
	Hans Zhang

With 8GB BAR2, running pcitest -b 2 fails with "TEST FAILED".

The return value of the `pci_resource_len` interface is not an integer.
Using `pcitest` with an 8GB BAR2, the bar_size of integer type will
overflow.

Change the data type of bar_size from integer to u64, to fix the above
issue.

Signed-off-by: Hans Zhang <18255117159@163.com>
---
Changes since v8:
https://lore.kernel.org/linux-pci/20250104151652.1652181-1-18255117159@163.com/

- Split the patch.

Changes since v4-v7:
https://lore.kernel.org/linux-pci/20250102120222.1403906-1-18255117159@163.com/

- Fix 32-bit OS warnings and errors.
- Fix undefined reference to `__udivmoddi4`

Changes since v3:
https://lore.kernel.org/linux-pci/20241221141009.27317-1-18255117159@163.com/

- The patch subject were modified.

Changes since v2:
https://lore.kernel.org/linux-pci/20241220075253.16791-1-18255117159@163.com/

- Fix "changes" part goes below the --- line
- The patch commit message were modified.

Changes since v1:
https://lore.kernel.org/linux-pci/20241217121220.19676-1-18255117159@163.com/

- The patch subject and commit message were modified.
---
 drivers/misc/pci_endpoint_test.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
index 0e68dfa7257a..812508308187 100644
--- a/drivers/misc/pci_endpoint_test.c
+++ b/drivers/misc/pci_endpoint_test.c
@@ -280,10 +280,11 @@ static int pci_endpoint_test_bar_memcmp(struct pci_endpoint_test *test,
 static bool pci_endpoint_test_bar(struct pci_endpoint_test *test,
 				  enum pci_barno barno)
 {
-	int j, bar_size, buf_size, iters, remain;
+	int j, buf_size, iters;
 	void *write_buf __free(kfree) = NULL;
 	void *read_buf __free(kfree) = NULL;
 	struct pci_dev *pdev = test->pdev;
+	u64 bar_size;
 
 	if (!test->bar[barno])
 		return false;
@@ -307,7 +308,8 @@ static bool pci_endpoint_test_bar(struct pci_endpoint_test *test,
 	if (!read_buf)
 		return false;
 
-	iters = bar_size / buf_size;
+	do_div(bar_size, buf_size);
+	iters = bar_size;
 	for (j = 0; j < iters; j++)
 		if (pci_endpoint_test_bar_memcmp(test, barno, buf_size * j,
 						 write_buf, read_buf, buf_size))
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code
  2025-01-08  7:25 ` [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code Hans Zhang
@ 2025-01-08  7:40   ` Niklas Cassel
  2025-01-08  8:12     ` Hans Zhang
  0 siblings, 1 reply; 6+ messages in thread
From: Niklas Cassel @ 2025-01-08  7:40 UTC (permalink / raw)
  To: Hans Zhang
  Cc: manivannan.sadhasivam, kw, kishon, arnd, gregkh, linux-pci,
	linux-kernel, rockswang7

On Wed, Jan 08, 2025 at 03:25:03PM +0800, Hans Zhang wrote:
> A BAR size is always a power of two. buf_size = min(SZ_1M, bar_size);
> If the BAR size is <= 1MB, there will be 1 iteration, no remainder. If
> the BAR size is > 1MB, there will be more than one iteration, but the
> size will always be evenly divisible by 1MB, so no remainder.
> 
> Signed-off-by: Hans Zhang <18255117159@163.com>
> Suggested-by: Niklas Cassel <cassel@kernel.org>
> ---
>  drivers/misc/pci_endpoint_test.c | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
> index 3aaaf47fa4ee..0e68dfa7257a 100644
> --- a/drivers/misc/pci_endpoint_test.c
> +++ b/drivers/misc/pci_endpoint_test.c
> @@ -313,12 +313,6 @@ static bool pci_endpoint_test_bar(struct pci_endpoint_test *test,
>  						 write_buf, read_buf, buf_size))
>  			return false;
>  
> -	remain = bar_size % buf_size;
> -	if (remain)
> -		if (pci_endpoint_test_bar_memcmp(test, barno, buf_size * iters,
> -						 write_buf, read_buf, remain))
> -			return false;
> -
>  	return true;
>  }
>  
> -- 
> 2.25.1
> 

You also need to remove the remain variable declaration in this patch,
otherwise there will be a build warning when building this patch.

With that fixed:
Reviewed-by: Niklas Cassel <cassel@kernel.org>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [v9 2/2] misc: pci_endpoint_test: Fix overflow of bar_size
  2025-01-08  7:25 ` [v9 2/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
@ 2025-01-08  7:41   ` Niklas Cassel
  0 siblings, 0 replies; 6+ messages in thread
From: Niklas Cassel @ 2025-01-08  7:41 UTC (permalink / raw)
  To: Hans Zhang
  Cc: manivannan.sadhasivam, kw, kishon, arnd, gregkh, linux-pci,
	linux-kernel, rockswang7

On Wed, Jan 08, 2025 at 03:25:04PM +0800, Hans Zhang wrote:
> With 8GB BAR2, running pcitest -b 2 fails with "TEST FAILED".
> 
> The return value of the `pci_resource_len` interface is not an integer.
> Using `pcitest` with an 8GB BAR2, the bar_size of integer type will
> overflow.
> 
> Change the data type of bar_size from integer to u64, to fix the above
> issue.
> 
> Signed-off-by: Hans Zhang <18255117159@163.com>
> ---
> Changes since v8:
> https://lore.kernel.org/linux-pci/20250104151652.1652181-1-18255117159@163.com/
> 
> - Split the patch.
> 
> Changes since v4-v7:
> https://lore.kernel.org/linux-pci/20250102120222.1403906-1-18255117159@163.com/
> 
> - Fix 32-bit OS warnings and errors.
> - Fix undefined reference to `__udivmoddi4`
> 
> Changes since v3:
> https://lore.kernel.org/linux-pci/20241221141009.27317-1-18255117159@163.com/
> 
> - The patch subject were modified.
> 
> Changes since v2:
> https://lore.kernel.org/linux-pci/20241220075253.16791-1-18255117159@163.com/
> 
> - Fix "changes" part goes below the --- line
> - The patch commit message were modified.
> 
> Changes since v1:
> https://lore.kernel.org/linux-pci/20241217121220.19676-1-18255117159@163.com/
> 
> - The patch subject and commit message were modified.
> ---
>  drivers/misc/pci_endpoint_test.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
> index 0e68dfa7257a..812508308187 100644
> --- a/drivers/misc/pci_endpoint_test.c
> +++ b/drivers/misc/pci_endpoint_test.c
> @@ -280,10 +280,11 @@ static int pci_endpoint_test_bar_memcmp(struct pci_endpoint_test *test,
>  static bool pci_endpoint_test_bar(struct pci_endpoint_test *test,
>  				  enum pci_barno barno)
>  {
> -	int j, bar_size, buf_size, iters, remain;
> +	int j, buf_size, iters;
>  	void *write_buf __free(kfree) = NULL;
>  	void *read_buf __free(kfree) = NULL;
>  	struct pci_dev *pdev = test->pdev;
> +	u64 bar_size;
>  
>  	if (!test->bar[barno])
>  		return false;
> @@ -307,7 +308,8 @@ static bool pci_endpoint_test_bar(struct pci_endpoint_test *test,
>  	if (!read_buf)
>  		return false;
>  
> -	iters = bar_size / buf_size;
> +	do_div(bar_size, buf_size);
> +	iters = bar_size;
>  	for (j = 0; j < iters; j++)
>  		if (pci_endpoint_test_bar_memcmp(test, barno, buf_size * j,
>  						 write_buf, read_buf, buf_size))
> -- 
> 2.25.1
> 

Reviewed-by: Niklas Cassel <cassel@kernel.org>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code
  2025-01-08  7:40   ` Niklas Cassel
@ 2025-01-08  8:12     ` Hans Zhang
  0 siblings, 0 replies; 6+ messages in thread
From: Hans Zhang @ 2025-01-08  8:12 UTC (permalink / raw)
  To: Niklas Cassel
  Cc: manivannan.sadhasivam, kw, kishon, arnd, gregkh, linux-pci,
	linux-kernel, rockswang7



On 2025/1/8 15:40, Niklas Cassel wrote:

> You also need to remove the remain variable declaration in this patch,
> otherwise there will be a build warning when building this patch.

Ok, I have resubmitted patch.

Best regards
Hans


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-01-08  8:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-08  7:25 [v9 0/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
2025-01-08  7:25 ` [v9 1/2] misc: pci_endpoint_test: Remove the "remainder" code Hans Zhang
2025-01-08  7:40   ` Niklas Cassel
2025-01-08  8:12     ` Hans Zhang
2025-01-08  7:25 ` [v9 2/2] misc: pci_endpoint_test: Fix overflow of bar_size Hans Zhang
2025-01-08  7:41   ` Niklas Cassel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox