* [PATCH] perf tools: Fix potential array out of bounce accessing
@ 2015-09-01 3:29 Wang Nan
2015-09-01 8:44 ` Matt Fleming
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Wang Nan @ 2015-09-01 3:29 UTC (permalink / raw)
To: acme
Cc: linux-kernel, lizefan, pi3orama, Wang Nan,
Arnaldo Carvalho de Melo, Masami Hiramatsu, David S. Miller,
Matt Fleming, Jiri Olsa
There is a problem in dwarf-regs.c of sh, sparc and x86 that it is
possible to make an out-of-bound array accessing when searching
register names. This patch fixes it by replacing '<=' to '<', so when
register (number == XXX_MAX_REGS), get_arch_regstr() returns NULL.
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Matt Fleming <matt@console-pimps.org>
Cc: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/arch/sh/util/dwarf-regs.c | 2 +-
tools/perf/arch/sparc/util/dwarf-regs.c | 2 +-
tools/perf/arch/x86/util/dwarf-regs.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/arch/sh/util/dwarf-regs.c b/tools/perf/arch/sh/util/dwarf-regs.c
index 0d0897f..f8dfa89 100644
--- a/tools/perf/arch/sh/util/dwarf-regs.c
+++ b/tools/perf/arch/sh/util/dwarf-regs.c
@@ -51,5 +51,5 @@ const char *sh_regs_table[SH_MAX_REGS] = {
/* Return architecture dependent register string (for kprobe-tracer) */
const char *get_arch_regstr(unsigned int n)
{
- return (n <= SH_MAX_REGS) ? sh_regs_table[n] : NULL;
+ return (n < SH_MAX_REGS) ? sh_regs_table[n] : NULL;
}
diff --git a/tools/perf/arch/sparc/util/dwarf-regs.c b/tools/perf/arch/sparc/util/dwarf-regs.c
index 92eda41..b704fdb 100644
--- a/tools/perf/arch/sparc/util/dwarf-regs.c
+++ b/tools/perf/arch/sparc/util/dwarf-regs.c
@@ -39,5 +39,5 @@ const char *sparc_regs_table[SPARC_MAX_REGS] = {
*/
const char *get_arch_regstr(unsigned int n)
{
- return (n <= SPARC_MAX_REGS) ? sparc_regs_table[n] : NULL;
+ return (n < SPARC_MAX_REGS) ? sparc_regs_table[n] : NULL;
}
diff --git a/tools/perf/arch/x86/util/dwarf-regs.c b/tools/perf/arch/x86/util/dwarf-regs.c
index be22dd4..a08de0a 100644
--- a/tools/perf/arch/x86/util/dwarf-regs.c
+++ b/tools/perf/arch/x86/util/dwarf-regs.c
@@ -71,5 +71,5 @@ const char *x86_64_regs_table[X86_64_MAX_REGS] = {
/* Return architecture dependent register string (for kprobe-tracer) */
const char *get_arch_regstr(unsigned int n)
{
- return (n <= ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
+ return (n < ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
}
--
1.8.3.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] perf tools: Fix potential array out of bounce accessing
2015-09-01 3:29 [PATCH] perf tools: Fix potential array out of bounce accessing Wang Nan
@ 2015-09-01 8:44 ` Matt Fleming
2015-09-01 10:00 ` Jiri Olsa
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Matt Fleming @ 2015-09-01 8:44 UTC (permalink / raw)
To: Wang Nan
Cc: acme, linux-kernel, lizefan, pi3orama, Arnaldo Carvalho de Melo,
Masami Hiramatsu, David S. Miller, Jiri Olsa
On Tue, 01 Sep, at 03:29:44AM, Wang Nan wrote:
> There is a problem in dwarf-regs.c of sh, sparc and x86 that it is
> possible to make an out-of-bound array accessing when searching
> register names. This patch fixes it by replacing '<=' to '<', so when
> register (number == XXX_MAX_REGS), get_arch_regstr() returns NULL.
>
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: Matt Fleming <matt@console-pimps.org>
> Cc: Jiri Olsa <jolsa@kernel.org>
> ---
> tools/perf/arch/sh/util/dwarf-regs.c | 2 +-
> tools/perf/arch/sparc/util/dwarf-regs.c | 2 +-
> tools/perf/arch/x86/util/dwarf-regs.c | 2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
Hmm, I wonder how that bug was introduced. I guess copy and paste is
probably to blame. Good catch.
Reviewed-by: Matt Fleming <matt.fleming@intel.com>
--
Matt Fleming, Intel Open Source Technology Center
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf tools: Fix potential array out of bounce accessing
2015-09-01 3:29 [PATCH] perf tools: Fix potential array out of bounce accessing Wang Nan
2015-09-01 8:44 ` Matt Fleming
@ 2015-09-01 10:00 ` Jiri Olsa
2015-09-01 11:14 ` 平松雅巳 / HIRAMATU,MASAMI
2015-09-02 7:27 ` [tip:perf/urgent] perf dwarf: Fix potential array out of bounds access tip-bot for Wang Nan
3 siblings, 0 replies; 5+ messages in thread
From: Jiri Olsa @ 2015-09-01 10:00 UTC (permalink / raw)
To: Wang Nan
Cc: acme, linux-kernel, lizefan, pi3orama, Arnaldo Carvalho de Melo,
Masami Hiramatsu, David S. Miller, Matt Fleming, Jiri Olsa
On Tue, Sep 01, 2015 at 03:29:44AM +0000, Wang Nan wrote:
> There is a problem in dwarf-regs.c of sh, sparc and x86 that it is
> possible to make an out-of-bound array accessing when searching
> register names. This patch fixes it by replacing '<=' to '<', so when
> register (number == XXX_MAX_REGS), get_arch_regstr() returns NULL.
>
Acked-by: Jiri Olsa <jolsa@kernel.org>
thanks,
jirka
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] perf tools: Fix potential array out of bounce accessing
2015-09-01 3:29 [PATCH] perf tools: Fix potential array out of bounce accessing Wang Nan
2015-09-01 8:44 ` Matt Fleming
2015-09-01 10:00 ` Jiri Olsa
@ 2015-09-01 11:14 ` 平松雅巳 / HIRAMATU,MASAMI
2015-09-02 7:27 ` [tip:perf/urgent] perf dwarf: Fix potential array out of bounds access tip-bot for Wang Nan
3 siblings, 0 replies; 5+ messages in thread
From: 平松雅巳 / HIRAMATU,MASAMI @ 2015-09-01 11:14 UTC (permalink / raw)
To: 'Wang Nan', acme@kernel.org
Cc: linux-kernel@vger.kernel.org, lizefan@huawei.com,
pi3orama@huawei.com, Arnaldo Carvalho de Melo, David S. Miller,
Matt Fleming, Jiri Olsa
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 2626 bytes --]
> From: Wang Nan [mailto:wangnan0@huawei.com]
>
> There is a problem in dwarf-regs.c of sh, sparc and x86 that it is
> possible to make an out-of-bound array accessing when searching
> register names. This patch fixes it by replacing '<=' to '<', so when
> register (number == XXX_MAX_REGS), get_arch_regstr() returns NULL.
Oops, right!
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thank you!
>
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: Matt Fleming <matt@console-pimps.org>
> Cc: Jiri Olsa <jolsa@kernel.org>
> ---
> tools/perf/arch/sh/util/dwarf-regs.c | 2 +-
> tools/perf/arch/sparc/util/dwarf-regs.c | 2 +-
> tools/perf/arch/x86/util/dwarf-regs.c | 2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/arch/sh/util/dwarf-regs.c b/tools/perf/arch/sh/util/dwarf-regs.c
> index 0d0897f..f8dfa89 100644
> --- a/tools/perf/arch/sh/util/dwarf-regs.c
> +++ b/tools/perf/arch/sh/util/dwarf-regs.c
> @@ -51,5 +51,5 @@ const char *sh_regs_table[SH_MAX_REGS] = {
> /* Return architecture dependent register string (for kprobe-tracer) */
> const char *get_arch_regstr(unsigned int n)
> {
> - return (n <= SH_MAX_REGS) ? sh_regs_table[n] : NULL;
> + return (n < SH_MAX_REGS) ? sh_regs_table[n] : NULL;
> }
> diff --git a/tools/perf/arch/sparc/util/dwarf-regs.c b/tools/perf/arch/sparc/util/dwarf-regs.c
> index 92eda41..b704fdb 100644
> --- a/tools/perf/arch/sparc/util/dwarf-regs.c
> +++ b/tools/perf/arch/sparc/util/dwarf-regs.c
> @@ -39,5 +39,5 @@ const char *sparc_regs_table[SPARC_MAX_REGS] = {
> */
> const char *get_arch_regstr(unsigned int n)
> {
> - return (n <= SPARC_MAX_REGS) ? sparc_regs_table[n] : NULL;
> + return (n < SPARC_MAX_REGS) ? sparc_regs_table[n] : NULL;
> }
> diff --git a/tools/perf/arch/x86/util/dwarf-regs.c b/tools/perf/arch/x86/util/dwarf-regs.c
> index be22dd4..a08de0a 100644
> --- a/tools/perf/arch/x86/util/dwarf-regs.c
> +++ b/tools/perf/arch/x86/util/dwarf-regs.c
> @@ -71,5 +71,5 @@ const char *x86_64_regs_table[X86_64_MAX_REGS] = {
> /* Return architecture dependent register string (for kprobe-tracer) */
> const char *get_arch_regstr(unsigned int n)
> {
> - return (n <= ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
> + return (n < ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
> }
> --
> 1.8.3.4
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 5+ messages in thread
* [tip:perf/urgent] perf dwarf: Fix potential array out of bounds access
2015-09-01 3:29 [PATCH] perf tools: Fix potential array out of bounce accessing Wang Nan
` (2 preceding siblings ...)
2015-09-01 11:14 ` 平松雅巳 / HIRAMATU,MASAMI
@ 2015-09-02 7:27 ` tip-bot for Wang Nan
3 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Wang Nan @ 2015-09-02 7:27 UTC (permalink / raw)
To: linux-tip-commits
Cc: tglx, masami.hiramatsu.pt, matt, linux-kernel, mingo, davem, hpa,
jolsa, wangnan0, acme, lizefan
Commit-ID: 3b27d13940c3710a1128527c43719cb0bb05d73b
Gitweb: http://git.kernel.org/tip/3b27d13940c3710a1128527c43719cb0bb05d73b
Author: Wang Nan <wangnan0@huawei.com>
AuthorDate: Tue, 1 Sep 2015 03:29:44 +0000
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 1 Sep 2015 11:33:48 -0300
perf dwarf: Fix potential array out of bounds access
There is a problem in the dwarf-regs.c files for sh, sparc and x86 where
it is possible to make an out-of-bounds array access when searching for
register names.
This patch fixes it by replacing '<=' to '<', so when register (number
== XXX_MAX_REGS), get_arch_regstr() will return NULL.
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Reviewed-by: Matt Fleming <matt@console-pimps.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@huawei.com
Link: http://lkml.kernel.org/r/1441078184-105038-1-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/arch/sh/util/dwarf-regs.c | 2 +-
tools/perf/arch/sparc/util/dwarf-regs.c | 2 +-
tools/perf/arch/x86/util/dwarf-regs.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/arch/sh/util/dwarf-regs.c b/tools/perf/arch/sh/util/dwarf-regs.c
index 0d0897f..f8dfa89 100644
--- a/tools/perf/arch/sh/util/dwarf-regs.c
+++ b/tools/perf/arch/sh/util/dwarf-regs.c
@@ -51,5 +51,5 @@ const char *sh_regs_table[SH_MAX_REGS] = {
/* Return architecture dependent register string (for kprobe-tracer) */
const char *get_arch_regstr(unsigned int n)
{
- return (n <= SH_MAX_REGS) ? sh_regs_table[n] : NULL;
+ return (n < SH_MAX_REGS) ? sh_regs_table[n] : NULL;
}
diff --git a/tools/perf/arch/sparc/util/dwarf-regs.c b/tools/perf/arch/sparc/util/dwarf-regs.c
index 92eda41..b704fdb 100644
--- a/tools/perf/arch/sparc/util/dwarf-regs.c
+++ b/tools/perf/arch/sparc/util/dwarf-regs.c
@@ -39,5 +39,5 @@ const char *sparc_regs_table[SPARC_MAX_REGS] = {
*/
const char *get_arch_regstr(unsigned int n)
{
- return (n <= SPARC_MAX_REGS) ? sparc_regs_table[n] : NULL;
+ return (n < SPARC_MAX_REGS) ? sparc_regs_table[n] : NULL;
}
diff --git a/tools/perf/arch/x86/util/dwarf-regs.c b/tools/perf/arch/x86/util/dwarf-regs.c
index be22dd4..a08de0a 100644
--- a/tools/perf/arch/x86/util/dwarf-regs.c
+++ b/tools/perf/arch/x86/util/dwarf-regs.c
@@ -71,5 +71,5 @@ const char *x86_64_regs_table[X86_64_MAX_REGS] = {
/* Return architecture dependent register string (for kprobe-tracer) */
const char *get_arch_regstr(unsigned int n)
{
- return (n <= ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
+ return (n < ARCH_MAX_REGS) ? arch_regs_table[n] : NULL;
}
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-09-02 7:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-01 3:29 [PATCH] perf tools: Fix potential array out of bounce accessing Wang Nan
2015-09-01 8:44 ` Matt Fleming
2015-09-01 10:00 ` Jiri Olsa
2015-09-01 11:14 ` 平松雅巳 / HIRAMATU,MASAMI
2015-09-02 7:27 ` [tip:perf/urgent] perf dwarf: Fix potential array out of bounds access tip-bot for Wang Nan
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.