On Thu, Aug 15, 2019 at 10:30 AM Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx> wrote: > > On Thu, 15 Aug 2019 10:09:38 -0700, Andrii Nakryiko wrote: > > On Thu, Aug 15, 2019 at 7:24 AM Quentin Monnet wrote: > > > When showing metadata about a single program by invoking > > > "bpftool prog show PROG", the file descriptor referring to the program > > > is not closed before returning from the function. Let's close it. > > > > > > Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool") > > > Signed-off-by: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx> > > > Reviewed-by: Jakub Kicinski <jakub.kicinski@xxxxxxxxxxxxx> > > > --- > > > tools/bpf/bpftool/prog.c | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c > > > index 66f04a4846a5..43fdbbfe41bb 100644 > > > --- a/tools/bpf/bpftool/prog.c > > > +++ b/tools/bpf/bpftool/prog.c > > > @@ -363,7 +363,9 @@ static int do_show(int argc, char **argv) > > > if (fd < 0) > > > return -1; > > > > > > - return show_prog(fd); > > > + err = show_prog(fd); > > > + close(fd); > > > + return err; > > > > There is a similar problem few lines above for special case of argc == > > 2, which you didn't fix. > > This is the special argc == 2 case. Yep, you are right, the other one already does this. > > > Would it be better to make show_prog(fd) close provided fd instead or > > is it used in some other context where FD should live longer (I > > haven't checked, sorry)? > > I think it used to close that's how the bug crept in. Other than the bug > it's fine the way it is. So are you saying that show_prog() should or should not close FD?