On Mon, Sep 17, 2018 at 10:33 AM John Fastabend <john.fastab...@gmail.com> wrote: > > Ensure that sockets added to a sock{map|hash} that is not in the > ESTABLISHED state is rejected. > > Fixes: 1aa12bdf1bfb ("bpf: sockmap, add sock close() hook to remove socks") > Signed-off-by: John Fastabend <john.fastab...@gmail.com> > --- > tools/testing/selftests/bpf/test_maps.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/bpf/test_maps.c > b/tools/testing/selftests/bpf/test_maps.c > index 6f54f84..0f2090f 100644 > --- a/tools/testing/selftests/bpf/test_maps.c > +++ b/tools/testing/selftests/bpf/test_maps.c > @@ -580,7 +580,11 @@ static void test_sockmap(int tasks, void *data) > /* Test update without programs */ > for (i = 0; i < 6; i++) { > err = bpf_map_update_elem(fd, &i, &sfd[i], BPF_ANY); > - if (err) { > + if (i < 2 && !err) { > + printf("Allowed update sockmap '%i:%i' not in > ESTABLISHED\n", > + i, sfd[i]); > + goto out_sockmap; > + } else if (i > 1 && err) {
Just a nit. Maybe "i >= 2" since it will be more clear since it is opposite of "i < 2"? > printf("Failed noprog update sockmap '%i:%i'\n", > i, sfd[i]); > goto out_sockmap; > @@ -741,7 +745,7 @@ static void test_sockmap(int tasks, void *data) > } > > /* Test map update elem afterwards fd lives in fd and map_fd */ > - for (i = 0; i < 6; i++) { > + for (i = 2; i < 6; i++) { > err = bpf_map_update_elem(map_fd_rx, &i, &sfd[i], BPF_ANY); > if (err) { > printf("Failed map_fd_rx update sockmap %i '%i:%i'\n", > @@ -845,7 +849,7 @@ static void test_sockmap(int tasks, void *data) > } > > /* Delete the elems without programs */ > - for (i = 0; i < 6; i++) { > + for (i = 2; i < 6; i++) { > err = bpf_map_delete_elem(fd, &i); > if (err) { > printf("Failed delete sockmap %i '%i:%i'\n", >