+-- On Tue, 31 May 2016, P J P wrote --+ | switch (saddr) { | case ESP_FIFO: | - if (s->ti_size > 0) { | + if ((s->rregs[ESP_RSTAT] & STAT_PIO_MASK) == 0) { | + /* Data out. */ | + qemu_log_mask(LOG_UNIMP, "esp: PIO data read not implemented\n"); | + s->rregs[ESP_FIFO] = 0; | + esp_raise_irq(s); | + } else if (s->ti_rptr < s->ti_wptr) { | s->ti_size--; | - if ((s->rregs[ESP_RSTAT] & STAT_PIO_MASK) == 0) { | - /* Data out. */ | - qemu_log_mask(LOG_UNIMP, | - "esp: PIO data read not implemented\n"); | - s->rregs[ESP_FIFO] = 0; | - } else { | - s->rregs[ESP_FIFO] = s->ti_buf[s->ti_rptr++]; | - } | + s->rregs[ESP_FIFO] = s->ti_buf[s->ti_rptr++]; | esp_raise_irq(s); | } | if (s->ti_size == 0) { | @@ -456,7 +454,7 @@ void esp_reg_write(ESPState *s, uint32_t saddr, uint64_t val) | } else { | trace_esp_error_fifo_overrun(); | } | - } else if (s->ti_size == TI_BUFSZ - 1) { | + } else if (s->ti_wptr == TI_BUFSZ - 1) { | trace_esp_error_fifo_overrun(); | } else { | s->ti_size++;
Ping..! -- Prasad J Pandit / Red Hat Product Security Team 47AF CE69 3A90 54AA 9045 1053 DD13 3D32 FE5B 041F