aboutsummaryrefslogtreecommitdiff
path: root/target-i386
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2011-08-03 11:56:14 +0300
committerAnthony Liguori <aliguori@us.ibm.com>2011-08-05 10:57:36 -0500
commit8417cebfda193c7f9ca70be5e308eaa92cf84b94 (patch)
treeeda047bcb27a66a65875f4b1b9daa195a7f4b6f6 /target-i386
parent39b796f28c7b42cbecdba56612b5f9c505572f07 (diff)
memory: use signed arithmetic
When trying to map an alias of a ram region, where the alias starts at address A and we map it into address B, and A > B, we had an arithmetic underflow. Because we use unsigned arithmetic, the underflow converted into a large number which failed addrrange_intersects() tests. The concrete example which triggered this was cirrus vga mapping the framebuffer at offsets 0xc0000-0xc7fff (relative to the start of the framebuffer) into offsets 0xa0000 (relative to system addres space start). With our favorite analogy of a windowing system, this is equivalent to dragging a subwindow off the left edge of the screen, and failing to clip it into its parent window which is on screen. Fix by switching to signed arithmetic. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'target-i386')
0 files changed, 0 insertions, 0 deletions