arm: Make sure not to shift off of the end of a uint32_t in KVM.
authorGabe Black <gabeblack@google.com>
Wed, 27 Nov 2019 12:55:13 +0000 (04:55 -0800)
committerGabe Black <gabeblack@google.com>
Thu, 28 Nov 2019 07:13:43 +0000 (07:13 +0000)
commitddcc0ab2b4eb301d4e31800736590e4315b1b6b1
tree25ae4ae6ba53895a16d342b9ddee40db2f21b5f7
parent2a0140593f652f446464be1f0e01e5c1f9069a4b
arm: Make sure not to shift off of the end of a uint32_t in KVM.

The methods which set or get an attribute from the virtual GIC use a
shift constant which is 32, but they store their result in a 32 bit
variable and, according to clang, are used to shift 32 bit inputs. This
is undefined behavior in terms of the shift, and will truncate off the
value regardless.

Change-Id: Ie9543ab9e6e1d5f86317a9210d220928b23ffaf8
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23129
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
src/arch/arm/kvm/gic.cc