Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame^] | 1 | #include <linux/dcache.h> |
2 | |||||
3 | unsigned name_to_int(const struct qstr *qstr) | ||||
4 | { | ||||
5 | const char *name = qstr->name; | ||||
6 | int len = qstr->len; | ||||
7 | unsigned n = 0; | ||||
8 | |||||
9 | if (len > 1 && *name == '0') | ||||
10 | goto out; | ||||
11 | do { | ||||
12 | unsigned c = *name++ - '0'; | ||||
13 | if (c > 9) | ||||
14 | goto out; | ||||
15 | if (n >= (~0U-9)/10) | ||||
16 | goto out; | ||||
17 | n *= 10; | ||||
18 | n += c; | ||||
19 | } while (--len > 0); | ||||
20 | return n; | ||||
21 | out: | ||||
22 | return ~0U; | ||||
23 | } |