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