aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2021-04-20 13:28:57 +0100
committerMichael Brown <mcb30@ipxe.org>2021-04-20 13:28:57 +0100
commit614d99eba149d0fafc64dfdddc7ef04970e0d86c (patch)
treeebdf48be8d210755a1e01daa53ad1844c9ae2d42
parent85d179f2c65d0a2afe9122b844a90c011d551ae1 (diff)
downloadipxe-614d99eba149d0fafc64dfdddc7ef04970e0d86c.zip
ipxe-614d99eba149d0fafc64dfdddc7ef04970e0d86c.tar.gz
ipxe-614d99eba149d0fafc64dfdddc7ef04970e0d86c.tar.bz2
[xen] Avoid infinite loop on allocation failure in xenstore_response()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/interface/xen/xenstore.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/interface/xen/xenstore.c b/src/interface/xen/xenstore.c
index a14881f..caeb4e9 100644
--- a/src/interface/xen/xenstore.c
+++ b/src/interface/xen/xenstore.c
@@ -68,14 +68,14 @@ static void xenstore_send ( struct xen_hypervisor *xen, const void *data,
XENSTORE_RING_IDX cons;
XENSTORE_RING_IDX idx;
const char *bytes = data;
- size_t offset = 0;
+ size_t offset;
size_t fill;
DBGCP ( intf, "XENSTORE raw request:\n" );
DBGCP_HDA ( intf, MASK_XENSTORE_IDX ( prod ), data, len );
/* Write one byte at a time */
- while ( offset < len ) {
+ for ( offset = 0 ; offset < len ; offset++ ) {
/* Wait for space to become available */
while ( 1 ) {
@@ -90,7 +90,7 @@ static void xenstore_send ( struct xen_hypervisor *xen, const void *data,
/* Write byte */
idx = MASK_XENSTORE_IDX ( prod++ );
- writeb ( bytes[offset++], &intf->req[idx] );
+ writeb ( bytes[offset], &intf->req[idx] );
}
/* Update producer counter */
@@ -125,13 +125,13 @@ static void xenstore_recv ( struct xen_hypervisor *xen, void *data,
XENSTORE_RING_IDX prod;
XENSTORE_RING_IDX idx;
char *bytes = data;
- size_t offset = 0;
+ size_t offset;
size_t fill;
DBGCP ( intf, "XENSTORE raw response:\n" );
/* Read one byte at a time */
- while ( offset < len ) {
+ for ( offset = 0 ; offset < len ; offset++ ) {
/* Wait for data to be ready */
while ( 1 ) {
@@ -147,7 +147,7 @@ static void xenstore_recv ( struct xen_hypervisor *xen, void *data,
/* Read byte */
idx = MASK_XENSTORE_IDX ( cons++ );
if ( data )
- bytes[offset++] = readb ( &intf->rsp[idx] );
+ bytes[offset] = readb ( &intf->rsp[idx] );
}
if ( data )
DBGCP_HDA ( intf, MASK_XENSTORE_IDX ( cons - len ), data, len );