in bus.c [1066:1094]
static ssize_t range_parse(const char *opt, size_t len, struct range *range)
{
unsigned long long addr = 0;
char *start, *end, *str;
ssize_t rc = -EINVAL;
str = kstrdup(opt, GFP_KERNEL);
if (!str)
return rc;
end = str;
start = strsep(&end, "-");
if (!start || !end)
goto err;
rc = kstrtoull(start, 16, &addr);
if (rc)
goto err;
range->start = addr;
rc = kstrtoull(end, 16, &addr);
if (rc)
goto err;
range->end = addr;
err:
kfree(str);
return rc;
}