[v1] String: Ensure 'MIN_PAGE_SIZE' is factor of 'getpagesize'

Message ID 20220207201624.601598-1-goldstein.w.n@gmail.com
State Superseded
Headers
Series [v1] String: Ensure 'MIN_PAGE_SIZE' is factor of 'getpagesize' |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent
dj/TryBot-32bit success Build for i686

Commit Message

Noah Goldstein Feb. 7, 2022, 8:16 p.m. UTC
  When 'TEST_LEN' was defined as (4096 * 3) the allocation size Would
not be a factor of system page size if it was > 4096.
---
 string/test-strcmp.c  | 14 +++++++-------
 string/test-strncmp.c | 18 +++++++++---------
 2 files changed, 16 insertions(+), 16 deletions(-)
  

Comments

Andreas Schwab Feb. 7, 2022, 9:10 p.m. UTC | #1
On Feb 07 2022, Noah Goldstein via Libc-alpha wrote:

> When 'TEST_LEN' was defined as (4096 * 3) the allocation size Would
> not be a factor of system page size if it was > 4096.

s/factor/multiple/
  
Noah Goldstein Feb. 7, 2022, 9:42 p.m. UTC | #2
On Mon, Feb 7, 2022 at 3:10 PM Andreas Schwab <schwab@linux-m68k.org> wrote:
>
> On Feb 07 2022, Noah Goldstein via Libc-alpha wrote:
>
> > When 'TEST_LEN' was defined as (4096 * 3) the allocation size Would
> > not be a factor of system page size if it was > 4096.
>
> s/factor/multiple/

Fixed :)
>
> --
> Andreas Schwab, schwab@linux-m68k.org
> GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
> "And now for something completely different."
  

Patch

diff --git a/string/test-strcmp.c b/string/test-strcmp.c
index eacbdc8857..0abce769d0 100644
--- a/string/test-strcmp.c
+++ b/string/test-strcmp.c
@@ -16,7 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#define TEST_LEN (4096 * 3)
+#define TEST_LEN (getpagesize () * 3)
 #define MIN_PAGE_SIZE (TEST_LEN + 2 * getpagesize ())
 
 #define TEST_MAIN
@@ -393,7 +393,7 @@  int
 test_main (void)
 {
   size_t i, j;
-
+  const size_t test_len = MIN(TEST_LEN, 3 * 4096);
   test_init ();
   check();
   check2 ();
@@ -435,7 +435,7 @@  test_main (void)
 
   for (j = 0; j < 160; ++j)
     {
-      for (i = 0; i < TEST_LEN;)
+      for (i = 0; i < test_len;)
         {
           do_test (getpagesize () - j - 1, 0, i, 127, 0);
           do_test (getpagesize () - j - 1, 0, i, 127, 1);
@@ -461,17 +461,17 @@  test_main (void)
             {
               i += 7;
             }
-          else if (i + 161 < TEST_LEN)
+          else if (i + 161 < test_len)
             {
               i += 31;
               i *= 17;
               i /= 16;
-              if (i + 161 > TEST_LEN)
+              if (i + 161 > test_len)
                 {
-                  i = TEST_LEN - 160;
+                  i = test_len - 160;
                 }
             }
-          else if (i + 32 < TEST_LEN)
+          else if (i + 32 < test_len)
             {
               i += 7;
             }
diff --git a/string/test-strncmp.c b/string/test-strncmp.c
index 1a3cee1792..1966bde3fe 100644
--- a/string/test-strncmp.c
+++ b/string/test-strncmp.c
@@ -16,7 +16,7 @@ 
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#define TEST_LEN (4096 * 3)
+#define TEST_LEN (getpagesize () * 3)
 #define MIN_PAGE_SIZE (TEST_LEN + 2 * getpagesize ())
 
 #define TEST_MAIN
@@ -430,7 +430,7 @@  check_overflow (void)
   const size_t of_masks[]
       = { ULONG_MAX, LONG_MIN, ULONG_MAX - (ULONG_MAX >> 2),
           ((size_t)LONG_MAX) >> 1 };
-
+  const size_t test_len = MIN(test_len, 3 * 4096);
   for (of_idx = 0; of_idx < sizeof (of_masks) / sizeof (of_masks[0]); ++of_idx)
     {
       of_mask = of_masks[of_idx];
@@ -484,7 +484,7 @@  check_overflow (void)
                          of_mask - j * 2, 0, 127, -1);
             }
 
-          for (i = 1; i < TEST_LEN; i += i)
+          for (i = 1; i < test_len; i += i)
             {
               do_test_n (j, 0, i - 1, of_mask, 0, 127, 0);
               do_test_n (j, 0, i - 1, of_mask, 0, 127, 1);
@@ -540,7 +540,7 @@  int
 test_main (void)
 {
   size_t i, j;
-
+  const size_t test_len = MIN(test_len, 3 * 4096);
   test_init ();
 
   check1 ();
@@ -608,7 +608,7 @@  test_main (void)
 
   for (j = 0; j < 160; ++j)
     {
-      for (i = 0; i < TEST_LEN;)
+      for (i = 0; i < test_len;)
         {
           do_test_n (getpagesize () - j - 1, 0, i, i + 1, 0, 127, 0);
           do_test_n (getpagesize () - j - 1, 0, i, i + 1, 0, 127, 1);
@@ -677,17 +677,17 @@  test_main (void)
             {
               i += 7;
             }
-          else if (i + 161 < TEST_LEN)
+          else if (i + 161 < test_len)
             {
               i += 31;
               i *= 17;
               i /= 16;
-              if (i + 161 > TEST_LEN)
+              if (i + 161 > test_len)
                 {
-                  i = TEST_LEN - 160;
+                  i = test_len - 160;
                 }
             }
-          else if (i + 32 < TEST_LEN)
+          else if (i + 32 < test_len)
             {
               i += 7;
             }