On Fri, Feb 10, 2012 at 02:46:30PM +0100, Paolo Bonzini wrote:
Unlike basic_access, extended_access does not check for a zero sector count. However, this is a problem because for example it would be interpreted as 256 when processing an ATA request.
Thanks. The EDD spec seems to imply that sending a zero isn't an error. How about the below instead?
-Kevin
--- a/src/disk.c +++ b/src/disk.c @@ -135,6 +135,11 @@ extended_access(struct bregs *regs, struct drive_s *drive_g, u16 command)
dop.buf_fl = SEGOFF_TO_FLATPTR(GET_INT13EXT(regs, data)); dop.count = GET_INT13EXT(regs, count); + if (! dop.count) { + // Nothing to do. + disk_ret(regs, DISK_RET_SUCCESS); + return; + }
int status = send_disk_op(&dop);