From: Helge Deller <deller@gmx.de>
To: "Luck, Tony" <tony.luck@intel.com>,
Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
Petr Mladek <pmladek@suse.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Yu, Fenghua" <fenghua.yu@intel.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>
Subject: Re: [PATCH 00/14] Fix wrong %pF and %pS printk format specifier usages
Date: Fri, 8 Sep 2017 20:28:13 +0200 [thread overview]
Message-ID: <67a0aad8-5412-60f8-6481-562d37995eb2@gmx.de> (raw)
In-Reply-To: <20170908172528.qc2vdtxzqh777k6o@intel.com>
On 08.09.2017 19:25, Luck, Tony wrote:
> On Fri, Sep 08, 2017 at 03:18:30PM +0900, Sergey Senozhatsky wrote:
>> if the addr is not in kernel .text, then try dereferencing it and check
>> if the dereferenced addr is in kernel .text.
>
> If it really is a function pointer, then we know that it is safe
> to dereference. But if it isn't, then maybe not?
>
> If it is a function pointer then dereferening will indeed give
> us a .text address. But if it isn't, it might still give us a
> .text address (we could reduce the probability of a false hit
> by checking that the .text address was exactly on a symbol with
> no offset ... but data values that happen to be the addresses of
> function entry points are possible).
I don't like this kind of trying to figure out at runtime at all.
It's too much guessing in here IMHO.
What about this idea:
For %pF we always have pointers to functions, e.g.:
printk("Going to call: %pF\n", gettimeofday);
printk("Going to call: %pF\n", p->func);
and for %pS most (if not all) usages use some kind of casting
from "unsigned long" to "void *", e.g.:
printk("%s: called from %pS\n", __func__, (void *)_RET_IP_);
printk("%s: called from %pS\n", __func__, (void *)__builtin_return_address(0));
printk("Faulted at %pS\n", (void *)regs->ip);
So, what if we for the %pS case simply take the type as it is
(unsigned long) and introduce a new printk-format, e.g. "%luS" ?
The %pS examples above then become:
printk("%s: called from %luS\n", __func__, _RET_IP_);
printk("%s: called from %luS\n", __func__, __builtin_return_address(0));
printk("Faulted at %luS\n", regs->ip);
That way we don't need type-casting, gain compile-time type
checks from the compiler, and we could add a checkpatch (or occinelle)
check which checks for the combination of %pF/%pS and "void*" keyword
and suggest to use %luS.
Opinions?
Helge
next prev parent reply other threads:[~2017-09-08 18:29 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-06 20:27 [PATCH 00/14] Fix wrong %pF and %pS printk format specifier usages Helge Deller
2017-09-06 20:27 ` [PATCH 01/14] arm: Use %pS printk format for symbols from direct addresses Helge Deller
2017-09-06 20:27 ` [PATCH 02/14] um: " Helge Deller
2017-09-12 12:10 ` Petr Mladek
2017-09-21 20:13 ` Richard Weinberger
2017-09-06 20:27 ` [PATCH 03/14] x86: " Helge Deller
2017-09-06 20:27 ` [PATCH 04/14] ti_sci: Use %pS printk format for " Helge Deller
2017-09-08 23:30 ` Nishanth Menon
2017-09-09 0:30 ` Santosh Shilimkar
2017-09-06 20:27 ` [PATCH 05/14] i915: " Helge Deller
2017-09-27 12:24 ` [Intel-gfx] " Daniel Vetter
2017-09-06 20:27 ` [PATCH 06/14] md/bcache: " Helge Deller
2017-09-07 4:50 ` Coly Li
2017-09-07 7:42 ` Helge Deller
2017-09-07 7:49 ` Coly Li
2017-09-07 8:05 ` Sergey Senozhatsky
2017-09-06 20:27 ` [PATCH 07/14] power/avs: " Helge Deller
2017-09-08 23:37 ` Nishanth Menon
2017-09-06 20:27 ` [PATCH 08/14] fs/f2fs: " Helge Deller
2017-09-06 20:27 ` [PATCH 09/14] fs/pstore: " Helge Deller
2018-11-29 23:26 ` Kees Cook
2018-11-29 23:49 ` Luck, Tony
2018-11-30 0:40 ` Kees Cook
2017-09-06 20:27 ` [PATCH 10/14] fs/xfs: " Helge Deller
2017-09-08 7:38 ` Christoph Hellwig
2017-09-18 18:37 ` Darrick J. Wong
2017-09-06 20:27 ` [PATCH 11/14] smp: Use %pF printk format specifier for function pointers Helge Deller
2017-09-06 20:27 ` [PATCH 12/14] mm/memblock: Use %pS printk format for direct addresses Helge Deller
2017-09-06 20:28 ` [PATCH 13/14] netfilter/ipvs: " Helge Deller
2017-10-09 5:52 ` Simon Horman
2017-11-06 13:46 ` Pablo Neira Ayuso
2017-09-06 20:28 ` [PATCH 14/14] sound/core: " Helge Deller
2017-09-07 8:36 ` Takashi Iwai
2017-09-07 0:45 ` [PATCH 00/14] Fix wrong %pF and %pS printk format specifier usages Sergey Senozhatsky
2017-09-07 6:01 ` Helge Deller
2017-09-07 7:56 ` Sergey Senozhatsky
2017-09-07 8:32 ` Sergey Senozhatsky
2017-09-07 9:12 ` Helge Deller
2017-09-07 9:36 ` Sergey Senozhatsky
2017-09-07 9:51 ` Sergey Senozhatsky
2017-09-07 12:38 ` Helge Deller
2017-09-07 16:05 ` Luck, Tony
2017-09-08 6:18 ` Sergey Senozhatsky
2017-09-08 17:25 ` Luck, Tony
2017-09-08 18:28 ` Helge Deller [this message]
2017-09-14 7:40 ` Sergey Senozhatsky
2017-09-14 8:03 ` Sergey Senozhatsky
2017-09-14 8:39 ` Helge Deller
2017-09-14 9:27 ` Sergey Senozhatsky
2017-09-14 9:47 ` Helge Deller
2017-09-14 16:01 ` Luck, Tony
2017-09-18 7:03 ` Sergey Senozhatsky
2017-09-14 6:53 ` Sergey Senozhatsky
2017-09-08 20:49 ` Helge Deller
2017-09-12 11:18 ` Petr Mladek
2017-09-14 6:44 ` Sergey Senozhatsky
2017-09-08 22:23 ` Yu, Fenghua
2017-09-14 6:35 ` Sergey Senozhatsky
2017-09-07 16:50 ` Joe Perches
2017-09-08 6:23 ` Sergey Senozhatsky
2017-09-08 20:39 ` Helge Deller
2017-09-12 12:23 ` Petr Mladek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=67a0aad8-5412-60f8-6481-562d37995eb2@gmx.de \
--to=deller@gmx.de \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=fenghua.yu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=pmladek@suse.com \
--cc=sergey.senozhatsky.work@gmail.com \
--cc=sergey.senozhatsky@gmail.com \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).