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