From: Santosh Sivaraj <santosh@fossix.org>
To: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Tony Luck <tony.luck@intel.com>,
Fenghua Yu <fenghua.yu@intel.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
James Bottomley <jejb@parisc-linux.org>,
Helge Deller <deller@gmx.de>, Petr Mladek <pmladek@suse.com>,
Steven Rostedt <rostedt@goodmis.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jessica Yu <jeyu@kernel.org>, Alexei Starovoitov <ast@kernel.org>,
linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC][PATCH v2 0/7] printk/ia64/ppc64/parisc64: let's deprecate %pF/%pf printk specifiers
Date: Fri, 22 Sep 2017 11:04:04 +0530 [thread overview]
Message-ID: <20170922053404.3zpfpwetabjut2er@santosiv.in.ibm.com> (raw)
In-Reply-To: <20170920162910.32053-1-sergey.senozhatsky@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4778 bytes --]
* Sergey Senozhatsky <sergey.senozhatsky@gmail.com> wrote (on 2017-09-20 16:29:02 +0000):
> Hello
>
> RFC
>
> On some arches C function pointers are indirect and point to
> a function descriptor, which contains the actual pointer to the code.
> This mostly doesn't matter, except for cases when people want to print
> out function pointers in symbolic format, because the usual '%pS/%ps'
> does not work on those arches as expected. That's the reason why we
> have '%pF/%pf', but since it's here because of a subtle ABI detail
> specific to some arches (ppc64/ia64/parisc64) it's easy to misuse
> '%pF/%pf' and '%pS/%ps' (see [1], for example).
>
> This patch set attempts to move ia64/ppc64/parisc64 C function
> pointer ABI details out of printk() to arch code. Function dereference
> code now checks if a pointer belongs to a .opd ELF section and dereferences
> that pointer only if it does. The kernel and modules have their own .opd
> sections that's why I use two different ARCH functions: for kernel and
> for module pointer dereference.
>
> I planned to remove dereference_function_descriptor() entirely,
> but then I discovered a bunch other uses cases (kgdbts, init/main.c,
> extable, etc.), so I decided to keep dereference_function_descriptor()
> around because the main point of this patch set is to deprecate %pF/%pf.
> But at the same time, I think I can go further and handle both kernel
> and module descriptor dereference in dereference_function_descriptor().
> We need a module pointer for module .opd check, so that will come at an
> extra cost of module lookup (may be there will some other issues along
> the way, haven't checked it).
>
> Right now we've got:
>
> - dereference_function_descriptor(addr)
> a generic (old) function. it simply attempts to dereference
> whatever pointer we give it.
>
> - dereference_kernel_function_descriptor(addr)
> dereferences a kernel pointer if it's within the kernel's .opd
> section.
>
> - dereference_module_function_descriptor(module, addr)
> dereference a module pointer if it's within the module's .opd
> section.
>
>
> *** A BIG NOTE ***
> I don't own ia64/ppc64/parisc64 hardware, so the patches are not
> tested. Sorry about that!
Tested patch series on ppc64 sucessfully.
You may add tested by to the series.
Tested-by: Santosh Sivaraj <santosh@fossix.org>
Thanks,
Santosh
>
> Another note:
> I need to check what is BPF symbol lookup and do we need to
> do any dereference there.
>
> v2:
> -- convert dereference_function_descriptor() to unsigned long
> -- fix kernel descriptor range checks (Helge)
> -- fix parisc module descriptor range check (Helge)
> -- fix ppc64 module range check
> -- add checkpatch patch
>
>
> Sergey Senozhatsky (7):
> switch dereference_function_descriptor() to `unsigned long'
> sections: split dereference_function_descriptor()
> ia64: Add .opd based function descriptor dereference
> powerpc64: Add .opd based function descriptor dereference
> parisc64: Add .opd based function descriptor dereference
> symbol lookup: use new kernel and module dereference functions
> checkpatch: add pF/pf deprecation warning
>
> Documentation/printk-formats.txt | 15 +++++----------
> arch/ia64/include/asm/sections.h | 16 ++++++++++++----
> arch/ia64/kernel/module.c | 13 +++++++++++++
> arch/ia64/kernel/vmlinux.lds.S | 2 ++
> arch/parisc/boot/compressed/vmlinux.lds.S | 2 ++
> arch/parisc/include/asm/sections.h | 4 +++-
> arch/parisc/kernel/module.c | 17 +++++++++++++++++
> arch/parisc/kernel/process.c | 15 ++++++++++++---
> arch/parisc/kernel/vmlinux.lds.S | 2 ++
> arch/parisc/mm/init.c | 4 ++--
> arch/powerpc/include/asm/module.h | 3 +++
> arch/powerpc/include/asm/sections.h | 17 ++++++++++++++---
> arch/powerpc/kernel/module_64.c | 16 ++++++++++++++++
> arch/powerpc/kernel/vmlinux.lds.S | 2 ++
> drivers/misc/kgdbts.c | 2 +-
> include/asm-generic/sections.h | 8 ++++++--
> include/linux/moduleloader.h | 4 ++++
> init/main.c | 2 +-
> kernel/extable.c | 2 +-
> kernel/kallsyms.c | 1 +
> kernel/module.c | 9 ++++++++-
> lib/vsprintf.c | 5 +----
> scripts/checkpatch.pl | 6 ++++--
> 23 files changed, 132 insertions(+), 35 deletions(-)
--
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 862 bytes --]
next prev parent reply other threads:[~2017-09-22 5:34 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-20 16:29 [RFC][PATCH v2 0/7] printk/ia64/ppc64/parisc64: let's deprecate %pF/%pf printk specifiers Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 1/7] switch dereference_function_descriptor() to `unsigned long' Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 2/7] sections: split dereference_function_descriptor() Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 3/7] ia64: Add .opd based function descriptor dereference Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 4/7] powerpc64: " Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 5/7] parisc64: " Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 6/7] symbol lookup: use new kernel and module dereference functions Sergey Senozhatsky
2017-09-21 9:38 ` Sergey Senozhatsky
2017-09-20 16:29 ` [RFC][PATCH v2 7/7] checkpatch: add pF/pf deprecation warning Sergey Senozhatsky
2017-09-20 17:38 ` Joe Perches
2017-09-20 17:53 ` Helge Deller
2017-09-20 18:24 ` Joe Perches
2017-09-21 7:43 ` Sergey Senozhatsky
2017-09-21 0:27 ` Sergey Senozhatsky
2017-09-21 2:28 ` Joe Perches
2017-09-20 16:29 ` Sergey Senozhatsky
2017-09-20 16:33 ` Sergey Senozhatsky
2017-09-20 20:14 ` [RFC][PATCH v2 0/7] printk/ia64/ppc64/parisc64: let's deprecate %pF/%pf printk specifiers Helge Deller
2017-09-21 0:30 ` Sergey Senozhatsky
2017-09-22 5:34 ` Santosh Sivaraj [this message]
2017-09-22 8:00 ` Sergey Senozhatsky
2017-09-22 16:48 ` Luck, Tony
2017-09-25 7:05 ` Sergey Senozhatsky
2017-09-25 16:29 ` Luck, Tony
2017-09-25 17:05 ` Helge Deller
2017-09-27 5:01 ` Michael Ellerman
2017-10-19 14:11 ` Sergey Senozhatsky
2017-09-27 6:26 ` Michael Ellerman
2017-09-28 1:11 ` Sergey Senozhatsky
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=20170922053404.3zpfpwetabjut2er@santosiv.in.ibm.com \
--to=santosh@fossix.org \
--cc=akpm@linux-foundation.org \
--cc=ast@kernel.org \
--cc=benh@kernel.crashing.org \
--cc=deller@gmx.de \
--cc=fenghua.yu@intel.com \
--cc=jejb@parisc-linux.org \
--cc=jeyu@kernel.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--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).