diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 030a98f0c452892e8298d955030da7e0254be221..5b74bdf159d6f202adfaaeb9aca60aa764319600 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -188,12 +188,10 @@ static inline unsigned fls_long(unsigned long l)
 
 static inline int get_count_order(unsigned int count)
 {
-	int order;
+	if (count == 0)
+		return -1;
 
-	order = fls(count) - 1;
-	if (count & (count - 1))
-		order++;
-	return order;
+	return fls(--count);
 }
 
 /**