aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorMing Lin <mlin@kernel.org>2015-03-30 02:11:30 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2015-04-08 02:27:58 -0400
commit2e1cd90d718a5fc721e0caa0dc9f037d9b1f46b8 (patch)
treedb299afd5e70126a52bba991a79bd2daffdf9957 /drivers/target
parent9e35eff449fc7c7106ea0fd64457afacf68f3bb3 (diff)
tcm_loop: fixup tpgt string to integer conversion
Currently, for example, mkdir "tpgt_xyz" doesn't return error. mkdir /sys/kernel/config/target/loopback/naa.60014055f195952b/tpgt_xyz Replace obsoleted simple_strtoul with kstrtoul and check the conversion. Signed-off-by: Ming Lin <mlin@kernel.org> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/loopback/tcm_loop.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c
index 797c7315f520..2114c1d2c9de 100644
--- a/drivers/target/loopback/tcm_loop.c
+++ b/drivers/target/loopback/tcm_loop.c
@@ -1216,21 +1216,19 @@ static struct se_portal_group *tcm_loop_make_naa_tpg(
1216 struct tcm_loop_hba *tl_hba = container_of(wwn, 1216 struct tcm_loop_hba *tl_hba = container_of(wwn,
1217 struct tcm_loop_hba, tl_hba_wwn); 1217 struct tcm_loop_hba, tl_hba_wwn);
1218 struct tcm_loop_tpg *tl_tpg; 1218 struct tcm_loop_tpg *tl_tpg;
1219 char *tpgt_str, *end_ptr;
1220 int ret; 1219 int ret;
1221 unsigned short int tpgt; 1220 unsigned long tpgt;
1222 1221
1223 tpgt_str = strstr(name, "tpgt_"); 1222 if (strstr(name, "tpgt_") != name) {
1224 if (!tpgt_str) {
1225 pr_err("Unable to locate \"tpgt_#\" directory" 1223 pr_err("Unable to locate \"tpgt_#\" directory"
1226 " group\n"); 1224 " group\n");
1227 return ERR_PTR(-EINVAL); 1225 return ERR_PTR(-EINVAL);
1228 } 1226 }
1229 tpgt_str += 5; /* Skip ahead of "tpgt_" */ 1227 if (kstrtoul(name+5, 10, &tpgt))
1230 tpgt = (unsigned short int) simple_strtoul(tpgt_str, &end_ptr, 0); 1228 return ERR_PTR(-EINVAL);
1231 1229
1232 if (tpgt >= TL_TPGS_PER_HBA) { 1230 if (tpgt >= TL_TPGS_PER_HBA) {
1233 pr_err("Passed tpgt: %hu exceeds TL_TPGS_PER_HBA:" 1231 pr_err("Passed tpgt: %lu exceeds TL_TPGS_PER_HBA:"
1234 " %u\n", tpgt, TL_TPGS_PER_HBA); 1232 " %u\n", tpgt, TL_TPGS_PER_HBA);
1235 return ERR_PTR(-EINVAL); 1233 return ERR_PTR(-EINVAL);
1236 } 1234 }
@@ -1247,7 +1245,7 @@ static struct se_portal_group *tcm_loop_make_naa_tpg(
1247 return ERR_PTR(-ENOMEM); 1245 return ERR_PTR(-ENOMEM);
1248 1246
1249 pr_debug("TCM_Loop_ConfigFS: Allocated Emulated %s" 1247 pr_debug("TCM_Loop_ConfigFS: Allocated Emulated %s"
1250 " Target Port %s,t,0x%04x\n", tcm_loop_dump_proto_id(tl_hba), 1248 " Target Port %s,t,0x%04lx\n", tcm_loop_dump_proto_id(tl_hba),
1251 config_item_name(&wwn->wwn_group.cg_item), tpgt); 1249 config_item_name(&wwn->wwn_group.cg_item), tpgt);
1252 1250
1253 return &tl_tpg->tl_se_tpg; 1251 return &tl_tpg->tl_se_tpg;