Tegra: sanity check non-secure DRAM address

This patch fixes the logic to validate if a non-secure memory address
overlaps the TZDRAM memory aperture.

Change-Id: I68af7dc6acc705d7b0ee9161c4002376077b46b1
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
This commit is contained in:
Varun Wadekar 2017-07-20 09:43:28 -07:00
parent aa64c5fb67
commit 6460ed7aaa
1 changed files with 5 additions and 3 deletions

View File

@ -381,13 +381,15 @@ void bl31_plat_arch_setup(void)
******************************************************************************/
int32_t bl31_check_ns_address(uint64_t base, uint64_t size_in_bytes)
{
uint64_t end = base + size_in_bytes;
uint64_t end = base + size_in_bytes - U(1);
int32_t ret = 0;
/*
* Check if the NS DRAM address is valid
*/
if ((base < TEGRA_DRAM_BASE) || (end > TEGRA_DRAM_END)) {
if ((base < TEGRA_DRAM_BASE) || (base >= TEGRA_DRAM_END) ||
(end > TEGRA_DRAM_END)) {
ERROR("NS address is out-of-bounds!\n");
ret = -EFAULT;
}
@ -396,7 +398,7 @@ int32_t bl31_check_ns_address(uint64_t base, uint64_t size_in_bytes)
* TZDRAM aperture contains the BL31 and BL32 images, so we need
* to check if the NS DRAM range overlaps the TZDRAM aperture.
*/
if ((base < TZDRAM_END) && (end > tegra_bl31_phys_base)) {
if ((base < (uint64_t)TZDRAM_END) && (end > tegra_bl31_phys_base)) {
ERROR("NS address overlaps TZDRAM!\n");
ret = -ENOTSUP;
}