mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
acpi/erst: fix fallthrough code upon validation failure
At any step when any validation fail in check_erst_backend_storage(), there is no need to continue further through other validation checks. Further, by continuing even when record_size is 0, we run the risk of triggering a divide by zero error if we continued with other validation checks. Hence, we should simply return from this function upon validation failure. CC: Peter Maydell <peter.maydell@linaro.org> CC: Eric DeVolder <eric.devolder@oracle.com> Signed-off-by: Ani Sinha <ani@anisinha.ca> Message-Id: <20220513141005.1929422-1-ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Eric DeVolder <eric.devolder@oracle.com>
This commit is contained in:
parent
9ce305c8be
commit
8c97e4deec
@ -440,6 +440,7 @@ static void check_erst_backend_storage(ERSTDeviceState *s, Error **errp)
|
||||
(record_size >= 4096) /* PAGE_SIZE */
|
||||
)) {
|
||||
error_setg(errp, "ERST record_size %u is invalid", record_size);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Validity check header */
|
||||
@ -450,6 +451,7 @@ static void check_erst_backend_storage(ERSTDeviceState *s, Error **errp)
|
||||
(le16_to_cpu(header->reserved) == 0)
|
||||
)) {
|
||||
error_setg(errp, "ERST backend storage header is invalid");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check storage_size against record_size */
|
||||
@ -457,6 +459,7 @@ static void check_erst_backend_storage(ERSTDeviceState *s, Error **errp)
|
||||
(record_size > s->storage_size)) {
|
||||
error_setg(errp, "ACPI ERST requires storage size be multiple of "
|
||||
"record size (%uKiB)", record_size);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Compute offset of first and last record storage slot */
|
||||
|
Loading…
Reference in New Issue
Block a user