struct scsi_cmnd * scsicmd;
 
        scsicmd = (struct scsi_cmnd *) context;
-       scsicmd->SCp.phase = AAC_OWNER_MIDLEVEL;
 
        if (!aac_valid_context(scsicmd, fibptr))
                return;
        if (_aac_probe_container(scsicmd, aac_probe_container_callback1) == 0)
                while (scsicmd->device == scsidev)
                        schedule();
+       kfree(scsidev);
        status = scsicmd->SCp.Status;
        kfree(scsicmd);
-       kfree(scsidev);
        return status;
 }
 
        u32 cid;
 
        scsicmd = (struct scsi_cmnd *) context;
-       scsicmd->SCp.phase = AAC_OWNER_MIDLEVEL;
 
        if (!aac_valid_context(scsicmd, fibptr))
                return;
        struct scsi_cmnd *cmd;
 
        cmd = context;
-       cmd->SCp.phase = AAC_OWNER_MIDLEVEL;
 
        if (!aac_valid_context(cmd, fibptr))
                return;
        struct scsi_cmnd *scsicmd;
 
        scsicmd = (struct scsi_cmnd *) context;
-       scsicmd->SCp.phase = AAC_OWNER_MIDLEVEL;
 
        if (!aac_valid_context(scsicmd, fibptr))
                return;
 
  *----------------------------------------------------------------------------*/
 
 #ifndef AAC_DRIVER_BUILD
-# define AAC_DRIVER_BUILD 2423
-# define AAC_DRIVER_BRANCH "-mh3"
+# define AAC_DRIVER_BUILD 2437
+# define AAC_DRIVER_BRANCH "-mh4"
 #endif
 #define MAXIMUM_NUM_CONTAINERS 32
 
 
                    (cmd->SCp.phase == AAC_OWNER_FIRMWARE))
                        return 0; /* Already owned by Adapter */
        }
-       cmd->scsi_done = done;
        cmd->SCp.phase = AAC_OWNER_LOWLEVEL;
        return (aac_scsi_cmd(cmd) ? FAILED : 0);
 } 
 
 static int aac_eh_abort(struct scsi_cmnd* cmd)
 {
-       struct Scsi_Host * host = cmd->device->host;
+       struct scsi_device * dev = cmd->device;
+       struct Scsi_Host * host = dev->host;
        struct aac_dev * aac = (struct aac_dev *)host->hostdata;
        int count;
        int ret = FAILED;
 
        printk(KERN_ERR "%s: Host adapter abort request (%d,%d,%d,%d)\n",
                AAC_DRIVERNAME,
-               cmd->device->host->host_no, sdev_channel(cmd->device),
-               sdev_id(cmd->device), cmd->device->lun);
+               host->host_no, sdev_channel(dev), sdev_id(dev), dev->lun);
        switch (cmd->cmnd[0]) {
        case SERVICE_ACTION_IN:
                if (!(aac->raw_io_interface) ||