diff options
| author | Alexey Dobriyan <[email protected]> | 2017-11-17 23:26:52 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2017-11-18 00:10:00 +0000 |
| commit | 0746a0bc6e6e76444098cf944848554d21d28cae (patch) | |
| tree | 2287ccc2e1964153844f291052820e69f6c115a8 | |
| parent | proc: : uninline name_to_int() (diff) | |
| download | kernel-0746a0bc6e6e76444098cf944848554d21d28cae.tar.gz kernel-0746a0bc6e6e76444098cf944848554d21d28cae.zip | |
proc: use do-while in name_to_int()
Gcc doesn't know that "len" is guaranteed to be >=1 by dcache and
generates standard while-loop prologue duplicating loop condition.
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-27 (-27)
function old new delta
name_to_int 104 77 -27
Link: http://lkml.kernel.org/r/20170912195213.GB17730@avx2
Signed-off-by: Alexey Dobriyan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
| -rw-r--r-- | fs/proc/util.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/proc/util.c b/fs/proc/util.c index c29aa497394b..b161cfa0f9fa 100644 --- a/fs/proc/util.c +++ b/fs/proc/util.c @@ -8,7 +8,7 @@ unsigned name_to_int(const struct qstr *qstr) if (len > 1 && *name == '0') goto out; - while (len-- > 0) { + do { unsigned c = *name++ - '0'; if (c > 9) goto out; @@ -16,7 +16,7 @@ unsigned name_to_int(const struct qstr *qstr) goto out; n *= 10; n += c; - } + } while (--len > 0); return n; out: return ~0U; |
