On Sun, 2018-07-15 at 18:16 -0500, Mike Christie wrote:
> The isid is 48 bits, and in hex string format it's 12 bytes.
> We are currently copying the 12 byte hex string to a u64
> so we can easily compare it, but this has the problem that
> only 8 bytes of the 12 bytes are copied.
> 
> The next patches will want to print se_session sess_bin_isid
> so this has us use hex2bin to when converting from the hex
> sting to the bin value.
  ^^^^^
  string?

Which spec defines that an ISID is 48 bits? All I know about SCSI registrations
is that these involve a transport ID and that that transport ID can be up to 228
bytes long for iSCSI.

>       if (isid != NULL) {
> -             pr_reg->pr_reg_bin_isid = get_unaligned_be64(isid);
> +             if (hex2bin((u8 *)&pr_reg->pr_reg_bin_isid, isid, 6)) {
> +                     pr_err("Invalid isid %s\n", isid);
> +                     goto free_reg;
> +             }

Why is it necessary to convert the ISID from hex to binary format? If this
conversion is necessary, isn't that something that should be handled by the
iSCSI target driver instead of the target core?

Thanks,

Bart.

Reply via email to