# Re: \[PATCH v2 3/5\] ebpf: add a way to dump an eBPF program

- From: Daniel Borkmann \<hidden\>
- Date: 2015-09-11 13:39:25 
- List: netdev
- Page: https://ratatoskr.run/netdev/2015/09/4573698
- Thread: https://ratatoskr.run/netdev/2015/09/4573277/t.md

```text
On 09/11/2015 02:21 AM, Tycho Andersen wrote:
> This commit adds a way to dump eBPF programs. The initial implementation
> doesn't support maps, and therefore only allows dumping seccomp ebpf
> programs which themselves don't currently support maps.
>
> v2: don't export a prog_id for the filter
>
> Signed-off-by: Tycho Andersen <redacted>
> CC: Kees Cook <redacted>
> CC: Will Drewry <redacted>
> CC: Oleg Nesterov <redacted>
> CC: Andy Lutomirski <redacted>
> CC: Pavel Emelyanov <redacted>
> CC: Serge E. Hallyn <redacted>
> CC: Alexei Starovoitov <redacted>
> CC: Daniel Borkmann <redacted>
[...]
> diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
> index dc9b464..58ae9f4 100644
> --- a/kernel/bpf/syscall.c
> +++ b/kernel/bpf/syscall.c
> @@ -586,6 +586,44 @@ free_prog:
>   	return err;
>   }
>
> +static int bpf_prog_dump(union bpf_attr *attr, union bpf_attr __user *uattr)
> +{
> +	int ufd = attr->prog_fd;
> +	struct fd f = fdget(ufd);
> +	struct bpf_prog *prog;
> +	int ret = -EINVAL;
> +
> +	prog = get_prog(f);
> +	if (IS_ERR(prog))
> +		return PTR_ERR(prog);
> +
> +	/* For now, let's refuse to dump anything that isn't a seccomp program.
> +	 * Other program types have support for maps, which our current dump
> +	 * code doesn't support.
> +	 */
> +	if (prog->type != BPF_PROG_TYPE_SECCOMP)
> +		goto out;

Yep, also when you start adding helper calls (next to map objects) you'd
need to undo kernel pointers that the verifier sets here.
```
