summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorPan Xinhui <xinhuix.pan@intel.com>2015-09-09 15:37:02 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-10 13:29:01 -0700
commitd21c3d4d1c6b2a0b85aeae5cc774b1bacc64e5b4 (patch)
treea31217219c5bfa59b21ad811984a9482da937e1b /lib
parent774636e19ed514cdf560006813c0473409616de8 (diff)
downloadlinux-stable-d21c3d4d1c6b2a0b85aeae5cc774b1bacc64e5b4.tar.gz
linux-stable-d21c3d4d1c6b2a0b85aeae5cc774b1bacc64e5b4.tar.bz2
linux-stable-d21c3d4d1c6b2a0b85aeae5cc774b1bacc64e5b4.zip
lib/bitmap.c: correct a code style and do some, optimization
We can avoid in-loop incrementation of ndigits. Save current totaldigits to ndigits before loop, and check ndigits against totaldigits after the loop. Signed-off-by: Pan Xinhui <xinhuix.pan@intel.com> Cc: Yury Norov <yury.norov@gmail.com> Cc: Chris Metcalf <cmetcalf@ezchip.com> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Cc: Sudeep Holla <sudeep.holla@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/bitmap.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/bitmap.c b/lib/bitmap.c
index a578a0189199..eb21456be4b9 100644
--- a/lib/bitmap.c
+++ b/lib/bitmap.c
@@ -367,7 +367,8 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
nchunks = nbits = totaldigits = c = 0;
do {
- chunk = ndigits = 0;
+ chunk = 0;
+ ndigits = totaldigits;
/* Get the next chunk of the bitmap */
while (buflen) {
@@ -406,9 +407,9 @@ int __bitmap_parse(const char *buf, unsigned int buflen,
return -EOVERFLOW;
chunk = (chunk << 4) | hex_to_bin(c);
- ndigits++; totaldigits++;
+ totaldigits++;
}
- if (ndigits == 0)
+ if (ndigits == totaldigits)
return -EINVAL;
if (nchunks == 0 && chunk == 0)
continue;