in ps3stor_lib.c [43:73]
static int ps3stor_close_hv_device(struct ps3_system_bus_device *sbd)
{
int error;
if (sbd->match_id == PS3_MATCH_ID_STOR_DISK
&& ps3_flash_workaround.disk_open
&& ps3_flash_workaround.flash_open) {
ps3_flash_workaround.disk_sbd = sbd;
return 0;
}
error = ps3_close_hv_device(sbd);
if (error)
return error;
if (sbd->match_id == PS3_MATCH_ID_STOR_DISK)
ps3_flash_workaround.disk_open = 0;
if (sbd->match_id == PS3_MATCH_ID_STOR_FLASH) {
ps3_flash_workaround.flash_open = 0;
if (ps3_flash_workaround.disk_sbd) {
ps3_close_hv_device(ps3_flash_workaround.disk_sbd);
ps3_flash_workaround.disk_open = 0;
ps3_flash_workaround.disk_sbd = NULL;
}
}
return 0;
}