Unverified Commit 540c53d1 authored by Mark Brown's avatar Mark Brown
Browse files

regmap: Switch to use kmemdup_array()

Merge series from Andy Shevchenko <andriy.shevchenko@linux.intel.com>:

Replace open coded kmemdup_array(), which does an additional
overflow check.

While at it, fix one minor issue in regcache.c.
parents f82ecf76 bce84306
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -132,8 +132,8 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min,
			lower_index = mas.index;
			lower_last = min -1;

			lower = kmemdup(entry, ((min - mas.index) *
						sizeof(unsigned long)),
			lower = kmemdup_array(entry,
					      min - mas.index, sizeof(*lower),
					      map->alloc_flags);
			if (!lower) {
				ret = -ENOMEM;
@@ -145,9 +145,8 @@ static int regcache_maple_drop(struct regmap *map, unsigned int min,
			upper_index = max + 1;
			upper_last = mas.last;

			upper = kmemdup(&entry[max - mas.index + 1],
					((mas.last - max) *
					 sizeof(unsigned long)),
			upper = kmemdup_array(&entry[max - mas.index + 1],
					      mas.last - max, sizeof(*upper),
					      map->alloc_flags);
			if (!upper) {
				ret = -ENOMEM;
+3 −3
Original line number Diff line number Diff line
@@ -170,8 +170,8 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
	 * a copy of it.
	 */
	if (config->reg_defaults) {
		tmp_buf = kmemdup(config->reg_defaults, map->num_reg_defaults *
				  sizeof(struct reg_default), GFP_KERNEL);
		tmp_buf = kmemdup_array(config->reg_defaults, map->num_reg_defaults,
					sizeof(*map->reg_defaults), GFP_KERNEL);
		if (!tmp_buf)
			return -ENOMEM;
		map->reg_defaults = tmp_buf;
@@ -407,7 +407,7 @@ int regcache_sync(struct regmap *map)
	 * have gone out of sync, force writes of all the paging
	 * registers.
	 */
	rb_for_each(node, 0, &map->range_tree, rbtree_all) {
	rb_for_each(node, NULL, &map->range_tree, rbtree_all) {
		struct regmap_range_node *this =
			rb_entry(node, struct regmap_range_node, node);

+1 −1
Original line number Diff line number Diff line
@@ -2347,7 +2347,7 @@ int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,
	} else {
		void *wval;

		wval = kmemdup(val, val_count * val_bytes, map->alloc_flags);
		wval = kmemdup_array(val, val_count, val_bytes, map->alloc_flags);
		if (!wval)
			return -ENOMEM;