void (*tmf_sent_cb)(enum isci_tmf_cb_state,
                            struct isci_tmf *,
                            void *),
-       struct isci_request *old_request)
+       void *cb_data)
 {
        dev_dbg(&isci_device->isci_port->isci_host->pdev->dev,
                "%s: isci_device = %p\n", __func__, isci_device);
        tmf->tmf_code      = code;
        tmf->timeout_timer = NULL;
        tmf->cb_state_func = tmf_sent_cb;
-       tmf->cb_data       = old_request;
-       tmf->io_tag        = old_request->io_tag;
+       tmf->cb_data       = cb_data;
+}
 
+void isci_task_build_abort_task_tmf(
+       struct isci_tmf *tmf,
+       struct isci_remote_device *isci_device,
+       enum isci_tmf_function_codes code,
+       void (*tmf_sent_cb)(enum isci_tmf_cb_state,
+                           struct isci_tmf *,
+                           void *),
+       struct isci_request *old_request)
+{
+       isci_task_build_tmf(tmf, isci_device, code, tmf_sent_cb,
+                           (void *)old_request);
+       tmf->io_tag = old_request->io_tag;
 }
 
 static struct isci_request *isci_task_get_request_from_task(
                 */
        } else {
                /* Fill in the tmf stucture */
-               isci_task_build_tmf(&tmf, isci_device, isci_tmf_ssp_task_abort,
-                                   isci_abort_task_process_cb, old_request);
+               isci_task_build_abort_task_tmf(&tmf, isci_device,
+                                              isci_tmf_ssp_task_abort,
+                                              isci_abort_task_process_cb,
+                                              old_request);
 
                spin_unlock_irqrestore(&isci_host->scic_lock, flags);
 
 
 int isci_bus_reset_handler(struct scsi_cmnd *cmd);
 
 void isci_task_build_tmf(
+       struct isci_tmf *tmf,
+       struct isci_remote_device *isci_device,
+       enum isci_tmf_function_codes code,
+       void (*tmf_sent_cb)(enum isci_tmf_cb_state,
+                           struct isci_tmf *,
+                           void *),
+       void *cb_data);
+
+void isci_task_build_abort_task_tmf(
        struct isci_tmf *tmf,
        struct isci_remote_device *isci_device,
        enum isci_tmf_function_codes code,