lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.20 197/352] livepatch: check kzalloc return values
    Date
    4.20-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit 5f30b2e823484ce6a79f2b59901b6351c15effa6 ]

    kzalloc() return should always be checked - notably in example code
    where this may be seen as reference. On failure of allocation in
    livepatch_fix1_dummy_alloc() respectively dummy_alloc() previous
    allocation is freed (thanks to Petr Mladek <pmladek@suse.com> for
    catching this) and NULL returned.

    Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
    Fixes: 439e7271dc2b ("livepatch: introduce shadow variable API")
    Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Acked-by: Miroslav Benes <mbenes@suse.cz>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    samples/livepatch/livepatch-shadow-fix1.c | 5 +++++
    samples/livepatch/livepatch-shadow-mod.c | 4 ++++
    2 files changed, 9 insertions(+)

    diff --git a/samples/livepatch/livepatch-shadow-fix1.c b/samples/livepatch/livepatch-shadow-fix1.c
    index 49b13553eaae..e8f1bd6b29b1 100644
    --- a/samples/livepatch/livepatch-shadow-fix1.c
    +++ b/samples/livepatch/livepatch-shadow-fix1.c
    @@ -89,6 +89,11 @@ struct dummy *livepatch_fix1_dummy_alloc(void)
    * pointer to handle resource release.
    */
    leak = kzalloc(sizeof(int), GFP_KERNEL);
    + if (!leak) {
    + kfree(d);
    + return NULL;
    + }
    +
    klp_shadow_alloc(d, SV_LEAK, sizeof(leak), GFP_KERNEL,
    shadow_leak_ctor, leak);

    diff --git a/samples/livepatch/livepatch-shadow-mod.c b/samples/livepatch/livepatch-shadow-mod.c
    index 4c54b250332d..4aa8a88d3cd6 100644
    --- a/samples/livepatch/livepatch-shadow-mod.c
    +++ b/samples/livepatch/livepatch-shadow-mod.c
    @@ -118,6 +118,10 @@ noinline struct dummy *dummy_alloc(void)

    /* Oops, forgot to save leak! */
    leak = kzalloc(sizeof(int), GFP_KERNEL);
    + if (!leak) {
    + kfree(d);
    + return NULL;
    + }

    pr_info("%s: dummy @ %p, expires @ %lx\n",
    __func__, d, d->jiffies_expire);
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-02-11 17:03    [W:4.177 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site