On Tue, Aug 09, 2022 at 11:11:09AM -0600, Daniel Xu wrote: > Set the exit trap only after argument parsing is done. This way argument > parse failure or `-h` will not require sudo. > > Reasoning is that it's confusing that a help message would require root > access. > > Signed-off-by: Daniel Xu <dxu@xxxxxxxxx> > --- > tools/testing/selftests/bpf/vmtest.sh | 32 +++++++++++++-------------- > 1 file changed, 16 insertions(+), 16 deletions(-) > > diff --git a/tools/testing/selftests/bpf/vmtest.sh b/tools/testing/selftests/bpf/vmtest.sh > index b86ae4a2e5c5..976ef7585b33 100755 > --- a/tools/testing/selftests/bpf/vmtest.sh > +++ b/tools/testing/selftests/bpf/vmtest.sh > @@ -307,6 +307,20 @@ update_kconfig() > fi > } > > +catch() > +{ > + local exit_code=$1 > + local exit_status_file="${OUTPUT_DIR}/${EXIT_STATUS_FILE}" > + # This is just a cleanup and the directory may > + # have already been unmounted. So, don't let this > + # clobber the error code we intend to return. > + unmount_image || true > + if [[ -f "${exit_status_file}" ]]; then > + exit_code="$(cat ${exit_status_file})" > + fi > + exit ${exit_code} > +} > + > main() > { > local script_dir="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)" > @@ -353,6 +367,8 @@ main() > done > shift $((OPTIND -1)) > > + trap 'catch "$?"' EXIT > + > if [[ $# -eq 0 && "${debug_shell}" == "no" ]]; then > echo "No command specified, will run ${DEFAULT_COMMAND} in the vm" > else > @@ -409,20 +425,4 @@ main() > fi > } > > -catch() > -{ > - local exit_code=$1 > - local exit_status_file="${OUTPUT_DIR}/${EXIT_STATUS_FILE}" > - # This is just a cleanup and the directory may > - # have already been unmounted. So, don't let this > - # clobber the error code we intend to return. > - unmount_image || true > - if [[ -f "${exit_status_file}" ]]; then > - exit_code="$(cat ${exit_status_file})" > - fi > - exit ${exit_code} > -} > - > -trap 'catch "$?"' EXIT > - > main "$@" > -- > 2.37.1 > Makes sense and looks good to me. Acked-by: Daniel Müller <deso@xxxxxxxxxx>