25 lines · c
1#include <linux/dcache.h>2#include "internal.h"3 4unsigned 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;22out:23 return ~0U;24}25