Browse Source

regmap: prevent division by zero in rbtree_show

If there are no nodes in the cache, nodes will be 0, so calculating
"registers / nodes" will cause division by zero.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
Stephen Warren 13 years ago
parent
commit
c04c1b9ee8
1 changed files with 7 additions and 1 deletions
  1. 7 1
      drivers/base/regmap/regcache-rbtree.c

+ 7 - 1
drivers/base/regmap/regcache-rbtree.c

@@ -138,6 +138,7 @@ static int rbtree_show(struct seq_file *s, void *ignored)
 	unsigned int base, top;
 	unsigned int base, top;
 	int nodes = 0;
 	int nodes = 0;
 	int registers = 0;
 	int registers = 0;
+	int average;
 
 
 	mutex_lock(&map->lock);
 	mutex_lock(&map->lock);
 
 
@@ -152,8 +153,13 @@ static int rbtree_show(struct seq_file *s, void *ignored)
 		registers += top - base + 1;
 		registers += top - base + 1;
 	}
 	}
 
 
+	if (nodes)
+		average = registers / nodes;
+	else
+		average = 0;
+
 	seq_printf(s, "%d nodes, %d registers, average %d registers\n",
 	seq_printf(s, "%d nodes, %d registers, average %d registers\n",
-		   nodes, registers, registers / nodes);
+		   nodes, registers, average);
 
 
 	mutex_unlock(&map->lock);
 	mutex_unlock(&map->lock);