On Mon, Jan 20, 2025 at 5:31 PM Hyesoo Yu <hyesoo.yu@xxxxxxxxxxx> wrote: Let's add Chengming, the author of the commit, to Cc, as he might have some opinions about it. > Previously, the restore occured after printing the object in slub. > After commit 47d911b ("slab: make check_object() more consistent"), at least 12 characters of the commit hash should be used to refer to a commit. Documentation/process/submitting-patches.rst states that: You should also be sure to use at least the first twelve characters of the SHA-1 ID. The kernel repository holds a lot of objects, making collisions with shorter IDs a real possibility. Bear in mind that, even if there is no collision with your six-character ID now, that condition may change five years from now. > the bytes are printed after the restore. This information about the bytes > before the restore is highly valuable for debugging purpose. > For instance, in a event of cache issue, it displays byte patterns > by breaking them down into 64-bytes units. Without this information, > we can only speculate on how it was broken. Hence the corrupted regions > are printed prior to the restoration process. Probably this should be considered for -stable releases. What do you think? [1] https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > diff --git a/mm/slub.c b/mm/slub.c > index c2151c9fee22..48cefc969480 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1207,6 +1207,7 @@ check_bytes_and_report(struct kmem_cache *s, struct slab *slab, > fault[0], value); > > skip_bug_print: > + print_section(KERN_ERR, "Corrupt ", fault, end - fault); I don't think it's supposed to report an error here, per the name of the label "skip_bug_print". Maybe move print_trailer() and add_taint() back to check_bytes_and_report(), and report an error only once and skip reporting if it's already reported? Best, Hyeonggon > restore_bytes(s, what, value, fault, end); > return 0; > } > -- > 2.48.0 >