VirtualBox

Changeset 87121 in vbox for trunk


Ignore:
Timestamp:
Dec 24, 2020 11:38:28 AM (4 years ago)
Author:
vboxsync
Message:

DevFdc: Return proper errors when trying to access an empty drive via non-DMA transfers (see bugref:9888).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DevFdc.cpp

    r82968 r87121  
    16401640    pos = fdctrl->data_pos % FD_SECTOR_LEN;
    16411641    if (fdctrl->msr & FD_MSR_NONDMA) {
    1642         if (pos == 0) {
     1642        if (cur_drv->pDrvMedia == NULL)
     1643        {
     1644            if (fdctrl->data_dir == FD_DIR_WRITE)
     1645                fdctrl_stop_transfer_now(fdctrl, FD_SR0_ABNTERM | FD_SR0_SEEK, 0x00, 0x00);
     1646            else
     1647                fdctrl_stop_transfer_now(fdctrl, FD_SR0_ABNTERM, 0x00, 0x00);
     1648        } else if (pos == 0) {
    16431649            if (fdctrl->data_pos != 0)
    16441650                if (!fdctrl_seek_to_next_sect(fdctrl, cur_drv)) {
     
    16471653                    return 0;
    16481654                }
     1655
    16491656            rc = blk_read(cur_drv, fd_sector(cur_drv), fdctrl->fifo, 1);
    16501657            if (RT_FAILURE(rc))
     
    21572164        pos %= FD_SECTOR_LEN;
    21582165        fdctrl->fifo[pos] = value;
    2159         if (pos == FD_SECTOR_LEN - 1 ||
     2166
     2167        if (cur_drv->pDrvMedia == NULL)
     2168        {
     2169            if (fdctrl->data_dir == FD_DIR_WRITE)
     2170                fdctrl_stop_transfer_now(fdctrl, FD_SR0_ABNTERM | FD_SR0_SEEK, 0x00, 0x00);
     2171            else
     2172                fdctrl_stop_transfer_now(fdctrl, FD_SR0_ABNTERM, 0x00, 0x00);
     2173        } else if (pos == FD_SECTOR_LEN - 1 ||
    21602174            fdctrl->data_pos == fdctrl->data_len) {
    21612175            blk_write(cur_drv, fd_sector(cur_drv), fdctrl->fifo, 1);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette