The patch titled Subject: mm/slub: fix endianness bug for alloc/free_traces attributes has been added to the -mm tree. Its filename is mm-slub-fix-endianness-bug-for-alloc-free_traces-attributes.patch
This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/mm-slub-fix-endianness-bug-for-all... and later at https://ozlabs.org/~akpm/mmotm/broken-out/mm-slub-fix-endianness-bug-for-all...
Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated there every 3-4 working days
------------------------------------------------------ From: Gerald Schaefer gerald.schaefer@linux.ibm.com Subject: mm/slub: fix endianness bug for alloc/free_traces attributes
On big-endian s390, the alloc/free_traces attributes produce endless output, because of always 0 idx in slab_debugfs_show().
idx is de-referenced from *v, which points to a loff_t value, with
unsigned int idx = *(unsigned int *)v;
This will only give the upper 32 bits on big-endian, which remain 0.
Instead of only fixing this de-reference, during discussion it seemed more appropriate to change the seq_ops so that they use an explicit iterator in private loc_track struct.
This patch adds idx to loc_track, which will also fix the endianness bug.
Link: https://lore.kernel.org/r/20211117193932.4049412-1-gerald.schaefer@linux.ibm... Link: https://lkml.kernel.org/r/20211126171848.17534-1-gerald.schaefer@linux.ibm.c... Fixes: 64dd68497be7 ("mm: slub: move sysfs slab alloc/free interfaces to debugfs") Signed-off-by: Gerald Schaefer gerald.schaefer@linux.ibm.com Reported-by: Steffen Maier maier@linux.ibm.com Cc: : Vlastimil Babka vbabka@suse.cz Cc: Faiyaz Mohammed faiyazm@codeaurora.org Cc: Greg Kroah-Hartman gregkh@linuxfoundation.org Cc: Christoph Lameter cl@linux.com Cc: Pekka Enberg penberg@kernel.org Cc: David Rientjes rientjes@google.com Cc: Joonsoo Kim iamjoonsoo.kim@lge.com Cc: stable@vger.kernel.org Signed-off-by: Andrew Morton akpm@linux-foundation.org ---
mm/slub.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
--- a/mm/slub.c~mm-slub-fix-endianness-bug-for-alloc-free_traces-attributes +++ a/mm/slub.c @@ -5081,6 +5081,7 @@ struct loc_track { unsigned long max; unsigned long count; struct location *loc; + loff_t idx; };
static struct dentry *slab_debugfs_root; @@ -6052,11 +6053,11 @@ __initcall(slab_sysfs_init); #if defined(CONFIG_SLUB_DEBUG) && defined(CONFIG_DEBUG_FS) static int slab_debugfs_show(struct seq_file *seq, void *v) { - - struct location *l; - unsigned int idx = *(unsigned int *)v; struct loc_track *t = seq->private; + struct location *l; + unsigned long idx;
+ idx = (unsigned long) t->idx; if (idx < t->count) { l = &t->loc[idx];
@@ -6105,16 +6106,18 @@ static void *slab_debugfs_next(struct se { struct loc_track *t = seq->private;
- v = ppos; - ++*ppos; + t->idx = ++(*ppos); if (*ppos <= t->count) - return v; + return ppos;
return NULL; }
static void *slab_debugfs_start(struct seq_file *seq, loff_t *ppos) { + struct loc_track *t = seq->private; + + t->idx = *ppos; return ppos; }
_
Patches currently in -mm which might be from gerald.schaefer@linux.ibm.com are
mm-slub-fix-endianness-bug-for-alloc-free_traces-attributes.patch
linux-stable-mirror@lists.linaro.org