[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL for-2.5] tcg: Fix highwater check
From: |
Stefan Weil |
Subject: |
Re: [Qemu-devel] [PULL for-2.5] tcg: Fix highwater check |
Date: |
Mon, 23 Nov 2015 14:16:09 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
Am 23.11.2015 um 13:45 schrieb Richard Henderson:
> From: John Clarke <address@hidden>
>
> A simple typo in the variable to use when comparing vs the highwater mark.
> Reports are that qemu can in fact segfault occasionally due to this mistake.
>
> Signed-off-by: John Clarke <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> tcg/tcg.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index 682af8a..b20ed19 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -2443,7 +2443,7 @@ int tcg_gen_code(TCGContext *s, tcg_insn_unit
> *gen_code_buf)
> one operation beginning below the high water mark cannot overrun
> the buffer completely. Thus we can test for overflow after
> generating code without having to check during generation. */
> - if (unlikely(s->code_gen_ptr > s->code_gen_highwater)) {
> + if (unlikely((void *)s->code_ptr > s->code_gen_highwater)) {
> return -1;
> }
> }
>
Is a comparison of void pointers portable? Or would it be better
to cast both sides to uintptr_t? Or fix the declaration of
code_gen_highwater to use an uint8_t pointer and cast s->code_ptr
to that type? code_gen_highwater should be fixed anyway because
in translate-all a difference is calculated with it.
Stefan