diff options
| -rw-r--r-- | drivers/md/dm-raid1.c | 3 | ||||
| -rw-r--r-- | drivers/md/dm-stripe.c | 4 | ||||
| -rw-r--r-- | drivers/md/dm.h | 9 | ||||
| -rw-r--r-- | include/linux/device-mapper.h | 3 | 
4 files changed, 5 insertions, 14 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 29913e42c4a..ecfd82169cb 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c @@ -1315,9 +1315,6 @@ static struct mirror_set *alloc_context(unsigned int nr_mirrors,  	size_t len;  	struct mirror_set *ms = NULL; -	if (array_too_big(sizeof(*ms), sizeof(ms->mirror[0]), nr_mirrors)) -		return NULL; -  	len = sizeof(*ms) + (sizeof(ms->mirror[0]) * nr_mirrors);  	ms = kzalloc(len, GFP_KERNEL); diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c index b745d8ac625..287e2458473 100644 --- a/drivers/md/dm-stripe.c +++ b/drivers/md/dm-stripe.c @@ -60,8 +60,8 @@ static inline struct stripe_c *alloc_context(unsigned int stripes)  {  	size_t len; -	if (array_too_big(sizeof(struct stripe_c), sizeof(struct stripe), -			  stripes)) +	if (dm_array_too_big(sizeof(struct stripe_c), sizeof(struct stripe), +			     stripes))  		return NULL;  	len = sizeof(struct stripe_c) + (sizeof(struct stripe) * stripes); diff --git a/drivers/md/dm.h b/drivers/md/dm.h index cd189da2b2f..0ade60cdef4 100644 --- a/drivers/md/dm.h +++ b/drivers/md/dm.h @@ -62,15 +62,6 @@ void dm_put_target_type(struct target_type *t);  int dm_target_iterate(void (*iter_func)(struct target_type *tt,  					void *param), void *param); -/*----------------------------------------------------------------- - * Useful inlines. - *---------------------------------------------------------------*/ -static inline int array_too_big(unsigned long fixed, unsigned long obj, -				unsigned long num) -{ -	return (num > (ULONG_MAX - fixed) / obj); -} -  int dm_split_args(int *argc, char ***argvp, char *input);  /* diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 08d783592b7..dfb30db475e 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -354,6 +354,9 @@ void *dm_vcalloc(unsigned long nmemb, unsigned long elem_size);   */  #define dm_round_up(n, sz) (dm_div_up((n), (sz)) * (sz)) +#define dm_array_too_big(fixed, obj, num) \ +	((num) > (UINT_MAX - (fixed)) / (obj)) +  static inline sector_t to_sector(unsigned long n)  {  	return (n >> SECTOR_SHIFT);  |