xref: /openbmc/linux/fs/proc/util.c (revision e2ad626f)
1 #include <linux/dcache.h>
2 #include "internal.h"
3 
4 unsigned name_to_int(const struct qstr *qstr)
5 {
6 	const char *name = qstr->name;
7 	int len = qstr->len;
8 	unsigned n = 0;
9 
10 	if (len > 1 && *name == '0')
11 		goto out;
12 	do {
13 		unsigned c = *name++ - '0';
14 		if (c > 9)
15 			goto out;
16 		if (n >= (~0U-9)/10)
17 			goto out;
18 		n *= 10;
19 		n += c;
20 	} while (--len > 0);
21 	return n;
22 out:
23 	return ~0U;
24 }
25