Commit dc2a633c authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Greg Kroah-Hartman

devres: move the size check from alloc_dr() into a separate function

We will perform the same size check in devm_krealloc(). Move the relevant
code into a separate helper.
Signed-off-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
Link: https://lore.kernel.org/r/20200629065008.27620-3-brgl@bgdev.plSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 63160c0a
...@@ -89,15 +89,23 @@ static struct devres_group * node_to_group(struct devres_node *node) ...@@ -89,15 +89,23 @@ static struct devres_group * node_to_group(struct devres_node *node)
return NULL; return NULL;
} }
static bool check_dr_size(size_t size, size_t *tot_size)
{
/* We must catch any near-SIZE_MAX cases that could overflow. */
if (unlikely(check_add_overflow(sizeof(struct devres),
size, tot_size)))
return false;
return true;
}
static __always_inline struct devres * alloc_dr(dr_release_t release, static __always_inline struct devres * alloc_dr(dr_release_t release,
size_t size, gfp_t gfp, int nid) size_t size, gfp_t gfp, int nid)
{ {
size_t tot_size; size_t tot_size;
struct devres *dr; struct devres *dr;
/* We must catch any near-SIZE_MAX cases that could overflow. */ if (!check_dr_size(size, &tot_size))
if (unlikely(check_add_overflow(sizeof(struct devres), size,
&tot_size)))
return NULL; return NULL;
dr = kmalloc_node_track_caller(tot_size, gfp, nid); dr = kmalloc_node_track_caller(tot_size, gfp, nid);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment