[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 26/45] ACPI: Record Generic Error Status Block(GESB) table
From: |
Peter Maydell |
Subject: |
Re: [PULL 26/45] ACPI: Record Generic Error Status Block(GESB) table |
Date: |
Thu, 21 May 2020 14:03:36 +0100 |
On Thu, 14 May 2020 at 15:22, Peter Maydell <address@hidden> wrote:
>
> From: Dongjiu Geng <address@hidden>
>
> kvm_arch_on_sigbus_vcpu() error injection uses source_id as
> index in etc/hardware_errors to find out Error Status Data
> Block entry corresponding to error source. So supported source_id
> values should be assigned here and not be changed afterwards to
> make sure that guest will write error into expected Error Status
> Data Block.
>
> Before QEMU writes a new error to ACPI table, it will check whether
> previous error has been acknowledged. If not acknowledged, the new
> errors will be ignored and not be recorded. For the errors section
> type, QEMU simulate it to memory section error.
Hi; Coverity points out (CID 1428962) that there is
unreachable code in this function:
> +static int acpi_ghes_record_mem_error(uint64_t error_block_address,
> + uint64_t error_physical_addr)
> +{
> + GArray *block;
> +
> + /* Memory Error Section Type */
> + const uint8_t uefi_cper_mem_sec[] =
> + UUID_LE(0xA5BC1114, 0x6F64, 0x4EDE, 0xB8, 0x63, 0x3E, 0x83, \
> + 0xED, 0x7C, 0x83, 0xB1);
> +
> + /* invalid fru id: ACPI 4.0: 17.3.2.6.1 Generic Error Data,
> + * Table 17-13 Generic Error Data Entry
> + */
> + QemuUUID fru_id = {};
> + uint32_t data_length;
> +
> + block = g_array_new(false, true /* clear */, 1);
> +
> + /* This is the length if adding a new generic error data entry*/
> + data_length = ACPI_GHES_DATA_LENGTH + ACPI_GHES_MEM_CPER_LENGTH;
Here data_length has a constant value...
> +
> + /*
> + * Check whether it will run out of the preallocated memory if adding a
> new
> + * generic error data entry
> + */
> + if ((data_length + ACPI_GHES_GESB_SIZE) > ACPI_GHES_MAX_RAW_DATA_LENGTH)
> {
...but here we immediately have a runtime check which can't possibly
fail because of the values of the constants involved, so this
if() block is dead code.
> + error_report("Not enough memory to record new CPER!!!");
> + g_array_free(block, true);
> + return -1;
> + }
What was this code trying to do? Is the initial value of
data_length incorrect, or is the if() condition wrong, or
should this simply have been an assert() ?
thanks
-- PMM
- [PULL 17/45] target/arm: Vectorize SABA/UABA, (continued)
- [PULL 17/45] target/arm: Vectorize SABA/UABA, Peter Maydell, 2020/05/14
- [PULL 25/45] KVM: Move hwpoison page related functions into kvm-all.c, Peter Maydell, 2020/05/14
- [PULL 30/45] target/arm: Convert Neon 3-reg-same SHA to decodetree, Peter Maydell, 2020/05/14
- [PULL 23/45] ACPI: Build Hardware Error Source Table, Peter Maydell, 2020/05/14
- [PULL 27/45] target-arm: kvm64: handle SIGBUS signal from kernel or KVM, Peter Maydell, 2020/05/14
- [PULL 19/45] acpi: nvdimm: change NVDIMM_UUID_LE to a common macro, Peter Maydell, 2020/05/14
- [PULL 22/45] ACPI: Build related register address fields via hardware error fw_cfg blob, Peter Maydell, 2020/05/14
- [PULL 28/45] MAINTAINERS: Add ACPI/HEST/GHES entries, Peter Maydell, 2020/05/14
- [PULL 26/45] ACPI: Record Generic Error Status Block(GESB) table, Peter Maydell, 2020/05/14
- Re: [PULL 26/45] ACPI: Record Generic Error Status Block(GESB) table,
Peter Maydell <=
- [PULL 29/45] target/arm: Convert Neon 3-reg-same VQRDMLAH/VQRDMLSH to decodetree, Peter Maydell, 2020/05/14
- [PULL 31/45] target/arm: Convert Neon 64-bit element 3-reg-same insns, Peter Maydell, 2020/05/14
- [PULL 33/45] target/arm: Convert Neon VABA/VABD 3-reg-same to decodetree, Peter Maydell, 2020/05/14
- [PULL 34/45] target/arm: Convert Neon VRHADD, VHSUB 3-reg-same insns to decodetree, Peter Maydell, 2020/05/14
- [PULL 35/45] target/arm: Convert Neon VQSHL, VRSHL, VQRSHL 3-reg-same insns to decodetree, Peter Maydell, 2020/05/14
- [PULL 32/45] target/arm: Convert Neon VHADD 3-reg-same insns, Peter Maydell, 2020/05/14
- [PULL 37/45] target/arm: Convert Neon VPADD 3-reg-same insns to decodetree, Peter Maydell, 2020/05/14
- [PULL 38/45] target/arm: Convert Neon VQDMULH/VQRDMULH 3-reg-same to decodetree, Peter Maydell, 2020/05/14
- [PULL 39/45] target/arm: Convert Neon VADD, VSUB, VABD 3-reg-same insns to decodetree, Peter Maydell, 2020/05/14