OSDN Git Service

dm stats: fix divide by zero if 'number_of_areas' arg is zero
[uclinux-h8/linux.git] / drivers / md / dm-stats.c
index f478a4c..d1fd31a 100644 (file)
@@ -160,10 +160,7 @@ static void dm_kvfree(void *ptr, size_t alloc_size)
 
        free_shared_memory(alloc_size);
 
-       if (is_vmalloc_addr(ptr))
-               vfree(ptr);
-       else
-               kfree(ptr);
+       kvfree(ptr);
 }
 
 static void dm_stat_free(struct rcu_head *head)
@@ -795,6 +792,8 @@ static int message_stats_create(struct mapped_device *md,
                return -EINVAL;
 
        if (sscanf(argv[2], "/%u%c", &divisor, &dummy) == 1) {
+               if (!divisor)
+                       return -EINVAL;
                step = end - start;
                if (do_div(step, divisor))
                        step++;