Message ID | 20240914064645.2099169-1-maobibo@loongson.cn |
---|---|
State | New |
Headers | show |
Series | [v2] target/loongarch: Avoid bits shift exceeding width of bool type | expand |
在 2024/9/14 下午2:46, Bibo Mao 写道: > Variable env->cf[i] is defined as bool type, it is treated as int type > with shift operation. However the max possible width is 56 for the shift > operation, exceeding the width of int type. And there is existing api > read_fcc() which is converted to u64 type with bitwise shift, it can be > used to dump fp registers into coredump note segment. > > Resolves: Coverity CID 1561133 > Signed-off-by: Bibo Mao <maobibo@loongson.cn> > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/loongarch/arch_dump.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) Applied to loongarch-next. Thanks. Song Gao > diff --git a/target/loongarch/arch_dump.c b/target/loongarch/arch_dump.c > index 4986db970e..d9e1120333 100644 > --- a/target/loongarch/arch_dump.c > +++ b/target/loongarch/arch_dump.c > @@ -97,11 +97,7 @@ static int loongarch_write_elf64_fprpreg(WriteCoreDumpFunction f, > > loongarch_note_init(¬e, s, "CORE", 5, NT_PRFPREG, sizeof(note.fpu)); > note.fpu.fcsr = cpu_to_dump64(s, env->fcsr0); > - > - for (i = 0; i < 8; i++) { > - note.fpu.fcc |= env->cf[i] << (8 * i); > - } > - note.fpu.fcc = cpu_to_dump64(s, note.fpu.fcc); > + note.fpu.fcc = cpu_to_dump64(s, read_fcc(env)); > > for (i = 0; i < 32; ++i) { > note.fpu.fpr[i] = cpu_to_dump64(s, env->fpr[i].vreg.UD[0]); > > base-commit: 28ae3179fc52d2e4d870b635c4a412aab99759e7
diff --git a/target/loongarch/arch_dump.c b/target/loongarch/arch_dump.c index 4986db970e..d9e1120333 100644 --- a/target/loongarch/arch_dump.c +++ b/target/loongarch/arch_dump.c @@ -97,11 +97,7 @@ static int loongarch_write_elf64_fprpreg(WriteCoreDumpFunction f, loongarch_note_init(¬e, s, "CORE", 5, NT_PRFPREG, sizeof(note.fpu)); note.fpu.fcsr = cpu_to_dump64(s, env->fcsr0); - - for (i = 0; i < 8; i++) { - note.fpu.fcc |= env->cf[i] << (8 * i); - } - note.fpu.fcc = cpu_to_dump64(s, note.fpu.fcc); + note.fpu.fcc = cpu_to_dump64(s, read_fcc(env)); for (i = 0; i < 32; ++i) { note.fpu.fpr[i] = cpu_to_dump64(s, env->fpr[i].vreg.UD[0]);