lkml.org 
[lkml]   [2020]   [Sep]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH RFC 08/10] kfence, lockdep: make KFENCE compatible with lockdep
    From
    Lockdep checks that dynamic key registration is only performed on keys
    that are not static objects. With KFENCE, it is possible that such a
    dynamically allocated key is a KFENCE object which may, however, be
    allocated from a static memory pool (if HAVE_ARCH_KFENCE_STATIC_POOL).

    Therefore, ignore KFENCE-allocated objects in static_obj().

    Co-developed-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Marco Elver <elver@google.com>
    ---
    kernel/locking/lockdep.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
    index 54b74fabf40c..0cf5d5ecbd31 100644
    --- a/kernel/locking/lockdep.c
    +++ b/kernel/locking/lockdep.c
    @@ -38,6 +38,7 @@
    #include <linux/seq_file.h>
    #include <linux/spinlock.h>
    #include <linux/kallsyms.h>
    +#include <linux/kfence.h>
    #include <linux/interrupt.h>
    #include <linux/stacktrace.h>
    #include <linux/debug_locks.h>
    @@ -755,6 +756,13 @@ static int static_obj(const void *obj)
    if (arch_is_kernel_initmem_freed(addr))
    return 0;

    + /*
    + * KFENCE objects may be allocated from a static memory pool, but are
    + * not actually static objects.
    + */
    + if (is_kfence_address(obj))
    + return 0;
    +
    /*
    * static variable?
    */
    --
    2.28.0.526.ge36021eeef-goog
    \
     
     \ /
      Last update: 2020-09-07 19:23    [W:4.050 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site