Read() should not write anything when returning 0 (EOF).
This patch does not correct the same bug occuring for :
nbr_read=read(file, buf, nbytes)
When nbr_read<nbytes, nbytes bytes are copied into the virtual
RAM instead of nbr_read. If buf is smaller than nbytes, a
page fault occurs, even if buf is in fact bigger than nbr_read.
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
int bytes_read = read(sim_fd, bufArg.bufferPtr(), nbytes);
- if (bytes_read != -1)
+ if (bytes_read > 0)
bufArg.copyOut(tc->getMemProxy());
return bytes_read;