* FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree
@ 2023-03-28 12:01 gregkh
2023-03-28 13:02 ` Muchun Song
0 siblings, 1 reply; 5+ messages in thread
From: gregkh @ 2023-03-28 12:01 UTC (permalink / raw)
To: muchun.song, akpm, dvyukov, elver, glider, jannh, sjpark,
songmuchun, stable
Cc: stable
The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 1c86a188e03156223a34d09ce290b49bd4dd0403
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '16800049118459@kroah.com' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
1c86a188e031 ("mm: kfence: fix using kfence_metadata without initialization in show_object()")
b33f778bba5e ("kfence: alloc kfence_pool after system startup")
698361bca2d5 ("kfence: allow re-enabling KFENCE after system startup")
07e8481d3c38 ("kfence: always use static branches to guard kfence_alloc()")
08f6b10630f2 ("kfence: limit currently covered allocations when pool nearly full")
a9ab52bbcb52 ("kfence: move saving stack trace of allocations into __kfence_alloc()")
9a19aeb56650 ("kfence: count unexpectedly skipped allocations")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 1c86a188e03156223a34d09ce290b49bd4dd0403 Mon Sep 17 00:00:00 2001
From: Muchun Song <muchun.song@linux.dev>
Date: Wed, 15 Mar 2023 11:44:41 +0800
Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization
in show_object()
The variable kfence_metadata is initialized in kfence_init_pool(), then,
it is not initialized if kfence is disabled after booting. In this case,
kfence_metadata will be used (e.g. ->lock and ->state fields) without
initialization when reading /sys/kernel/debug/kfence/objects. There will
be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating
debugfs files when necessary.
Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com
Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure")
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
Tested-by: Marco Elver <elver@google.com>
Reviewed-by: Marco Elver <elver@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Jann Horn <jannh@google.com>
Cc: SeongJae Park <sjpark@amazon.de>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
diff --git a/mm/kfence/core.c b/mm/kfence/core.c
index 5349c37a5dac..79c94ee55f97 100644
--- a/mm/kfence/core.c
+++ b/mm/kfence/core.c
@@ -726,10 +726,14 @@ static const struct seq_operations objects_sops = {
};
DEFINE_SEQ_ATTRIBUTE(objects);
-static int __init kfence_debugfs_init(void)
+static int kfence_debugfs_init(void)
{
- struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL);
+ struct dentry *kfence_dir;
+ if (!READ_ONCE(kfence_enabled))
+ return 0;
+
+ kfence_dir = debugfs_create_dir("kfence", NULL);
debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops);
debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops);
return 0;
@@ -883,6 +887,8 @@ static int kfence_init_late(void)
}
kfence_init_enable();
+ kfence_debugfs_init();
+
return 0;
}
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree 2023-03-28 12:01 FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree gregkh @ 2023-03-28 13:02 ` Muchun Song 2023-03-28 13:19 ` Greg KH 0 siblings, 1 reply; 5+ messages in thread From: Muchun Song @ 2023-03-28 13:02 UTC (permalink / raw) To: gregkh, akpm, dvyukov, elver, glider, jannh, sjpark, songmuchun, stable On 2023/3/28 20:01, gregkh@linuxfoundation.org wrote: > The patch below does not apply to the 5.15-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@vger.kernel.org>. > > To reproduce the conflict and resubmit, you may use the following commands: > > git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y > git checkout FETCH_HEAD > git cherry-pick -x 1c86a188e03156223a34d09ce290b49bd4dd0403 > # <resolve conflicts, build, test, etc.> > git commit -s > git send-email --to '<stable@vger.kernel.org>' --in-reply-to '16800049118459@kroah.com' --subject-prefix 'PATCH 5.15.y' HEAD^.. > > Possible dependencies: > > 1c86a188e031 ("mm: kfence: fix using kfence_metadata without initialization in show_object()") > b33f778bba5e ("kfence: alloc kfence_pool after system startup") > 698361bca2d5 ("kfence: allow re-enabling KFENCE after system startup") > 07e8481d3c38 ("kfence: always use static branches to guard kfence_alloc()") > 08f6b10630f2 ("kfence: limit currently covered allocations when pool nearly full") > a9ab52bbcb52 ("kfence: move saving stack trace of allocations into __kfence_alloc()") > 9a19aeb56650 ("kfence: count unexpectedly skipped allocations") > > thanks, > > greg k-h > > ------------------ original commit in Linus's tree ------------------ > > From 1c86a188e03156223a34d09ce290b49bd4dd0403 Mon Sep 17 00:00:00 2001 > From: Muchun Song <muchun.song@linux.dev> > Date: Wed, 15 Mar 2023 11:44:41 +0800 > Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization > in show_object() > > The variable kfence_metadata is initialized in kfence_init_pool(), then, > it is not initialized if kfence is disabled after booting. In this case, > kfence_metadata will be used (e.g. ->lock and ->state fields) without > initialization when reading /sys/kernel/debug/kfence/objects. There will > be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating > debugfs files when necessary. > > Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com > Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") > Signed-off-by: Muchun Song <songmuchun@bytedance.com> > Tested-by: Marco Elver <elver@google.com> > Reviewed-by: Marco Elver <elver@google.com> > Cc: Alexander Potapenko <glider@google.com> > Cc: Dmitry Vyukov <dvyukov@google.com> > Cc: Jann Horn <jannh@google.com> > Cc: SeongJae Park <sjpark@amazon.de> > Cc: <stable@vger.kernel.org> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 5349c37a5dac..79c94ee55f97 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -726,10 +726,14 @@ static const struct seq_operations objects_sops = { > }; > DEFINE_SEQ_ATTRIBUTE(objects); > > -static int __init kfence_debugfs_init(void) > +static int kfence_debugfs_init(void) > { > - struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL); > + struct dentry *kfence_dir; > > + if (!READ_ONCE(kfence_enabled)) > + return 0; > + > + kfence_dir = debugfs_create_dir("kfence", NULL); > debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops); > debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops); > return 0; > @@ -883,6 +887,8 @@ static int kfence_init_late(void) > } > > kfence_init_enable(); > + kfence_debugfs_init(); > + > return 0; > } > I have implemented a following patch based on v5.15 branch. From ba26f344fa3e477456a3cc60488a7b8e5af0e88d Mon Sep 17 00:00:00 2001 From: Muchun Song <songmuchun@bytedance.com> Date: Wed, 15 Mar 2023 11:44:41 +0800 Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization in show_object() The variable kfence_metadata is initialized in kfence_init_pool(), then, it is not initialized if kfence is disabled after booting. In this case, kfence_metadata will be used (e.g. ->lock and ->state fields) without initialization when reading /sys/kernel/debug/kfence/objects. There will be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating debugfs files when necessary. Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") Signed-off-by: Muchun Song <songmuchun@bytedance.com> Tested-by: Marco Elver <elver@google.com> Reviewed-by: Marco Elver <elver@google.com> Cc: Alexander Potapenko <glider@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Jann Horn <jannh@google.com> Cc: SeongJae Park <sjpark@amazon.de> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- mm/kfence/core.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index 39a6c434e355..573f34e6af0b 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -678,10 +678,14 @@ static const struct file_operations objects_fops = { .release = seq_release, }; -static int __init kfence_debugfs_init(void) +static int kfence_debugfs_init(void) { - struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL); + struct dentry *kfence_dir; + if (!READ_ONCE(kfence_enabled)) + return 0; + + kfence_dir = debugfs_create_dir("kfence", NULL); debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops); debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops); return 0; -- 2.11.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree 2023-03-28 13:02 ` Muchun Song @ 2023-03-28 13:19 ` Greg KH 2023-03-28 13:27 ` Muchun Song 0 siblings, 1 reply; 5+ messages in thread From: Greg KH @ 2023-03-28 13:19 UTC (permalink / raw) To: Muchun Song Cc: akpm, dvyukov, elver, glider, jannh, sjpark, songmuchun, stable On Tue, Mar 28, 2023 at 09:02:27PM +0800, Muchun Song wrote: > > > On 2023/3/28 20:01, gregkh@linuxfoundation.org wrote: > > The patch below does not apply to the 5.15-stable tree. > > If someone wants it applied there, or to any other stable or longterm > > tree, then please email the backport, including the original git commit > > id to <stable@vger.kernel.org>. > > > > To reproduce the conflict and resubmit, you may use the following commands: > > > > git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y > > git checkout FETCH_HEAD > > git cherry-pick -x 1c86a188e03156223a34d09ce290b49bd4dd0403 > > # <resolve conflicts, build, test, etc.> > > git commit -s > > git send-email --to '<stable@vger.kernel.org>' --in-reply-to '16800049118459@kroah.com' --subject-prefix 'PATCH 5.15.y' HEAD^.. > > > > Possible dependencies: > > > > 1c86a188e031 ("mm: kfence: fix using kfence_metadata without initialization in show_object()") > > b33f778bba5e ("kfence: alloc kfence_pool after system startup") > > 698361bca2d5 ("kfence: allow re-enabling KFENCE after system startup") > > 07e8481d3c38 ("kfence: always use static branches to guard kfence_alloc()") > > 08f6b10630f2 ("kfence: limit currently covered allocations when pool nearly full") > > a9ab52bbcb52 ("kfence: move saving stack trace of allocations into __kfence_alloc()") > > 9a19aeb56650 ("kfence: count unexpectedly skipped allocations") > > > > thanks, > > > > greg k-h > > > > ------------------ original commit in Linus's tree ------------------ > > > > From 1c86a188e03156223a34d09ce290b49bd4dd0403 Mon Sep 17 00:00:00 2001 > > From: Muchun Song <muchun.song@linux.dev> > > Date: Wed, 15 Mar 2023 11:44:41 +0800 > > Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization > > in show_object() > > > > The variable kfence_metadata is initialized in kfence_init_pool(), then, > > it is not initialized if kfence is disabled after booting. In this case, > > kfence_metadata will be used (e.g. ->lock and ->state fields) without > > initialization when reading /sys/kernel/debug/kfence/objects. There will > > be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating > > debugfs files when necessary. > > > > Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com > > Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") > > Signed-off-by: Muchun Song <songmuchun@bytedance.com> > > Tested-by: Marco Elver <elver@google.com> > > Reviewed-by: Marco Elver <elver@google.com> > > Cc: Alexander Potapenko <glider@google.com> > > Cc: Dmitry Vyukov <dvyukov@google.com> > > Cc: Jann Horn <jannh@google.com> > > Cc: SeongJae Park <sjpark@amazon.de> > > Cc: <stable@vger.kernel.org> > > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > > > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > > index 5349c37a5dac..79c94ee55f97 100644 > > --- a/mm/kfence/core.c > > +++ b/mm/kfence/core.c > > @@ -726,10 +726,14 @@ static const struct seq_operations objects_sops = { > > }; > > DEFINE_SEQ_ATTRIBUTE(objects); > > -static int __init kfence_debugfs_init(void) > > +static int kfence_debugfs_init(void) > > { > > - struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL); > > + struct dentry *kfence_dir; > > + if (!READ_ONCE(kfence_enabled)) > > + return 0; > > + > > + kfence_dir = debugfs_create_dir("kfence", NULL); > > debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops); > > debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops); > > return 0; > > @@ -883,6 +887,8 @@ static int kfence_init_late(void) > > } > > kfence_init_enable(); > > + kfence_debugfs_init(); > > + > > return 0; > > } > > I have implemented a following patch based on v5.15 branch. > > From ba26f344fa3e477456a3cc60488a7b8e5af0e88d Mon Sep 17 00:00:00 2001 > From: Muchun Song <songmuchun@bytedance.com> > Date: Wed, 15 Mar 2023 11:44:41 +0800 > Subject: [PATCH] mm: kfence: fix using kfence_metadata without > initialization > in show_object() > > The variable kfence_metadata is initialized in kfence_init_pool(), then, > it is not initialized if kfence is disabled after booting. In this case, > kfence_metadata will be used (e.g. ->lock and ->state fields) without > initialization when reading /sys/kernel/debug/kfence/objects. There will > be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating > debugfs files when necessary. > > Link: > https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com > Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") > Signed-off-by: Muchun Song <songmuchun@bytedance.com> > Tested-by: Marco Elver <elver@google.com> > Reviewed-by: Marco Elver <elver@google.com> > Cc: Alexander Potapenko <glider@google.com> > Cc: Dmitry Vyukov <dvyukov@google.com> > Cc: Jann Horn <jannh@google.com> > Cc: SeongJae Park <sjpark@amazon.de> > Cc: <stable@vger.kernel.org> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > --- > mm/kfence/core.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 39a6c434e355..573f34e6af0b 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -678,10 +678,14 @@ static const struct file_operations objects_fops = { > .release = seq_release, > }; > Patch is corrupted with the whitespace eaten by your email client. Can you resend this in a format that it can be applied? thanks, greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree 2023-03-28 13:19 ` Greg KH @ 2023-03-28 13:27 ` Muchun Song 2023-03-28 13:50 ` Greg KH 0 siblings, 1 reply; 5+ messages in thread From: Muchun Song @ 2023-03-28 13:27 UTC (permalink / raw) To: Greg KH Cc: Andrew Morton, dvyukov, Marco Elver, glider, jannh, sjpark, Muchun Song, stable [-- Attachment #1: Type: text/plain, Size: 5823 bytes --] > On Mar 28, 2023, at 21:19, Greg KH <gregkh@linuxfoundation.org> wrote: > > On Tue, Mar 28, 2023 at 09:02:27PM +0800, Muchun Song wrote: >> >> >> On 2023/3/28 20:01, gregkh@linuxfoundation.org wrote: >>> The patch below does not apply to the 5.15-stable tree. >>> If someone wants it applied there, or to any other stable or longterm >>> tree, then please email the backport, including the original git commit >>> id to <stable@vger.kernel.org>. >>> >>> To reproduce the conflict and resubmit, you may use the following commands: >>> >>> git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y >>> git checkout FETCH_HEAD >>> git cherry-pick -x 1c86a188e03156223a34d09ce290b49bd4dd0403 >>> # <resolve conflicts, build, test, etc.> >>> git commit -s >>> git send-email --to '<stable@vger.kernel.org>' --in-reply-to '16800049118459@kroah.com' --subject-prefix 'PATCH 5.15.y' HEAD^.. >>> >>> Possible dependencies: >>> >>> 1c86a188e031 ("mm: kfence: fix using kfence_metadata without initialization in show_object()") >>> b33f778bba5e ("kfence: alloc kfence_pool after system startup") >>> 698361bca2d5 ("kfence: allow re-enabling KFENCE after system startup") >>> 07e8481d3c38 ("kfence: always use static branches to guard kfence_alloc()") >>> 08f6b10630f2 ("kfence: limit currently covered allocations when pool nearly full") >>> a9ab52bbcb52 ("kfence: move saving stack trace of allocations into __kfence_alloc()") >>> 9a19aeb56650 ("kfence: count unexpectedly skipped allocations") >>> >>> thanks, >>> >>> greg k-h >>> >>> ------------------ original commit in Linus's tree ------------------ >>> >>> From 1c86a188e03156223a34d09ce290b49bd4dd0403 Mon Sep 17 00:00:00 2001 >>> From: Muchun Song <muchun.song@linux.dev> >>> Date: Wed, 15 Mar 2023 11:44:41 +0800 >>> Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization >>> in show_object() >>> >>> The variable kfence_metadata is initialized in kfence_init_pool(), then, >>> it is not initialized if kfence is disabled after booting. In this case, >>> kfence_metadata will be used (e.g. ->lock and ->state fields) without >>> initialization when reading /sys/kernel/debug/kfence/objects. There will >>> be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating >>> debugfs files when necessary. >>> >>> Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com >>> Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") >>> Signed-off-by: Muchun Song <songmuchun@bytedance.com> >>> Tested-by: Marco Elver <elver@google.com> >>> Reviewed-by: Marco Elver <elver@google.com> >>> Cc: Alexander Potapenko <glider@google.com> >>> Cc: Dmitry Vyukov <dvyukov@google.com> >>> Cc: Jann Horn <jannh@google.com> >>> Cc: SeongJae Park <sjpark@amazon.de> >>> Cc: <stable@vger.kernel.org> >>> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> >>> >>> diff --git a/mm/kfence/core.c b/mm/kfence/core.c >>> index 5349c37a5dac..79c94ee55f97 100644 >>> --- a/mm/kfence/core.c >>> +++ b/mm/kfence/core.c >>> @@ -726,10 +726,14 @@ static const struct seq_operations objects_sops = { >>> }; >>> DEFINE_SEQ_ATTRIBUTE(objects); >>> -static int __init kfence_debugfs_init(void) >>> +static int kfence_debugfs_init(void) >>> { >>> - struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL); >>> + struct dentry *kfence_dir; >>> + if (!READ_ONCE(kfence_enabled)) >>> + return 0; >>> + >>> + kfence_dir = debugfs_create_dir("kfence", NULL); >>> debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops); >>> debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops); >>> return 0; >>> @@ -883,6 +887,8 @@ static int kfence_init_late(void) >>> } >>> kfence_init_enable(); >>> + kfence_debugfs_init(); >>> + >>> return 0; >>> } >> >> I have implemented a following patch based on v5.15 branch. >> >> From ba26f344fa3e477456a3cc60488a7b8e5af0e88d Mon Sep 17 00:00:00 2001 >> From: Muchun Song <songmuchun@bytedance.com> >> Date: Wed, 15 Mar 2023 11:44:41 +0800 >> Subject: [PATCH] mm: kfence: fix using kfence_metadata without >> initialization >> in show_object() >> >> The variable kfence_metadata is initialized in kfence_init_pool(), then, >> it is not initialized if kfence is disabled after booting. In this case, >> kfence_metadata will be used (e.g. ->lock and ->state fields) without >> initialization when reading /sys/kernel/debug/kfence/objects. There will >> be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating >> debugfs files when necessary. >> >> Link: >> https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com >> Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") >> Signed-off-by: Muchun Song <songmuchun@bytedance.com> >> Tested-by: Marco Elver <elver@google.com> >> Reviewed-by: Marco Elver <elver@google.com> >> Cc: Alexander Potapenko <glider@google.com> >> Cc: Dmitry Vyukov <dvyukov@google.com> >> Cc: Jann Horn <jannh@google.com> >> Cc: SeongJae Park <sjpark@amazon.de> >> Cc: <stable@vger.kernel.org> >> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> >> --- >> mm/kfence/core.c | 8 ++++++-- >> 1 file changed, 6 insertions(+), 2 deletions(-) >> >> diff --git a/mm/kfence/core.c b/mm/kfence/core.c >> index 39a6c434e355..573f34e6af0b 100644 >> --- a/mm/kfence/core.c >> +++ b/mm/kfence/core.c >> @@ -678,10 +678,14 @@ static const struct file_operations objects_fops = { >> .release = seq_release, >> }; >> > > Patch is corrupted with the whitespace eaten by your email client. Can > you resend this in a format that it can be applied? I attach it here. Could you apply it? Thanks. [-- Attachment #2: 0001-mm-kfence-fix-using-kfence_metadata-without-initiali.patch --] [-- Type: application/octet-stream, Size: 2000 bytes --] From ba26f344fa3e477456a3cc60488a7b8e5af0e88d Mon Sep 17 00:00:00 2001 From: Muchun Song <songmuchun@bytedance.com> Date: Wed, 15 Mar 2023 11:44:41 +0800 Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization in show_object() The variable kfence_metadata is initialized in kfence_init_pool(), then, it is not initialized if kfence is disabled after booting. In this case, kfence_metadata will be used (e.g. ->lock and ->state fields) without initialization when reading /sys/kernel/debug/kfence/objects. There will be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating debugfs files when necessary. Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") Signed-off-by: Muchun Song <songmuchun@bytedance.com> Tested-by: Marco Elver <elver@google.com> Reviewed-by: Marco Elver <elver@google.com> Cc: Alexander Potapenko <glider@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Jann Horn <jannh@google.com> Cc: SeongJae Park <sjpark@amazon.de> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- mm/kfence/core.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index 39a6c434e355..573f34e6af0b 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -678,10 +678,14 @@ static const struct file_operations objects_fops = { .release = seq_release, }; -static int __init kfence_debugfs_init(void) +static int kfence_debugfs_init(void) { - struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL); + struct dentry *kfence_dir; + if (!READ_ONCE(kfence_enabled)) + return 0; + + kfence_dir = debugfs_create_dir("kfence", NULL); debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops); debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops); return 0; -- 2.11.0 [-- Attachment #3: Type: text/plain, Size: 30 bytes --] > > thanks, > > greg k-h ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree 2023-03-28 13:27 ` Muchun Song @ 2023-03-28 13:50 ` Greg KH 0 siblings, 0 replies; 5+ messages in thread From: Greg KH @ 2023-03-28 13:50 UTC (permalink / raw) To: Muchun Song Cc: Andrew Morton, dvyukov, Marco Elver, glider, jannh, sjpark, Muchun Song, stable On Tue, Mar 28, 2023 at 09:27:54PM +0800, Muchun Song wrote: > > > > On Mar 28, 2023, at 21:19, Greg KH <gregkh@linuxfoundation.org> wrote: > > > > On Tue, Mar 28, 2023 at 09:02:27PM +0800, Muchun Song wrote: > >> > >> > >> On 2023/3/28 20:01, gregkh@linuxfoundation.org wrote: > >>> The patch below does not apply to the 5.15-stable tree. > >>> If someone wants it applied there, or to any other stable or longterm > >>> tree, then please email the backport, including the original git commit > >>> id to <stable@vger.kernel.org>. > >>> > >>> To reproduce the conflict and resubmit, you may use the following commands: > >>> > >>> git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y > >>> git checkout FETCH_HEAD > >>> git cherry-pick -x 1c86a188e03156223a34d09ce290b49bd4dd0403 > >>> # <resolve conflicts, build, test, etc.> > >>> git commit -s > >>> git send-email --to '<stable@vger.kernel.org>' --in-reply-to '16800049118459@kroah.com' --subject-prefix 'PATCH 5.15.y' HEAD^.. > >>> > >>> Possible dependencies: > >>> > >>> 1c86a188e031 ("mm: kfence: fix using kfence_metadata without initialization in show_object()") > >>> b33f778bba5e ("kfence: alloc kfence_pool after system startup") > >>> 698361bca2d5 ("kfence: allow re-enabling KFENCE after system startup") > >>> 07e8481d3c38 ("kfence: always use static branches to guard kfence_alloc()") > >>> 08f6b10630f2 ("kfence: limit currently covered allocations when pool nearly full") > >>> a9ab52bbcb52 ("kfence: move saving stack trace of allocations into __kfence_alloc()") > >>> 9a19aeb56650 ("kfence: count unexpectedly skipped allocations") > >>> > >>> thanks, > >>> > >>> greg k-h > >>> > >>> ------------------ original commit in Linus's tree ------------------ > >>> > >>> From 1c86a188e03156223a34d09ce290b49bd4dd0403 Mon Sep 17 00:00:00 2001 > >>> From: Muchun Song <muchun.song@linux.dev> > >>> Date: Wed, 15 Mar 2023 11:44:41 +0800 > >>> Subject: [PATCH] mm: kfence: fix using kfence_metadata without initialization > >>> in show_object() > >>> > >>> The variable kfence_metadata is initialized in kfence_init_pool(), then, > >>> it is not initialized if kfence is disabled after booting. In this case, > >>> kfence_metadata will be used (e.g. ->lock and ->state fields) without > >>> initialization when reading /sys/kernel/debug/kfence/objects. There will > >>> be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating > >>> debugfs files when necessary. > >>> > >>> Link: https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com > >>> Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") > >>> Signed-off-by: Muchun Song <songmuchun@bytedance.com> > >>> Tested-by: Marco Elver <elver@google.com> > >>> Reviewed-by: Marco Elver <elver@google.com> > >>> Cc: Alexander Potapenko <glider@google.com> > >>> Cc: Dmitry Vyukov <dvyukov@google.com> > >>> Cc: Jann Horn <jannh@google.com> > >>> Cc: SeongJae Park <sjpark@amazon.de> > >>> Cc: <stable@vger.kernel.org> > >>> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > >>> > >>> diff --git a/mm/kfence/core.c b/mm/kfence/core.c > >>> index 5349c37a5dac..79c94ee55f97 100644 > >>> --- a/mm/kfence/core.c > >>> +++ b/mm/kfence/core.c > >>> @@ -726,10 +726,14 @@ static const struct seq_operations objects_sops = { > >>> }; > >>> DEFINE_SEQ_ATTRIBUTE(objects); > >>> -static int __init kfence_debugfs_init(void) > >>> +static int kfence_debugfs_init(void) > >>> { > >>> - struct dentry *kfence_dir = debugfs_create_dir("kfence", NULL); > >>> + struct dentry *kfence_dir; > >>> + if (!READ_ONCE(kfence_enabled)) > >>> + return 0; > >>> + > >>> + kfence_dir = debugfs_create_dir("kfence", NULL); > >>> debugfs_create_file("stats", 0444, kfence_dir, NULL, &stats_fops); > >>> debugfs_create_file("objects", 0400, kfence_dir, NULL, &objects_fops); > >>> return 0; > >>> @@ -883,6 +887,8 @@ static int kfence_init_late(void) > >>> } > >>> kfence_init_enable(); > >>> + kfence_debugfs_init(); > >>> + > >>> return 0; > >>> } > >> > >> I have implemented a following patch based on v5.15 branch. > >> > >> From ba26f344fa3e477456a3cc60488a7b8e5af0e88d Mon Sep 17 00:00:00 2001 > >> From: Muchun Song <songmuchun@bytedance.com> > >> Date: Wed, 15 Mar 2023 11:44:41 +0800 > >> Subject: [PATCH] mm: kfence: fix using kfence_metadata without > >> initialization > >> in show_object() > >> > >> The variable kfence_metadata is initialized in kfence_init_pool(), then, > >> it is not initialized if kfence is disabled after booting. In this case, > >> kfence_metadata will be used (e.g. ->lock and ->state fields) without > >> initialization when reading /sys/kernel/debug/kfence/objects. There will > >> be a warning if you enable CONFIG_DEBUG_SPINLOCK. Fix it by creating > >> debugfs files when necessary. > >> > >> Link: > >> https://lkml.kernel.org/r/20230315034441.44321-1-songmuchun@bytedance.com > >> Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") > >> Signed-off-by: Muchun Song <songmuchun@bytedance.com> > >> Tested-by: Marco Elver <elver@google.com> > >> Reviewed-by: Marco Elver <elver@google.com> > >> Cc: Alexander Potapenko <glider@google.com> > >> Cc: Dmitry Vyukov <dvyukov@google.com> > >> Cc: Jann Horn <jannh@google.com> > >> Cc: SeongJae Park <sjpark@amazon.de> > >> Cc: <stable@vger.kernel.org> > >> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > >> --- > >> mm/kfence/core.c | 8 ++++++-- > >> 1 file changed, 6 insertions(+), 2 deletions(-) > >> > >> diff --git a/mm/kfence/core.c b/mm/kfence/core.c > >> index 39a6c434e355..573f34e6af0b 100644 > >> --- a/mm/kfence/core.c > >> +++ b/mm/kfence/core.c > >> @@ -678,10 +678,14 @@ static const struct file_operations objects_fops = { > >> .release = seq_release, > >> }; > >> > > > > Patch is corrupted with the whitespace eaten by your email client. Can > > you resend this in a format that it can be applied? > > I attach it here. Could you apply it? Thanks. That worked, thanks! ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-03-28 13:50 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-03-28 12:01 FAILED: patch "[PATCH] mm: kfence: fix using kfence_metadata without initialization" failed to apply to 5.15-stable tree gregkh 2023-03-28 13:02 ` Muchun Song 2023-03-28 13:19 ` Greg KH 2023-03-28 13:27 ` Muchun Song 2023-03-28 13:50 ` Greg KH
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.