qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 07/26] hw/intc/arm_gicv3_its: Correct setting of TableDesc en


From: Richard Henderson
Subject: Re: [PATCH 07/26] hw/intc/arm_gicv3_its: Correct setting of TableDesc entry_sz
Date: Sun, 12 Dec 2021 10:33:40 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

On 12/11/21 11:11 AM, Peter Maydell wrote:
We set the TableDesc entry_sz field from the appropriate
GITS_BASER.ENTRYSIZE field.  That ID register field specifies the
number of bytes per table entry minus one.  However when we use
td->entry_sz we assume it to be the number of bytes per table entry
(for instance we calculate the number of entries in a page by
dividing the page size by the entry size).

The effects of this bug are:
  * we miscalculate the maximum number of entries in the table,
    so our checks on guest index values are wrong (too lax)
  * when looking up an entry in the second level of an indirect
    table, we calculate an incorrect index into the L2 table.
    Because we make the same incorrect calculation on both
    reads and writes of the L2 table, the guest won't notice
    unless it's unlucky enough to use an index value that
    causes us to index off the end of the L2 table page and
    cause guest memory corruption in whatever follows

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
  hw/intc/arm_gicv3_its.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]