diff options
author | 2013-12-17 09:18:47 +0100 | |
---|---|---|
committer | 2013-12-17 11:05:33 -0800 | |
commit | 03ba84ca95a84dba9b42492edd2632dc3c7eb359 (patch) | |
tree | a19747e4c25e7eb33b33eb077903f38897b66e69 /drivers/target/target_core_spc.c | |
parent | target_core_alua: Use workqueue for ALUA transitioning (diff) | |
download | linux-03ba84ca95a84dba9b42492edd2632dc3c7eb359.tar.gz linux-03ba84ca95a84dba9b42492edd2632dc3c7eb359.tar.bz2 linux-03ba84ca95a84dba9b42492edd2632dc3c7eb359.zip |
target_core: simplify scsi_name_len calculation
scsi_name_len in spc_emulate_evpd_83 is calculated twice, with
the results of the first calculation discarded. So remove it.
And check for the maximum allowed length, too.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/target_core_spc.c')
-rw-r--r-- | drivers/target/target_core_spc.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c index 021c3f4a4f00..603c41105aa7 100644 --- a/drivers/target/target_core_spc.c +++ b/drivers/target/target_core_spc.c @@ -365,16 +365,6 @@ check_lu_gp: * section 7.5.1 Table 362 */ check_scsi_name: - scsi_name_len = strlen(tpg->se_tpg_tfo->tpg_get_wwn(tpg)); - /* UTF-8 ",t,0x<16-bit TPGT>" + NULL Terminator */ - scsi_name_len += 10; - /* Check for 4-byte padding */ - padding = ((-scsi_name_len) & 3); - if (padding != 0) - scsi_name_len += padding; - /* Header size + Designation descriptor */ - scsi_name_len += 4; - buf[off] = (tpg->se_tpg_tfo->get_fabric_proto_ident(tpg) << 4); buf[off++] |= 0x3; /* CODE SET == UTF-8 */ @@ -402,8 +392,11 @@ check_scsi_name: * shall be no larger than 256 and shall be a multiple * of four. */ + padding = ((-scsi_name_len) & 3); if (padding) scsi_name_len += padding; + if (scsi_name_len > 256) + scsi_name_len = 256; buf[off-1] = scsi_name_len; off += scsi_name_len; |