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: Bartosz Golaszewski <bgolaszewski@baylibre.com> Link: https://lore.kernel.org/r/20200629065008.27620-3-brgl@bgdev.pl Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
63160c0a7f
Коммит
dc2a633ccb
|
@ -89,15 +89,23 @@ static struct devres_group * node_to_group(struct devres_node *node)
|
|||
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,
|
||||
size_t size, gfp_t gfp, int nid)
|
||||
{
|
||||
size_t tot_size;
|
||||
struct devres *dr;
|
||||
|
||||
/* We must catch any near-SIZE_MAX cases that could overflow. */
|
||||
if (unlikely(check_add_overflow(sizeof(struct devres), size,
|
||||
&tot_size)))
|
||||
if (!check_dr_size(size, &tot_size))
|
||||
return NULL;
|
||||
|
||||
dr = kmalloc_node_track_caller(tot_size, gfp, nid);
|
||||
|
|
Загрузка…
Ссылка в новой задаче