Commit d6c1a327a94437f0ed74ba970b97fd962462bc77

Authored by j_mayer
1 parent a06e5a3c

Fix memory corruption: bdrv_read/write API has been changed to take

nb_sectors instead of len in bytes but the fdc driver has never been fixed.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3532 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 2 additions and 4 deletions
hw/fdc.c
... ... @@ -1213,8 +1213,7 @@ static uint32_t fdctrl_read_data (fdctrl_t *fdctrl)
1213 1213 len = fdctrl->data_len - fdctrl->data_pos;
1214 1214 if (len > FD_SECTOR_LEN)
1215 1215 len = FD_SECTOR_LEN;
1216   - bdrv_read(cur_drv->bs, fd_sector(cur_drv),
1217   - fdctrl->fifo, len);
  1216 + bdrv_read(cur_drv->bs, fd_sector(cur_drv), fdctrl->fifo, 1);
1218 1217 }
1219 1218 }
1220 1219 retval = fdctrl->fifo[pos];
... ... @@ -1321,8 +1320,7 @@ static void fdctrl_write_data (fdctrl_t *fdctrl, uint32_t value)
1321 1320 fdctrl->fifo[fdctrl->data_pos++] = value;
1322 1321 if (fdctrl->data_pos % FD_SECTOR_LEN == (FD_SECTOR_LEN - 1) ||
1323 1322 fdctrl->data_pos == fdctrl->data_len) {
1324   - bdrv_write(cur_drv->bs, fd_sector(cur_drv),
1325   - fdctrl->fifo, FD_SECTOR_LEN);
  1323 + bdrv_write(cur_drv->bs, fd_sector(cur_drv), fdctrl->fifo, 1);
1326 1324 }
1327 1325 /* Switch from transfer mode to status mode
1328 1326 * then from status mode to command mode
... ...