public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Richard Earnshaw <rearnsha@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r12-222] arm: fix UB due to missing mode check [PR100311]
Date: Wed, 28 Apr 2021 16:59:44 +0000 (GMT)	[thread overview]
Message-ID: <20210428165944.527023AA981B@sourceware.org> (raw)

https://gcc.gnu.org/g:59f5d16f2c5db4d9592c8ce6453afe81334bb012

commit r12-222-g59f5d16f2c5db4d9592c8ce6453afe81334bb012
Author: Richard Earnshaw <rearnsha@arm.com>
Date:   Wed Apr 28 17:56:38 2021 +0100

    arm: fix UB due to missing mode check [PR100311]
    
    Some places in the compiler iterate over all the fixed registers to
    check if that register can be used in a particular mode.  The idiom is
    to iterate over the register and then for that register, if it
    supports the current mode to check all that register and any
    additional registers needed (HARD_REGNO_NREGS).  If these two checks
    are not fully aligned then it is possible to generate a buffer overrun
    when testing data objects that are sized by the number of hard regs in
    the machine.
    
    The VPR register is a case where these checks were not consistent and
    because this is the last HARD register the result was that we ended up
    overflowing the fixed_regs array.
    
    gcc:
            PR target/100311
            * config/arm/arm.c (arm_hard_regno_mode_ok): Only allow VPR to be
            used in HImode.

Diff:
---
 gcc/config/arm/arm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 6641e3fb4dc..0371d9818fd 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -25269,7 +25269,7 @@ arm_hard_regno_mode_ok (unsigned int regno, machine_mode mode)
     return false;
 
   if (IS_VPR_REGNUM (regno))
-    return true;
+    return mode == HImode;
 
   if (TARGET_THUMB1)
     /* For the Thumb we only allow values bigger than SImode in


                 reply	other threads:[~2021-04-28 16:59 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210428165944.527023AA981B@sourceware.org \
    --to=rearnsha@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).