pr_err("pSCSI: blk_make_request() failed\n");
                        goto fail;
                }
-
-               if (task->task_sg_bidi) {
-                       /*
-                        * If present, set up the extra BIDI-COMMAND SCSI READ
-                        * struct request and payload.
-                        */
-                       ret = pscsi_map_sg(task, task->task_sg_bidi, &hbio);
-                       if (ret < 0) {
-                               /* XXX: free the main request? */
-                               return PYX_TRANSPORT_LU_COMM_FAILURE;
-                       }
-
-                       /*
-                        * Setup the secondary pt->pscsi_req->next_rq used for the extra
-                        * BIDI READ payload.
-                        */
-                       req->next_rq = blk_make_request(pdv->pdv_sd->request_queue,
-                                                       hbio, GFP_KERNEL);
-                       if (!req) {
-                               pr_err("pSCSI: blk_make_request() failed for BIDI\n");
-                               /* XXX: free the main request? */
-                               goto fail;
-                       }
-
-                       req->next_rq->cmd_type = REQ_TYPE_BLOCK_PC;
-               }
        }
 
        req->cmd_type = REQ_TYPE_BLOCK_PC;
        pt->pscsi_resid = req->resid_len;
 
        pscsi_process_SAM_status(task, pt);
-       /*
-        * Release BIDI-READ if present
-        */
-       if (req->next_rq != NULL)
-               __blk_put_request(req->q, req->next_rq);
-
        __blk_put_request(req->q, req);
 }
 
 
                size = transport_get_size(sectors, cdb, cmd);
                cmd->t_task_lba = transport_lba_32(cdb);
                cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
-               passthrough = (dev->transport->transport_type ==
-                               TRANSPORT_PLUGIN_PHBA_PDEV);
-               /*
-                * Skip the remaining assignments for TCM/PSCSI passthrough
-                */
-               if (passthrough)
-                       break;
+
+               if (dev->transport->transport_type ==
+                               TRANSPORT_PLUGIN_PHBA_PDEV)
+                       goto out_unsupported_cdb;
                /*
                 * Setup BIDI XOR callback to be run after I/O completion.
                 */
                        cmd->t_task_lba = transport_lba_64_ext(cdb);
                        cmd->se_cmd_flags |= SCF_SCSI_DATA_SG_IO_CDB;
 
-                       /*
-                        * Skip the remaining assignments for TCM/PSCSI passthrough
-                        */
                        if (passthrough)
-                               break;
-
+                               goto out_unsupported_cdb;
                        /*
                         * Setup BIDI XOR callback to be run during after I/O
                         * completion.
                 */
                del_timer_sync(&task->task_timer);
 
-               kfree(task->task_sg_bidi);
                kfree(task->task_sg);
 
                list_del(&task->t_list);