Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer"

Boaz Harrosh
2008-05-04T13:37:39Z

Stefan Richter wrote:
> On 4 May, Stefan Richter wrote:
>> Boaz Harrosh wrote:
>>> cmd->cmd_len is now guarantied to be set properly at all cases.
>>> And some commands you want to support will not be set correctly
>>> by COMMAND_SIZE().
> ...
>> --- linux.orig/drivers/ieee1394/sbp2.c
>> +++ linux/drivers/ieee1394/sbp2.c
> ...
>> memset(orb->cdb, 0, 12);

if you are at it?
- memset(orb->cdb, 0, 12);
+ memset(orb->cdb, 0, sizeof(orb->cdb));

>> - memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd));
>> + memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len);
> ...
>
> Wait a minute...
>
> drivers/ieee1394/sbp2.[ch] and drivers/firewire/fw-sbp2.c hardwire the
> maximum size of the command descriptor block (command_block field in the
> command block ORB as per SBP-2 clause 5.1.2) to 12 bytes.
>
> We need to use BLK_MAX_CDB there, don't we?
>
> (Besides, we should keep an eye on unit_characteristics.ORB_size as per
> SBP-2 clause 7.4.8, but that's another story.)

I'm not sure what you mean. But orb->cdb is 12 bytes, and setting max_cmd_len in
host template insures midlayer will never send a command bigger then that. So
->cmd_len will never be bigger then host->max_cmd_len. BLK_MAX_CDB should not
be used here.

But I don't see .max_cmd_len set in this file, is it set elsewhere?

Boaz