SCSI: Pass the expected opcode to scsi_cdb_unmarshall()

Pass the opcode we expect to the unmarshalling function so it can do a basic
check that we are trying to unmarshalling the right kind of cdb.
This commit is contained in:
Ronnie Sahlberg
2012-11-20 19:16:42 -08:00
parent 890471c8cc
commit 4a973e9a4e
3 changed files with 7 additions and 3 deletions

View File

@@ -96,7 +96,7 @@ void read10_cb(struct iscsi_context *iscsi _U_, int status, void *command_data,
wt->rt = task;
wt->client = client;
read10_cdb = scsi_cdb_unmarshall(task);
read10_cdb = scsi_cdb_unmarshall(task, SCSI_OPCODE_READ10);
if (read10_cdb == NULL) {
printf("Failed to unmarshall READ10 CDB.\n");
exit(10);

View File

@@ -671,7 +671,7 @@ struct scsi_read10_cdb {
EXTERN int scsi_datain_getfullsize(struct scsi_task *task);
EXTERN void *scsi_datain_unmarshall(struct scsi_task *task);
EXTERN void *scsi_cdb_unmarshall(struct scsi_task *task);
EXTERN void *scsi_cdb_unmarshall(struct scsi_task *task, enum scsi_opcode opcode);
EXTERN struct scsi_task *scsi_cdb_read6(uint32_t lba, uint32_t xferlen, int blocksize);
EXTERN struct scsi_task *scsi_cdb_read10(uint32_t lba, uint32_t xferlen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group_number);

View File

@@ -2334,8 +2334,12 @@ scsi_read10_cdb_unmarshall(struct scsi_task *task)
}
void *
scsi_cdb_unmarshall(struct scsi_task *task)
scsi_cdb_unmarshall(struct scsi_task *task, enum scsi_opcode opcode)
{
if (task->cdb[0] != opcode) {
return NULL;
}
switch (task->cdb[0]) {
case SCSI_OPCODE_READ10:
return scsi_read10_cdb_unmarshall(task);