diff --git a/src/add-ons/kernel/bus_managers/scsi/device_scan.c b/src/add-ons/kernel/bus_managers/scsi/device_scan.c index 92a7e390fd..0ef7abd3f0 100644 --- a/src/add-ons/kernel/bus_managers/scsi/device_scan.c +++ b/src/add-ons/kernel/bus_managers/scsi/device_scan.c @@ -39,7 +39,7 @@ scsi_scan_send_tur(scsi_ccb *worker_req) worker_req->cdb_length = sizeof(*cmd); worker_req->timeout = 0; worker_req->sort = -1; - worker_req->flags = 0; + worker_req->flags = SCSI_DIR_NONE; scsi_sync_io( worker_req ); diff --git a/src/add-ons/kernel/drivers/bus/scsi/scsi_raw.c b/src/add-ons/kernel/drivers/bus/scsi/scsi_raw.c index 632368cf58..c3aa84e46e 100644 --- a/src/add-ons/kernel/drivers/bus/scsi/scsi_raw.c +++ b/src/add-ons/kernel/drivers/bus/scsi/scsi_raw.c @@ -84,8 +84,10 @@ raw_command(raw_device_info *device, raw_device_command *cmd) if (cmd->flags & B_RAW_DEVICE_DATA_IN) request->flags |= SCSI_DIR_IN; - else + else if (cmd->data_length) request->flags |= SCSI_DIR_OUT; + else + request->flags |= SCSI_DIR_NONE; request->data = cmd->data; request->sg_list = NULL; diff --git a/src/add-ons/kernel/generic/scsi_periph/io.c b/src/add-ons/kernel/generic/scsi_periph/io.c index a3201d1d72..dff7645662 100644 --- a/src/add-ons/kernel/generic/scsi_periph/io.c +++ b/src/add-ons/kernel/generic/scsi_periph/io.c @@ -228,10 +228,12 @@ raw_command(scsi_periph_device_info *device, raw_device_command *cmd) request->flags = 0; - if (cmd->flags & B_RAW_DEVICE_DATA_IN) + if (cmd->flags & B_RAW_DEVICE_DATA_IN) request->flags |= SCSI_DIR_IN; - else + else if (cmd->data_length) request->flags |= SCSI_DIR_OUT; + else + request->flags |= SCSI_DIR_NONE; request->data = cmd->data; request->sg_list = NULL;