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

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

Commit Message

Prashant Bhole Nov. 2, 2017, 8:09 a.m.
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. | #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. | #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. | #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?

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)