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