• J
    target/mips: Check memory permissions with mem_idx · 9fbf4a58
    James Hogan 提交于
    When performing virtual to physical address translation, check the
    required privilege level based on the mem_idx rather than the mode in
    the hflags. This will allow EVA loads & stores to operate safely only on
    user memory from kernel mode.
    
    For the cases where the mmu_idx doesn't need to be overridden
    (mips_cpu_get_phys_page_debug() and cpu_mips_translate_address()), we
    calculate the required mmu_idx using cpu_mmu_index(). Note that this
    only tests the MIPS_HFLAG_KSU bits rather than MIPS_HFLAG_MODE, so we
    don't test the debug mode hflag MIPS_HFLAG_DM any longer. This should be
    fine as get_physical_address() only compares against MIPS_HFLAG_UM and
    MIPS_HFLAG_SM, neither of which should get set by compute_hflags() when
    MIPS_HFLAG_DM is set.
    Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
    Reviewed-by: NYongbok Kim <yongbok.kim@imgtec.com>
    Cc: Aurelien Jarno <aurelien@aurel32.net>
    Signed-off-by: NYongbok Kim <yongbok.kim@imgtec.com>
    9fbf4a58
helper.c 31.0 KB