Commit 817b89be authored by Jesper Dangaard Brouer's avatar Jesper Dangaard Brouer Committed by Daniel Borkmann

samples/bpf: all XDP samples should unload xdp/bpf prog on SIGTERM

It is common XDP practice to unload/deattach the XDP bpf program,
when the XDP sample program is Ctrl-C interrupted (SIGINT) or
killed (SIGTERM).

The samples/bpf programs xdp_redirect_cpu and xdp_rxq_info,
forgot to trap signal SIGTERM (which is the default signal used
by the kill command).

This was discovered by Red Hat QA, which automated scripts depend
on killing the XDP sample program after a timeout period.

Fixes: fad3917e ("samples/bpf: add cpumap sample program xdp_redirect_cpu")
Fixes: 0fca931a ("samples/bpf: program demonstrating access to xdp_rxq_info")
Reported-by: default avatarJean-Tsung Hsiao <jhsiao@redhat.com>
Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
Acked-by: default avatarYonghong Song <yhs@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 21b172ee
...@@ -679,8 +679,9 @@ int main(int argc, char **argv) ...@@ -679,8 +679,9 @@ int main(int argc, char **argv)
return EXIT_FAIL_OPTION; return EXIT_FAIL_OPTION;
} }
/* Remove XDP program when program is interrupted */ /* Remove XDP program when program is interrupted or killed */
signal(SIGINT, int_exit); signal(SIGINT, int_exit);
signal(SIGTERM, int_exit);
if (bpf_set_link_xdp_fd(ifindex, prog_fd[prog_num], xdp_flags) < 0) { if (bpf_set_link_xdp_fd(ifindex, prog_fd[prog_num], xdp_flags) < 0) {
fprintf(stderr, "link set xdp fd failed\n"); fprintf(stderr, "link set xdp fd failed\n");
......
...@@ -567,8 +567,9 @@ int main(int argc, char **argv) ...@@ -567,8 +567,9 @@ int main(int argc, char **argv)
exit(EXIT_FAIL_BPF); exit(EXIT_FAIL_BPF);
} }
/* Remove XDP program when program is interrupted */ /* Remove XDP program when program is interrupted or killed */
signal(SIGINT, int_exit); signal(SIGINT, int_exit);
signal(SIGTERM, int_exit);
if (bpf_set_link_xdp_fd(ifindex, prog_fd, xdp_flags) < 0) { if (bpf_set_link_xdp_fd(ifindex, prog_fd, xdp_flags) < 0) {
fprintf(stderr, "link set xdp fd failed\n"); fprintf(stderr, "link set xdp fd failed\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment