f450c75dad
The call to intf_close() may result in the original interface being reopened. For example: when reading the capacity of a 2TB+ disk via iSCSI, the SCSI layer will respond to the intf_close() from the READ CAPACITY (10) command by immediately issuing a READ CAPACITY (16) command. The iSCSI layer happens to reuse the same interface for the new command (since it allows only a single concurrent command). Currently, intf_shutdown() unplugs the interface after the call to intf_close() returns. In the above scenario, this results in unplugging the just-reopened interface. Fix by transferring the interface destination (and its reference) to a temporary interface, and so effectively performing the unplug before making the call to intf_close(). Signed-off-by: Michael Brown <mcb30@ipxe.org> |
||
---|---|---|
.. | ||
arch | ||
bin | ||
config | ||
core | ||
crypto | ||
doc | ||
drivers | ||
hci | ||
image | ||
include | ||
interface | ||
libgcc | ||
net | ||
scripts | ||
tests | ||
usr | ||
util | ||
.gitignore | ||
doxygen.cfg | ||
Makefile | ||
Makefile.efi | ||
Makefile.housekeeping |