lkml.org 
[lkml]   [2020]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/6] devres: move the size check from alloc_dr() into a separate function
    Date
    From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

    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>
    ---
    drivers/base/devres.c | 14 +++++++++++---
    1 file changed, 11 insertions(+), 3 deletions(-)

    diff --git a/drivers/base/devres.c b/drivers/base/devres.c
    index c34327219c34..1df1fb10b2d9 100644
    --- a/drivers/base/devres.c
    +++ b/drivers/base/devres.c
    @@ -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);
    --
    2.26.1
    \
     
     \ /
      Last update: 2020-06-29 23:08    [W:3.015 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site