From: Greg KH <gregkh@linuxfoundation.org> To: kernel-hardening@lists.openwall.com, Petr Mladek <pmladek@suse.com>, Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: linux-kernel@vger.kernel.org, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Steven Rostedt <rostedt@goodmis.org>, William Roberts <william.c.roberts@intel.com>, Chris Fries <cfries@google.com>, Dave Weinstein <olorin@google.com> Subject: [RFC 5/6] lib: vsprintf: Add "%paP", "%padP" options Date: Fri, 5 May 2017 21:07:47 -0700 [thread overview] Message-ID: <20170506040747.GF32707@kroah.com> (raw) In-Reply-To: <20170506040641.GA32707@kroah.com> From: Chris Fries <cfries@google.com> Add %paP and %padP for physical address that need to always be shown regardless of kptr restrictions. Cc: William Roberts <william.c.roberts@intel.com> Cc: Dave Weinstein <olorin@google.com> Signed-off-by: Chris Fries <cfries@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- Documentation/printk-formats.txt | 10 ++++++---- lib/vsprintf.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt index 8994c65aa3b0..7ee51269096f 100644 --- a/Documentation/printk-formats.txt +++ b/Documentation/printk-formats.txt @@ -82,18 +82,20 @@ Struct Resources: Physical addresses types phys_addr_t: - %pa[p] 0x01234567 or 0x0123456789abcdef + %pa[p][P] 0x01234567 or 0x0123456789abcdef For printing a phys_addr_t type (and its derivatives, such as resource_size_t) which can vary based on build options, regardless of - the width of the CPU data path. Passed by reference. + the width of the CPU data path. Passed by reference. Use the trailing + 'P' if it needs to be always shown. DMA addresses types dma_addr_t: - %pad 0x01234567 or 0x0123456789abcdef + %pad[P] 0x01234567 or 0x0123456789abcdef For printing a dma_addr_t type which can vary based on build options, - regardless of the width of the CPU data path. Passed by reference. + regardless of the width of the CPU data path. Passed by reference. Use + the trailing 'P' if it needs to be always shown. Raw buffer as an escaped string: diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 404d477d4bd2..37f9d615e622 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1394,23 +1394,29 @@ static noinline_for_stack char *address_val(char *buf, char *end, const void *addr, const char *fmt) { unsigned long long num; + int cleanse = kptr_restrict_cleanse_addresses(); + int decleanse_idx = 1; int size; switch (fmt[1]) { case 'd': num = *(const dma_addr_t *)addr; size = sizeof(dma_addr_t); + decleanse_idx = 2; break; case 'p': + decleanse_idx = 2; + /* fall thru */ default: num = *(const phys_addr_t *)addr; size = sizeof(phys_addr_t); break; } - return special_hex_number(buf, end, - kptr_restrict_cleanse_addresses() ? 0UL : num, - size); + /* 'P' on the tail means don't restrict the pointer. */ + cleanse = cleanse && (fmt[decleanse_idx] != 'P'); + + return special_hex_number(buf, end, cleanse ? 0UL : num, size); } static noinline_for_stack -- 2.12.2
WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh@linuxfoundation.org> To: kernel-hardening@lists.openwall.com, Petr Mladek <pmladek@suse.com>, Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: linux-kernel@vger.kernel.org, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Steven Rostedt <rostedt@goodmis.org>, William Roberts <william.c.roberts@intel.com>, Chris Fries <cfries@google.com>, Dave Weinstein <olorin@google.com> Subject: [kernel-hardening] [RFC 5/6] lib: vsprintf: Add "%paP", "%padP" options Date: Fri, 5 May 2017 21:07:47 -0700 [thread overview] Message-ID: <20170506040747.GF32707@kroah.com> (raw) In-Reply-To: <20170506040641.GA32707@kroah.com> From: Chris Fries <cfries@google.com> Add %paP and %padP for physical address that need to always be shown regardless of kptr restrictions. Cc: William Roberts <william.c.roberts@intel.com> Cc: Dave Weinstein <olorin@google.com> Signed-off-by: Chris Fries <cfries@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- Documentation/printk-formats.txt | 10 ++++++---- lib/vsprintf.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt index 8994c65aa3b0..7ee51269096f 100644 --- a/Documentation/printk-formats.txt +++ b/Documentation/printk-formats.txt @@ -82,18 +82,20 @@ Struct Resources: Physical addresses types phys_addr_t: - %pa[p] 0x01234567 or 0x0123456789abcdef + %pa[p][P] 0x01234567 or 0x0123456789abcdef For printing a phys_addr_t type (and its derivatives, such as resource_size_t) which can vary based on build options, regardless of - the width of the CPU data path. Passed by reference. + the width of the CPU data path. Passed by reference. Use the trailing + 'P' if it needs to be always shown. DMA addresses types dma_addr_t: - %pad 0x01234567 or 0x0123456789abcdef + %pad[P] 0x01234567 or 0x0123456789abcdef For printing a dma_addr_t type which can vary based on build options, - regardless of the width of the CPU data path. Passed by reference. + regardless of the width of the CPU data path. Passed by reference. Use + the trailing 'P' if it needs to be always shown. Raw buffer as an escaped string: diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 404d477d4bd2..37f9d615e622 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1394,23 +1394,29 @@ static noinline_for_stack char *address_val(char *buf, char *end, const void *addr, const char *fmt) { unsigned long long num; + int cleanse = kptr_restrict_cleanse_addresses(); + int decleanse_idx = 1; int size; switch (fmt[1]) { case 'd': num = *(const dma_addr_t *)addr; size = sizeof(dma_addr_t); + decleanse_idx = 2; break; case 'p': + decleanse_idx = 2; + /* fall thru */ default: num = *(const phys_addr_t *)addr; size = sizeof(phys_addr_t); break; } - return special_hex_number(buf, end, - kptr_restrict_cleanse_addresses() ? 0UL : num, - size); + /* 'P' on the tail means don't restrict the pointer. */ + cleanse = cleanse && (fmt[decleanse_idx] != 'P'); + + return special_hex_number(buf, end, cleanse ? 0UL : num, size); } static noinline_for_stack -- 2.12.2
next prev parent reply other threads:[~2017-05-06 4:08 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-05-06 4:06 [RFC 00/06] printk: add more new kernel pointer filter options Greg KH 2017-05-06 4:06 ` [kernel-hardening] " Greg KH 2017-05-06 4:06 ` [RFC 1/6] lib: vsprintf: additional kernel pointer filtering options Greg KH 2017-05-06 4:06 ` [kernel-hardening] " Greg KH 2017-05-16 11:58 ` Petr Mladek 2017-05-16 11:58 ` [kernel-hardening] " Petr Mladek 2017-05-18 14:12 ` Greg KH 2017-05-18 14:12 ` [kernel-hardening] " Greg KH 2017-05-06 4:07 ` [RFC 2/6] lib: vsprintf: whitelist stack traces Greg KH 2017-05-06 4:07 ` [kernel-hardening] " Greg KH 2017-05-06 4:07 ` [RFC 3/6] lib: vsprintf: physical address kernel pointer filtering options Greg KH 2017-05-06 4:07 ` [kernel-hardening] " Greg KH 2017-05-06 10:48 ` Ian Campbell 2017-05-06 4:07 ` [RFC 4/6] lib: vsprintf: default kptr_restrict to the maximum value Greg KH 2017-05-06 4:07 ` [kernel-hardening] " Greg KH 2017-05-06 4:07 ` Greg KH [this message] 2017-05-06 4:07 ` [kernel-hardening] [RFC 5/6] lib: vsprintf: Add "%paP", "%padP" options Greg KH 2017-05-06 4:42 ` Joe Perches 2017-05-06 4:42 ` [kernel-hardening] " Joe Perches 2017-05-06 5:00 ` Greg KH 2017-05-06 5:00 ` [kernel-hardening] " Greg KH 2017-05-16 14:41 ` Petr Mladek 2017-05-16 14:41 ` [kernel-hardening] " Petr Mladek 2017-05-18 14:12 ` Greg KH 2017-05-18 14:12 ` [kernel-hardening] " Greg KH 2017-05-06 4:07 ` [RFC 6/6] drivers: uio: Un-restrict sysfs pointers for UIO Greg KH 2017-05-06 4:07 ` [kernel-hardening] " Greg KH 2017-05-11 1:37 ` [RFC 00/06] printk: add more new kernel pointer filter options Sergey Senozhatsky 2017-05-11 1:37 ` [kernel-hardening] " Sergey Senozhatsky 2017-05-16 21:36 ` Roberts, William C 2017-05-16 21:36 ` [kernel-hardening] " Roberts, William C 2017-05-18 14:13 ` Greg KH 2017-05-18 14:13 ` [kernel-hardening] " Greg KH 2017-05-19 20:25 ` Roberts, William C 2017-05-19 20:25 ` [kernel-hardening] " Roberts, William C
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=20170506040747.GF32707@kroah.com \ --to=gregkh@linuxfoundation.org \ --cc=catalin.marinas@arm.com \ --cc=cfries@google.com \ --cc=kernel-hardening@lists.openwall.com \ --cc=linux-kernel@vger.kernel.org \ --cc=olorin@google.com \ --cc=pmladek@suse.com \ --cc=rostedt@goodmis.org \ --cc=sergey.senozhatsky@gmail.com \ --cc=will.deacon@arm.com \ --cc=william.c.roberts@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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.