Message ID | 20210923104803.2620285-5-elver@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v3,1/5] stacktrace: move filter_irq_stacks() to kernel/stacktrace.c | expand |
On Thu, Sep 23, 2021 at 12:48 PM Marco Elver <elver@google.com> wrote: > > Add a note briefly mentioning the new policy about "skipping currently > covered allocations if pool close to full." Since this has a notable > impact on KFENCE's bug-detection ability on systems with large uptimes, > it is worth pointing out the feature. > > Signed-off-by: Marco Elver <elver@google.com> > Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Acked-by: Alexander Potapenko <glider@google.com> > --- > v2: > * Rewrite. > --- > Documentation/dev-tools/kfence.rst | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/Documentation/dev-tools/kfence.rst b/Documentation/dev-tools/kfence.rst > index 0fbe3308bf37..d45f952986ae 100644 > --- a/Documentation/dev-tools/kfence.rst > +++ b/Documentation/dev-tools/kfence.rst > @@ -269,6 +269,17 @@ tail of KFENCE's freelist, so that the least recently freed objects are reused > first, and the chances of detecting use-after-frees of recently freed objects > is increased. > > +If pool utilization reaches 75% (default) or above, to reduce the risk of the > +pool eventually being fully occupied by allocated objects yet ensure diverse > +coverage of allocations, KFENCE limits currently covered allocations of the > +same source from further filling up the pool. The "source" of an allocation is > +based on its partial allocation stack trace. A side-effect is that this also > +limits frequent long-lived allocations (e.g. pagecache) of the same source > +filling up the pool permanently, which is the most common risk for the pool > +becoming full and the sampled allocation rate dropping to zero. The threshold > +at which to start limiting currently covered allocations can be configured via > +the boot parameter ``kfence.skip_covered_thresh`` (pool usage%). > + > Interface > --------- > > -- > 2.33.0.464.g1972c5931b-goog >
diff --git a/Documentation/dev-tools/kfence.rst b/Documentation/dev-tools/kfence.rst index 0fbe3308bf37..d45f952986ae 100644 --- a/Documentation/dev-tools/kfence.rst +++ b/Documentation/dev-tools/kfence.rst @@ -269,6 +269,17 @@ tail of KFENCE's freelist, so that the least recently freed objects are reused first, and the chances of detecting use-after-frees of recently freed objects is increased. +If pool utilization reaches 75% (default) or above, to reduce the risk of the +pool eventually being fully occupied by allocated objects yet ensure diverse +coverage of allocations, KFENCE limits currently covered allocations of the +same source from further filling up the pool. The "source" of an allocation is +based on its partial allocation stack trace. A side-effect is that this also +limits frequent long-lived allocations (e.g. pagecache) of the same source +filling up the pool permanently, which is the most common risk for the pool +becoming full and the sampled allocation rate dropping to zero. The threshold +at which to start limiting currently covered allocations can be configured via +the boot parameter ``kfence.skip_covered_thresh`` (pool usage%). + Interface ---------