kstrtoul() is better because simple_strtoul() ignores overflow which may lead to unexpected results. Signed-off-by: Su Hui <suhui@xxxxxxxxxxxx> --- fs/afs/addr_prefs.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/afs/addr_prefs.c b/fs/afs/addr_prefs.c index c0384201b8fe..ae4f4b371882 100644 --- a/fs/afs/addr_prefs.c +++ b/fs/afs/addr_prefs.c @@ -118,7 +118,10 @@ static int afs_parse_address(char *p, struct afs_addr_preference *pref) if (*p == '/') { p++; - tmp = simple_strtoul(p, &p, 10); + if (kstrtoul(p, 10, &tmp)) { + pr_warn("Invalid address\n"); + return -EINVAL; + } if (tmp > mask) { pr_warn("Subnet mask too large\n"); return -EINVAL; @@ -130,11 +133,6 @@ static int afs_parse_address(char *p, struct afs_addr_preference *pref) mask = tmp; } - if (*p) { - pr_warn("Invalid address\n"); - return -EINVAL; - } - pref->subnet_mask = mask; return 0; } -- 2.30.2