All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] tools/bpftool: ignore build products
@ 2018-07-18 13:35 Taeung Song
  2018-07-18 13:35 ` [PATCH 2/2] tools/bpftool: Fix segfault case regarding 'pin' arguments Taeung Song
  0 siblings, 1 reply; 4+ messages in thread
From: Taeung Song @ 2018-07-18 13:35 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann; +Cc: netdev, linux-kernel

For untracked things of tools/bpf, add this.

Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
 tools/bpf/.gitignore | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 tools/bpf/.gitignore

diff --git a/tools/bpf/.gitignore b/tools/bpf/.gitignore
new file mode 100644
index 000000000000..dfe2bd5a4b95
--- /dev/null
+++ b/tools/bpf/.gitignore
@@ -0,0 +1,5 @@
+FEATURE-DUMP.bpf
+bpf_asm
+bpf_dbg
+bpf_exp.yacc.*
+bpf_jit_disasm
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] tools/bpftool: Fix segfault case regarding 'pin' arguments
  2018-07-18 13:35 [PATCH 1/2] tools/bpftool: ignore build products Taeung Song
@ 2018-07-18 13:35 ` Taeung Song
  2018-07-18 18:19   ` Jakub Kicinski
  0 siblings, 1 reply; 4+ messages in thread
From: Taeung Song @ 2018-07-18 13:35 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann; +Cc: netdev, linux-kernel, Jakub Kicinski

Arguments of 'pin' subcommand should be checked
at the very beginning of do_pin_any().
Otherwise segfault errors can occur when using
'map pin' or 'prog pin' commands, so fix it.

  # bpftool prog pin id
  Segmentation fault

Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool")
Cc: Jakub Kicinski <jakub.kicinski@netronome.com>
Reported-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
 tools/bpf/bpftool/common.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
index 32f9e397a6c0..b1e1ba9e1c90 100644
--- a/tools/bpf/bpftool/common.c
+++ b/tools/bpf/bpftool/common.c
@@ -217,6 +217,14 @@ int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32))
 	int err;
 	int fd;
 
+	if (argc < 3) {
+		p_err("too few arguments, id PROG_ID and FILE path is required");
+		return -1;
+	} else if (argc > 3) {
+		p_err("too many arguments");
+		return -1;
+	}
+
 	if (!is_prefix(*argv, "id")) {
 		p_err("expected 'id' got %s", *argv);
 		return -1;
@@ -230,9 +238,6 @@ int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32))
 	}
 	NEXT_ARG();
 
-	if (argc != 1)
-		usage();
-
 	fd = get_fd_by_id(id);
 	if (fd < 0) {
 		p_err("can't get prog by id (%u): %s", id, strerror(errno));
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] tools/bpftool: Fix segfault case regarding 'pin' arguments
  2018-07-18 13:35 ` [PATCH 2/2] tools/bpftool: Fix segfault case regarding 'pin' arguments Taeung Song
@ 2018-07-18 18:19   ` Jakub Kicinski
  2018-07-19  2:44     ` Taeung Song
  0 siblings, 1 reply; 4+ messages in thread
From: Jakub Kicinski @ 2018-07-18 18:19 UTC (permalink / raw)
  To: Taeung Song; +Cc: Alexei Starovoitov, Daniel Borkmann, netdev, linux-kernel

On Wed, 18 Jul 2018 22:35:26 +0900, Taeung Song wrote:
> Arguments of 'pin' subcommand should be checked
> at the very beginning of do_pin_any().
> Otherwise segfault errors can occur when using
> 'map pin' or 'prog pin' commands, so fix it.
> 
>   # bpftool prog pin id
>   Segmentation fault
> 
> Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool")
> Cc: Jakub Kicinski <jakub.kicinski@netronome.com>
> Reported-by: Taehee Yoo <ap420073@gmail.com>
> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
> ---
>  tools/bpf/bpftool/common.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
> index 32f9e397a6c0..b1e1ba9e1c90 100644
> --- a/tools/bpf/bpftool/common.c
> +++ b/tools/bpf/bpftool/common.c
> @@ -217,6 +217,14 @@ int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32))
>  	int err;
>  	int fd;
>  
> +	if (argc < 3) {
> +		p_err("too few arguments, id PROG_ID and FILE path is required");

Thanks for the fix!  You can't say PROG_ID here, because this function
is also called by bpftool map pin id X.  How about s/PROG_ID/ID/ ?

> +		return -1;
> +	} else if (argc > 3) {
> +		p_err("too many arguments");
> +		return -1;
> +	}
> +
>  	if (!is_prefix(*argv, "id")) {
>  		p_err("expected 'id' got %s", *argv);
>  		return -1;
> @@ -230,9 +238,6 @@ int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32))
>  	}
>  	NEXT_ARG();
>  
> -	if (argc != 1)
> -		usage();
> -
>  	fd = get_fd_by_id(id);
>  	if (fd < 0) {
>  		p_err("can't get prog by id (%u): %s", id, strerror(errno));


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] tools/bpftool: Fix segfault case regarding 'pin' arguments
  2018-07-18 18:19   ` Jakub Kicinski
@ 2018-07-19  2:44     ` Taeung Song
  0 siblings, 0 replies; 4+ messages in thread
From: Taeung Song @ 2018-07-19  2:44 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: Alexei Starovoitov, Daniel Borkmann, netdev, linux-kernel



On 07/19/2018 03:19 AM, Jakub Kicinski wrote:
> On Wed, 18 Jul 2018 22:35:26 +0900, Taeung Song wrote:
>> Arguments of 'pin' subcommand should be checked
>> at the very beginning of do_pin_any().
>> Otherwise segfault errors can occur when using
>> 'map pin' or 'prog pin' commands, so fix it.
>>
>>    # bpftool prog pin id
>>    Segmentation fault
>>
>> Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool")
>> Cc: Jakub Kicinski <jakub.kicinski@netronome.com>
>> Reported-by: Taehee Yoo <ap420073@gmail.com>
>> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
>> ---
>>   tools/bpf/bpftool/common.c | 11 ++++++++---
>>   1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
>> index 32f9e397a6c0..b1e1ba9e1c90 100644
>> --- a/tools/bpf/bpftool/common.c
>> +++ b/tools/bpf/bpftool/common.c
>> @@ -217,6 +217,14 @@ int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32))
>>   	int err;
>>   	int fd;
>>   
>> +	if (argc < 3) {
>> +		p_err("too few arguments, id PROG_ID and FILE path is required");
> 
> Thanks for the fix!  You can't say PROG_ID here, because this function
> is also called by bpftool map pin id X.  How about s/PROG_ID/ID/ ?
> 

Yep! will fix it :)

--
Thanks,
Taeung

>> +		return -1;
>> +	} else if (argc > 3) {
>> +		p_err("too many arguments");
>> +		return -1;
>> +	}
>> +
>>   	if (!is_prefix(*argv, "id")) {
>>   		p_err("expected 'id' got %s", *argv);
>>   		return -1;
>> @@ -230,9 +238,6 @@ int do_pin_any(int argc, char **argv, int (*get_fd_by_id)(__u32))
>>   	}
>>   	NEXT_ARG();
>>   
>> -	if (argc != 1)
>> -		usage();
>> -
>>   	fd = get_fd_by_id(id);
>>   	if (fd < 0) {
>>   		p_err("can't get prog by id (%u): %s", id, strerror(errno));
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-07-19  2:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-18 13:35 [PATCH 1/2] tools/bpftool: ignore build products Taeung Song
2018-07-18 13:35 ` [PATCH 2/2] tools/bpftool: Fix segfault case regarding 'pin' arguments Taeung Song
2018-07-18 18:19   ` Jakub Kicinski
2018-07-19  2:44     ` Taeung Song

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.