From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe33.google.com (mail-vs1-xe33.google.com [IPv6:2607:f8b0:4864:20::e33]) by sourceware.org (Postfix) with ESMTPS id 67E9D3858418; Wed, 4 May 2022 06:06:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 67E9D3858418 Received: by mail-vs1-xe33.google.com with SMTP id u205so290026vsu.6; Tue, 03 May 2022 23:06:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Qqy0hUxuqG/+clLBtTG876CCW9O+iScISB2uywO1gZE=; b=OrrIXvaGDVlJ7JwlhFx9IxO/LP2muLZisfo0UDuZbbMR5OIfRLrlCa32c/aSVadegC XVdg0vTLSR2PSK6bTi4mrwZWvcSzMl8nWcr4eZUj8KdyxWMwo/jZ7a2NmidoikiBy+r9 J5Z/idoc273NZL4/Pz4+0dlHIttVO/j2l8fuAeved1b3jDvS4R13Ta4dItnHbcVSf2uO P4wFAZpCjfvPRgPLqpWijHjAlz325Oeaj9fnSx3XAUMPmB0CMhQKEbbSJDjiHoWuQ0Iu gN1NPrgWOkEy9MDnLWRm3jFXKYtOF+4dFGkW/PlTRwddL04sDV1pkEmW0eX5FKtvIAR8 zN8g== X-Gm-Message-State: AOAM5339aGftIcdmzPE9rKCRDYqR2cIzUdK4uT1+VseulaqQGuVrXlRh dqdQpQ5BTbnRetrxtfmNcXXFaTZu62YBLzBNNL0QvxcrCMs= X-Google-Smtp-Source: ABdhPJxn1TyasR1uoXC2ueK6yoyd1cyKxRE47W0d6f180h2mybMR3BWuOwaI3lgUNzG+wPnlvtCbvZ3gzFINzexXhcM= X-Received: by 2002:a67:d713:0:b0:32d:57af:a401 with SMTP id p19-20020a67d713000000b0032d57afa401mr1970359vsj.80.1651644360848; Tue, 03 May 2022 23:06:00 -0700 (PDT) MIME-Version: 1.0 References: <20220323215734.3927131-12-goldstein.w.n@gmail.com> <20220324205033.3274646-1-goldstein.w.n@gmail.com> In-Reply-To: From: Sunil Pandey Date: Tue, 3 May 2022 23:05:24 -0700 Message-ID: Subject: Re: [PATCH v2 12/31] x86: Fix fallback for wcsncmp_avx2 in strcmp-avx2.S [BZ #28896] To: "H.J. Lu" , Libc-stable Mailing List Cc: Noah Goldstein , GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HK_RANDOM_ENVFROM, HK_RANDOM_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-stable@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-stable mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 May 2022 06:06:02 -0000 On Thu, Mar 24, 2022 at 2:59 PM H.J. Lu via Libc-alpha wrote: > > On Thu, Mar 24, 2022 at 2:43 PM Noah Goldstein wrote: > > > > On Thu, Mar 24, 2022 at 4:26 PM H.J. Lu wrote: > > > > > > On Thu, Mar 24, 2022 at 1:50 PM Noah Goldstein wrote: > > > > > > > > Overflow case for __wcsncmp_avx2_rtm should be __wcscmp_avx2_rtm not > > > > __wcscmp_avx2. > > > > > > > > commit ddf0992cf57a93200e0c782e2a94d0733a5a0b87 > > > > Author: Noah Goldstein > > > > Date: Sun Jan 9 16:02:21 2022 -0600 > > > > > > > > x86: Fix __wcsncmp_avx2 in strcmp-avx2.S [BZ# 28755] > > > > > > > > Set the wrong fallback function for `__wcsncmp_avx2_rtm`. It was set > > > > to fallback on to `__wcscmp_avx2` instead of `__wcscmp_avx2_rtm` which > > > > can cause spurious aborts. > > > > > > > > This change will need to be backported. > > > > > > > > All string/memory tests pass. > > > > --- > > > > sysdeps/x86/tst-strncmp-rtm.c | 15 +++++++++++++++ > > > > sysdeps/x86_64/multiarch/strcmp-avx2.S | 2 +- > > > > 2 files changed, 16 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/sysdeps/x86/tst-strncmp-rtm.c b/sysdeps/x86/tst-strncmp-rtm.c > > > > index 300bc8c281..a3b14e72ff 100644 > > > > --- a/sysdeps/x86/tst-strncmp-rtm.c > > > > +++ b/sysdeps/x86/tst-strncmp-rtm.c > > > > @@ -70,6 +70,16 @@ function_overflow (void) > > > > return 1; > > > > } > > > > > > > > +__attribute__ ((noinline, noclone)) > > > > +static int > > > > +function_overflow2 (void) > > > > +{ > > > > + if (STRNCMP (string1, string2, SIZE_MAX >> 4) == 0) > > > > + return 0; > > > > + else > > > > + return 1; > > > > +} > > > > + > > > > static int > > > > do_test (void) > > > > { > > > > @@ -77,5 +87,10 @@ do_test (void) > > > > if (status != EXIT_SUCCESS) > > > > return status; > > > > status = do_test_1 (TEST_NAME, LOOP, prepare, function_overflow); > > > > + if (status != EXIT_SUCCESS) > > > > + return status; > > > > + status = do_test_1 (TEST_NAME, LOOP, prepare, function_overflow2); > > > > + if (status != EXIT_SUCCESS) > > > > + return status; > > > > return status; > > > > } > > > > diff --git a/sysdeps/x86_64/multiarch/strcmp-avx2.S b/sysdeps/x86_64/multiarch/strcmp-avx2.S > > > > index 52ff5ad724..86a86b68e3 100644 > > > > --- a/sysdeps/x86_64/multiarch/strcmp-avx2.S > > > > +++ b/sysdeps/x86_64/multiarch/strcmp-avx2.S > > > > @@ -122,7 +122,7 @@ ENTRY(STRCMP) > > > > are cases where length is large enough that it can never be a > > > > bound on valid memory so just use wcscmp. */ > > > > shrq $56, %rcx > > > > - jnz __wcscmp_avx2 > > > > + jnz OVERFLOW_STRCMP > > > > > > > > leaq (, %rdx, 4), %rdx > > > > # endif > > > > -- > > > > 2.25.1 > > > > > > > > > > LGTM. Verified on AVX2 machine with RTM. Without the fix, > > > the new testcase failed. > > > > And that w/ the fix it passes? > > Yes. > > > > > > > Reviewed-by: H.J. Lu > > > > > > Thanks. > > > > > > -- > > > H.J. > > > > -- > H.J. I would like to backport this patch to release branches. Any comments or objections? --Sunil