lkml.org 
[lkml]   [2020]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 47/58] kernel: module: Use struct_size() helper
    Date
    From: Gustavo A. R. Silva <gustavo@embeddedor.com>

    commit 8d1b73dd25ff92c3fa9807a20c22fa2b44c07336 upstream.

    One of the more common cases of allocation size calculations is finding
    the size of a structure that has a zero-sized array at the end, along
    with memory for some number of elements for that array. For example:

    struct module_sect_attrs {
    ...
    struct module_sect_attr attrs[0];
    };

    Make use of the struct_size() helper instead of an open-coded version
    in order to avoid any potential type mistakes.

    So, replace the following form:

    sizeof(*sect_attrs) + nloaded * sizeof(sect_attrs->attrs[0]

    with:

    struct_size(sect_attrs, attrs, nloaded)

    This code was detected with the help of Coccinelle.

    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Jessica Yu <jeyu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    kernel/module.c | 3 +--
    1 file changed, 1 insertion(+), 2 deletions(-)

    --- a/kernel/module.c
    +++ b/kernel/module.c
    @@ -1491,8 +1491,7 @@ static void add_sect_attrs(struct module
    for (i = 0; i < info->hdr->e_shnum; i++)
    if (!sect_empty(&info->sechdrs[i]))
    nloaded++;
    - size[0] = ALIGN(sizeof(*sect_attrs)
    - + nloaded * sizeof(sect_attrs->attrs[0]),
    + size[0] = ALIGN(struct_size(sect_attrs, attrs, nloaded),
    sizeof(sect_attrs->grp.attrs[0]));
    size[1] = (nloaded + 1) * sizeof(sect_attrs->grp.attrs[0]);
    sect_attrs = kzalloc(size[0] + size[1], GFP_KERNEL);

    \
     
     \ /
      Last update: 2020-07-14 20:48    [W:4.869 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site