| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [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 | } | ||||