mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 16:20:53 +07:00
netconsole: switch to kstrto*() functions
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0693e88e6c
commit
99f823f98f
@ -241,34 +241,6 @@ static struct netconsole_target *to_target(struct config_item *item)
|
||||
NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wrapper over simple_strtol (base 10) with sanity and range checking.
|
||||
* We return (signed) long only because we may want to return errors.
|
||||
* Do not use this to convert numbers that are allowed to be negative.
|
||||
*/
|
||||
static long strtol10_check_range(const char *cp, long min, long max)
|
||||
{
|
||||
long ret;
|
||||
char *p = (char *) cp;
|
||||
|
||||
WARN_ON(min < 0);
|
||||
WARN_ON(max < min);
|
||||
|
||||
ret = simple_strtol(p, &p, 10);
|
||||
|
||||
if (*p && (*p != '\n')) {
|
||||
printk(KERN_ERR "netconsole: invalid input\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((ret < min) || (ret > max)) {
|
||||
printk(KERN_ERR "netconsole: input %ld must be between "
|
||||
"%ld and %ld\n", ret, min, max);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attribute operations for netconsole_target.
|
||||
*/
|
||||
@ -327,12 +299,14 @@ static ssize_t store_enabled(struct netconsole_target *nt,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
int enabled;
|
||||
int err;
|
||||
long enabled;
|
||||
|
||||
enabled = strtol10_check_range(buf, 0, 1);
|
||||
if (enabled < 0)
|
||||
return enabled;
|
||||
err = kstrtoint(buf, 10, &enabled);
|
||||
if (err < 0)
|
||||
return err;
|
||||
if (enabled < 0 || enabled > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (enabled) { /* 1 */
|
||||
|
||||
@ -384,8 +358,7 @@ static ssize_t store_local_port(struct netconsole_target *nt,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
long local_port;
|
||||
#define __U16_MAX ((__u16) ~0U)
|
||||
int rv;
|
||||
|
||||
if (nt->enabled) {
|
||||
printk(KERN_ERR "netconsole: target (%s) is enabled, "
|
||||
@ -394,12 +367,9 @@ static ssize_t store_local_port(struct netconsole_target *nt,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
local_port = strtol10_check_range(buf, 0, __U16_MAX);
|
||||
if (local_port < 0)
|
||||
return local_port;
|
||||
|
||||
nt->np.local_port = local_port;
|
||||
|
||||
rv = kstrtou16(buf, 10, &nt->np.local_port);
|
||||
if (rv < 0)
|
||||
return rv;
|
||||
return strnlen(buf, count);
|
||||
}
|
||||
|
||||
@ -407,8 +377,7 @@ static ssize_t store_remote_port(struct netconsole_target *nt,
|
||||
const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
long remote_port;
|
||||
#define __U16_MAX ((__u16) ~0U)
|
||||
int rv;
|
||||
|
||||
if (nt->enabled) {
|
||||
printk(KERN_ERR "netconsole: target (%s) is enabled, "
|
||||
@ -417,12 +386,9 @@ static ssize_t store_remote_port(struct netconsole_target *nt,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
remote_port = strtol10_check_range(buf, 0, __U16_MAX);
|
||||
if (remote_port < 0)
|
||||
return remote_port;
|
||||
|
||||
nt->np.remote_port = remote_port;
|
||||
|
||||
rv = kstrtou16(buf, 10, &nt->np.remote_port);
|
||||
if (rv < 0)
|
||||
return rv;
|
||||
return strnlen(buf, count);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user