On Thu, May 02, 2019 at 11:49:32AM -0400, Lorenz Bauer wrote: > Currently, code like the following segfaults if bpf_prog_load_xattr > returns an error: > > struct bpf_object *obj; > > err = bpf_prog_load_xattr(&attr, &obj, &prog_fd); > bpf_object__close(obj); This is a bug. err should always be checked first before using obj or prog_fd. If there is err, calling bpf_object__close(NULL) is another redundancy. > if (err) > ... > > Unconditionally reset pobj to NULL at the start of the function > to fix this. Hence, this change is unnecessary. > > Signed-off-by: Lorenz Bauer <lmb@xxxxxxxxxxxxxx> > --- > tools/lib/bpf/libbpf.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index 11a65db4b93f..2ddf3212b8f7 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -3363,6 +3363,8 @@ int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr, > struct bpf_map *map; > int err; > > + *pobj = NULL; > + > if (!attr) > return -EINVAL; > if (!attr->file) > -- > 2.19.1 >