* [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