rem: ObtainSemaphore(&iounit->ListLock);
add: ObtainSemaphore(&iounit->Lock);
context: DevAbortIO( struct AHIRequest* ioreq,            struct AHIBase*    AHIBase ){  ULONG rc = NULL;  struct AHIDevUnit *iounit;    if(AHIBase->ahib_DebugLevel >= AHI_DEBUG_LOW)  {    KPrintF("AbortIO(0x%08lx)", (ULONG) ioreq);  }  iounit = (struct AHIDevUnit *) ioreq->ahir_Std.io_Unit;    ObtainSemaphore(&iounit->ListLock);  if(ioreq->ahir_Std.io_Message.mn_Node.ln_Type != NT_REPLYMSG)  {    switch(ioreq->ahir_Std.io_Command)    {      case CMD_READ:        if(FindNode((struct List *) &iounit->ReadList, (struct Node *) ioreq))        {          Remove((struct Node *) ioreq);          ioreq->ahir_Std.io_Error = IOERR_ABORTED;          TermIO(ioreq,AHIBase);        }        break;      case CMD_WRITE:      case AHICMD_WRITTEN:        if(FindNode((struct List *) &iounit->PlayingList, (struct Node *) ioreq)        || FindNode((struct List *) &iounit->SilentList, (struct Node *) ioreq)        || FindNode((struct List *) &iounit->WaitingList, (struct Node *) ioreq))        {          struct AHIRequest *nextreq;          while(ioreq)          {            Remove((struct Node *) ioreq);            if(ioreq->ahir_Extras && (GetExtras(ioreq)->Channel != NOCHANNEL))            {              iounit->Voices[GetExtras(ioreq)->Channel].PlayingRequest = NULL;              iounit->Voices[GetExtras(ioreq)->Channel].QueuedRequest = NULL;              iounit->Voices[GetExtras(ioreq)->Channel].NextRequest = NULL;              iounit->Voices[GetExtras(ioreq)->Channel].NextOffset = MUTE;              if(iounit->AudioCtrl)              {                AHI_SetSound(GetExtras(ioreq)->Channel,AHI_NOSOUND,0,0,                    iounit->AudioCtrl,AHISF_IMM);              }            }            ioreq->ahir_Std.io_Command = CMD_WRITE;            ioreq->ahir_Std.io_Error   = IOERR_ABORTED;            nextreq = ioreq->ahir_Link;            TermIO(ioreq,AHIBase);            ioreq = nextreq;          }        }      default:        rc = IOERR_NOCMD;        break;    }  }  ReleaseSemaphore(&iounit->ListLock);  if(AHIBase->ahib_DebugLevel >= AHI_DEBUG_LOW)  {    KPrintF("=>%ld\n",rc);  }  return rc;}