Re: [PATCH 0/2] introduce DUMP_PREFIX_UNHASHED for hex dumps

From: Sergey Senozhatsky
Date: Tue Jan 19 2021 - 05:57:26 EST


On (21/01/19 01:47), Matthew Wilcox wrote:
[..]
>
> > So maybe DUMP_PREFIX_UNHASHED can do the unhashed dump only when
> > CONFIG_DEBUG_KERNEL=y and fallback to DUMP_PREFIX_ADDRESS otherwise?
>
> Distros enable CONFIG_DEBUG_KERNEL.

Oh, I see.

> If you want to add CONFIG_DEBUG_LEAK_ADDRESSES, then that's great,
> and you won't even have to change users, you can just change how %p
> behaves.

I like the name. config dependent behaviour of %p wouldn't be new,
well, to some extent, e.g. XFS does something similar (see below).
I don't think Linus will be sold on this, however.


fs/xfs/xfs_linux.h:

/*
* Starting in Linux 4.15, the %p (raw pointer value) printk modifier
* prints a hashed version of the pointer to avoid leaking kernel
* pointers into dmesg. If we're trying to debug the kernel we want the
* raw values, so override this behavior as best we can.
*/
#ifdef DEBUG
# define PTR_FMT "%px"
#else
# define PTR_FMT "%p"
#endif

And then they just use it as

xfs_alert(mp, "%s: bad inode magic number, dip = "ptr_fmt",
dino bp = "ptr_fmt", ino = %ld",
__func__, dip, bp, in_f->ilf_ino);

-ss