18c2ecf20Sopenharmony_ci#include <linux/dcache.h> 28c2ecf20Sopenharmony_ci#include "internal.h" 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ciunsigned name_to_int(const struct qstr *qstr) 58c2ecf20Sopenharmony_ci{ 68c2ecf20Sopenharmony_ci const char *name = qstr->name; 78c2ecf20Sopenharmony_ci int len = qstr->len; 88c2ecf20Sopenharmony_ci unsigned n = 0; 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci if (len > 1 && *name == '0') 118c2ecf20Sopenharmony_ci goto out; 128c2ecf20Sopenharmony_ci do { 138c2ecf20Sopenharmony_ci unsigned c = *name++ - '0'; 148c2ecf20Sopenharmony_ci if (c > 9) 158c2ecf20Sopenharmony_ci goto out; 168c2ecf20Sopenharmony_ci if (n >= (~0U-9)/10) 178c2ecf20Sopenharmony_ci goto out; 188c2ecf20Sopenharmony_ci n *= 10; 198c2ecf20Sopenharmony_ci n += c; 208c2ecf20Sopenharmony_ci } while (--len > 0); 218c2ecf20Sopenharmony_ci return n; 228c2ecf20Sopenharmony_ciout: 238c2ecf20Sopenharmony_ci return ~0U; 248c2ecf20Sopenharmony_ci} 25