diff mbox series

[net-next] tools: bpf: handle long path in jit disasm

Message ID 20171102080945.7436-1-bhole_prashant_q7@lab.ntt.co.jp
State Accepted, archived
Delegated to: David Miller
Headers show
Series [net-next] tools: bpf: handle long path in jit disasm | expand

Commit Message

Prashant Bhole Nov. 2, 2017, 8:09 a.m. UTC
Use PATH_MAX instead of hardcoded array size 256

Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
---
 tools/bpf/bpf_jit_disasm.c     | 3 ++-
 tools/bpf/bpftool/jit_disasm.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

Comments

David Miller Nov. 2, 2017, 11:25 a.m. UTC | #1
From: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
Date: Thu,  2 Nov 2017 17:09:45 +0900

> Use PATH_MAX instead of hardcoded array size 256
> 
> Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>

Applied, thank you.
Rustad, Mark D Nov. 2, 2017, 9:19 p.m. UTC | #2
> On Nov 2, 2017, at 1:09 AM, Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp> wrote:
> 
> Use PATH_MAX instead of hardcoded array size 256
> 
> Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
> ---
> tools/bpf/bpf_jit_disasm.c     | 3 ++-
> tools/bpf/bpftool/jit_disasm.c | 3 ++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/bpf/bpf_jit_disasm.c b/tools/bpf/bpf_jit_disasm.c
> index 422d9abd666a..75bf526a0168 100644
> --- a/tools/bpf/bpf_jit_disasm.c
> +++ b/tools/bpf/bpf_jit_disasm.c
> @@ -27,6 +27,7 @@
> #include <sys/klog.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> +#include <limits.h>
> 
> #define CMD_ACTION_SIZE_BUFFER		10
> #define CMD_ACTION_READ_ALL		3
> @@ -51,7 +52,7 @@ static void get_exec_path(char *tpath, size_t size)
> static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
> {
> 	int count, i, pc = 0;
> -	char tpath[256];
> +	char tpath[PATH_MAX];

Seems like such a nice thing, *but* PATH_MAX is 4096. Can things really tolerate 4k on the stack here?

> 	struct disassemble_info info;
> 	disassembler_ftype disassemble;
> 	bfd *bfdf;
> diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
> index 5937e134e408..1551d3918d4c 100644
> --- a/tools/bpf/bpftool/jit_disasm.c
> +++ b/tools/bpf/bpftool/jit_disasm.c
> @@ -21,6 +21,7 @@
> #include <dis-asm.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> +#include <limits.h>
> 
> #include "json_writer.h"
> #include "main.h"
> @@ -80,7 +81,7 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes)
> 	disassembler_ftype disassemble;
> 	struct disassemble_info info;
> 	int count, i, pc = 0;
> -	char tpath[256];
> +	char tpath[PATH_MAX];

Same comment here.

> 	bfd *bfdf;
> 
> 	if (!len)

--
Mark Rustad, Networking Division, Intel Corporation
David Miller Nov. 3, 2017, 12:51 a.m. UTC | #3
From: "Rustad, Mark D" <mark.d.rustad@intel.com>
Date: Thu, 2 Nov 2017 21:19:44 +0000

> 
>> On Nov 2, 2017, at 1:09 AM, Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp> wrote:
>> 
>> Use PATH_MAX instead of hardcoded array size 256
>> 
>> Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
 ...
>> static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
>> {
>> 	int count, i, pc = 0;
>> -	char tpath[256];
>> +	char tpath[PATH_MAX];
> 
> Seems like such a nice thing, *but* PATH_MAX is 4096. Can things really tolerate 4k on the stack here?

This is userland code, why wouldn't it be able to handle 4K on the
stack?
diff mbox series

Patch

diff --git a/tools/bpf/bpf_jit_disasm.c b/tools/bpf/bpf_jit_disasm.c
index 422d9abd666a..75bf526a0168 100644
--- a/tools/bpf/bpf_jit_disasm.c
+++ b/tools/bpf/bpf_jit_disasm.c
@@ -27,6 +27,7 @@ 
 #include <sys/klog.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <limits.h>
 
 #define CMD_ACTION_SIZE_BUFFER		10
 #define CMD_ACTION_READ_ALL		3
@@ -51,7 +52,7 @@  static void get_exec_path(char *tpath, size_t size)
 static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
 {
 	int count, i, pc = 0;
-	char tpath[256];
+	char tpath[PATH_MAX];
 	struct disassemble_info info;
 	disassembler_ftype disassemble;
 	bfd *bfdf;
diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c
index 5937e134e408..1551d3918d4c 100644
--- a/tools/bpf/bpftool/jit_disasm.c
+++ b/tools/bpf/bpftool/jit_disasm.c
@@ -21,6 +21,7 @@ 
 #include <dis-asm.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <limits.h>
 
 #include "json_writer.h"
 #include "main.h"
@@ -80,7 +81,7 @@  void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes)
 	disassembler_ftype disassemble;
 	struct disassemble_info info;
 	int count, i, pc = 0;
-	char tpath[256];
+	char tpath[PATH_MAX];
 	bfd *bfdf;
 
 	if (!len)