iscsi-target: kstrtou* configfs attribute parameter cleanups

This patch includes the conversion of iscsi-target configfs
attributes for NetworkPortal, NodeACL, TPG, IQN and Discovery
groups to use kstrtou*() instead of simple_strtou*().

It also cleans up new-line usage during iscsi_tpg_param_store_##name
to use isspace().

Signed-off-by: Joern Engel <joern@logfs.org>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
Jörn Engel 2013-07-03 11:35:11 -04:00 committed by Nicholas Bellinger
parent 37b32c6faf
commit ad7babd237

View file

@ -20,6 +20,7 @@
****************************************************************************/ ****************************************************************************/
#include <linux/configfs.h> #include <linux/configfs.h>
#include <linux/ctype.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/inet.h> #include <linux/inet.h>
#include <target/target_core_base.h> #include <target/target_core_base.h>
@ -78,11 +79,12 @@ static ssize_t lio_target_np_store_sctp(
struct iscsi_tpg_np *tpg_np = container_of(se_tpg_np, struct iscsi_tpg_np *tpg_np = container_of(se_tpg_np,
struct iscsi_tpg_np, se_tpg_np); struct iscsi_tpg_np, se_tpg_np);
struct iscsi_tpg_np *tpg_np_sctp = NULL; struct iscsi_tpg_np *tpg_np_sctp = NULL;
char *endptr;
u32 op; u32 op;
int ret; int ret;
op = simple_strtoul(page, &endptr, 0); ret = kstrtou32(page, 0, &op);
if (ret)
return ret;
if ((op != 1) && (op != 0)) { if ((op != 1) && (op != 0)) {
pr_err("Illegal value for tpg_enable: %u\n", op); pr_err("Illegal value for tpg_enable: %u\n", op);
return -EINVAL; return -EINVAL;
@ -381,11 +383,12 @@ static ssize_t iscsi_nacl_attrib_store_##name( \
{ \ { \
struct iscsi_node_acl *nacl = container_of(se_nacl, struct iscsi_node_acl, \ struct iscsi_node_acl *nacl = container_of(se_nacl, struct iscsi_node_acl, \
se_node_acl); \ se_node_acl); \
char *endptr; \
u32 val; \ u32 val; \
int ret; \ int ret; \
\ \
val = simple_strtoul(page, &endptr, 0); \ ret = kstrtou32(page, 0, &val); \
if (ret) \
return ret; \
ret = iscsit_na_##name(nacl, val); \ ret = iscsit_na_##name(nacl, val); \
if (ret < 0) \ if (ret < 0) \
return ret; \ return ret; \
@ -788,11 +791,12 @@ static ssize_t lio_target_nacl_store_cmdsn_depth(
struct iscsi_portal_group *tpg = container_of(se_tpg, struct iscsi_portal_group *tpg = container_of(se_tpg,
struct iscsi_portal_group, tpg_se_tpg); struct iscsi_portal_group, tpg_se_tpg);
struct config_item *acl_ci, *tpg_ci, *wwn_ci; struct config_item *acl_ci, *tpg_ci, *wwn_ci;
char *endptr;
u32 cmdsn_depth = 0; u32 cmdsn_depth = 0;
int ret; int ret;
cmdsn_depth = simple_strtoul(page, &endptr, 0); ret = kstrtou32(page, 0, &cmdsn_depth);
if (ret)
return ret;
if (cmdsn_depth > TA_DEFAULT_CMDSN_DEPTH_MAX) { if (cmdsn_depth > TA_DEFAULT_CMDSN_DEPTH_MAX) {
pr_err("Passed cmdsn_depth: %u exceeds" pr_err("Passed cmdsn_depth: %u exceeds"
" TA_DEFAULT_CMDSN_DEPTH_MAX: %u\n", cmdsn_depth, " TA_DEFAULT_CMDSN_DEPTH_MAX: %u\n", cmdsn_depth,
@ -976,14 +980,15 @@ static ssize_t iscsi_tpg_attrib_store_##name( \
{ \ { \
struct iscsi_portal_group *tpg = container_of(se_tpg, \ struct iscsi_portal_group *tpg = container_of(se_tpg, \
struct iscsi_portal_group, tpg_se_tpg); \ struct iscsi_portal_group, tpg_se_tpg); \
char *endptr; \
u32 val; \ u32 val; \
int ret; \ int ret; \
\ \
if (iscsit_get_tpg(tpg) < 0) \ if (iscsit_get_tpg(tpg) < 0) \
return -EINVAL; \ return -EINVAL; \
\ \
val = simple_strtoul(page, &endptr, 0); \ ret = kstrtou32(page, 0, &val); \
if (ret) \
goto out; \
ret = iscsit_ta_##name(tpg, val); \ ret = iscsit_ta_##name(tpg, val); \
if (ret < 0) \ if (ret < 0) \
goto out; \ goto out; \
@ -1211,13 +1216,14 @@ static ssize_t iscsi_tpg_param_store_##name( \
struct iscsi_portal_group *tpg = container_of(se_tpg, \ struct iscsi_portal_group *tpg = container_of(se_tpg, \
struct iscsi_portal_group, tpg_se_tpg); \ struct iscsi_portal_group, tpg_se_tpg); \
char *buf; \ char *buf; \
int ret; \ int ret, len; \
\ \
buf = kzalloc(PAGE_SIZE, GFP_KERNEL); \ buf = kzalloc(PAGE_SIZE, GFP_KERNEL); \
if (!buf) \ if (!buf) \
return -ENOMEM; \ return -ENOMEM; \
snprintf(buf, PAGE_SIZE, "%s=%s", __stringify(name), page); \ len = snprintf(buf, PAGE_SIZE, "%s=%s", __stringify(name), page); \
buf[strlen(buf)-1] = '\0'; /* Kill newline */ \ if (isspace(buf[len-1])) \
buf[len-1] = '\0'; /* Kill newline */ \
\ \
if (iscsit_get_tpg(tpg) < 0) { \ if (iscsit_get_tpg(tpg) < 0) { \
kfree(buf); \ kfree(buf); \
@ -1354,11 +1360,12 @@ static ssize_t lio_target_tpg_store_enable(
{ {
struct iscsi_portal_group *tpg = container_of(se_tpg, struct iscsi_portal_group *tpg = container_of(se_tpg,
struct iscsi_portal_group, tpg_se_tpg); struct iscsi_portal_group, tpg_se_tpg);
char *endptr;
u32 op; u32 op;
int ret = 0; int ret;
op = simple_strtoul(page, &endptr, 0); ret = kstrtou32(page, 0, &op);
if (ret)
return ret;
if ((op != 1) && (op != 0)) { if ((op != 1) && (op != 0)) {
pr_err("Illegal value for tpg_enable: %u\n", op); pr_err("Illegal value for tpg_enable: %u\n", op);
return -EINVAL; return -EINVAL;
@ -1406,15 +1413,15 @@ static struct se_portal_group *lio_target_tiqn_addtpg(
{ {
struct iscsi_portal_group *tpg; struct iscsi_portal_group *tpg;
struct iscsi_tiqn *tiqn; struct iscsi_tiqn *tiqn;
char *tpgt_str, *end_ptr; char *tpgt_str;
int ret = 0; int ret;
unsigned short int tpgt; u16 tpgt;
tiqn = container_of(wwn, struct iscsi_tiqn, tiqn_wwn); tiqn = container_of(wwn, struct iscsi_tiqn, tiqn_wwn);
/* /*
* Only tpgt_# directory groups can be created below * Only tpgt_# directory groups can be created below
* target/iscsi/iqn.superturodiskarry/ * target/iscsi/iqn.superturodiskarry/
*/ */
tpgt_str = strstr(name, "tpgt_"); tpgt_str = strstr(name, "tpgt_");
if (!tpgt_str) { if (!tpgt_str) {
pr_err("Unable to locate \"tpgt_#\" directory" pr_err("Unable to locate \"tpgt_#\" directory"
@ -1422,7 +1429,9 @@ static struct se_portal_group *lio_target_tiqn_addtpg(
return NULL; return NULL;
} }
tpgt_str += 5; /* Skip ahead of "tpgt_" */ tpgt_str += 5; /* Skip ahead of "tpgt_" */
tpgt = (unsigned short int) simple_strtoul(tpgt_str, &end_ptr, 0); ret = kstrtou16(tpgt_str, 0, &tpgt);
if (ret)
return NULL;
tpg = iscsit_alloc_portal_group(tiqn, tpgt); tpg = iscsit_alloc_portal_group(tiqn, tpgt);
if (!tpg) if (!tpg)
@ -1630,10 +1639,12 @@ static ssize_t iscsi_disc_store_enforce_discovery_auth(
{ {
struct iscsi_param *param; struct iscsi_param *param;
struct iscsi_portal_group *discovery_tpg = iscsit_global->discovery_tpg; struct iscsi_portal_group *discovery_tpg = iscsit_global->discovery_tpg;
char *endptr;
u32 op; u32 op;
int err;
op = simple_strtoul(page, &endptr, 0); err = kstrtou32(page, 0, &op);
if (err)
return -EINVAL;
if ((op != 1) && (op != 0)) { if ((op != 1) && (op != 0)) {
pr_err("Illegal value for enforce_discovery_auth:" pr_err("Illegal value for enforce_discovery_auth:"
" %u\n", op); " %u\n", op);