Skip to content

Commit

Permalink
devtools: alert on new calls to exit from libs
Browse files Browse the repository at this point in the history
This patch adds a new function that is called
per every checked patch,
and alerts for new instances of rte_panic/rte_exit.
The check excludes comments, and alerts in the case
of a positive balance between additions and removals.

Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Tested-by: Kevin Traynor <ktraynor@redhat.com>
  • Loading branch information
arnonw1 authored and tmonjalo committed Jul 31, 2018
1 parent 2388816 commit 7413e7f
Showing 1 changed file with 89 additions and 0 deletions.
89 changes: 89 additions & 0 deletions devtools/checkpatches.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,88 @@ print_usage () {
END_OF_HELP
}

check_forbidden_additions() {
# This awk script receives a list of expressions to monitor
# and a list of folders to search these expressions in
# - No search is done inside comments
# - Both additions and removals of the expressions are checked
# A positive balance of additions fails the check
read -d '' awk_script << 'EOF'
BEGIN {
split(FOLDERS,deny_folders," ");
split(EXPRESSIONS,deny_expr," ");
in_file=0;
in_comment=0;
count=0;
comment_start="/*"
comment_end="*/"
}
# search for add/remove instances in current file
# state machine assumes the comments structure is enforced by
# checkpatches.pl
(in_file) {
# comment start
if (index($0,comment_start) > 0) {
in_comment = 1
}
# non comment code
if (in_comment == 0) {
for (i in deny_expr) {
forbidden_added = "^\+.*" deny_expr[i];
forbidden_removed="^-.*" deny_expr[i];
current = expressions[deny_expr[i]]
if ($0 ~ forbidden_added) {
count = count + 1;
expressions[deny_expr[i]] = current + 1
}
if ($0 ~ forbidden_removed) {
count = count - 1;
expressions[deny_expr[i]] = current - 1
}
}
}
# comment end
if (index($0,comment_end) > 0) {
in_comment = 0
}
}
# switch to next file , check if the balance of add/remove
# of previous filehad new additions
($0 ~ "^\+\+\+ b/") {
in_file = 0;
if (count > 0) {
exit;
}
for (i in deny_folders) {
re = "^\+\+\+ b/" deny_folders[i];
if ($0 ~ deny_folders[i]) {
in_file = 1
last_file = $0
}
}
}
END {
if (count > 0) {
print "Warning in " substr(last_file,6) ":"
print "are you sure you want to add the following:"
for (key in expressions) {
if (expressions[key] > 0) {
print key
}
}
exit RET_ON_FAIL
}
}
EOF
# ---------------------------------
# refrain from new additions of rte_panic() and rte_exit()
# multiple folders and expressions are separated by spaces
awk -v FOLDERS="lib drivers" \
-v EXPRESSIONS="rte_panic\\\( rte_exit\\\(" \
-v RET_ON_FAIL=1 \
"$awk_script" -
}

number=0
quiet=false
verbose=false
Expand Down Expand Up @@ -97,6 +179,13 @@ check () { # <patch> <commit> <title>
ret=1
fi

! $verbose || printf '\nChecking forbidden tokens additions:\n'
report=$(check_forbidden_additions <"$tmpinput")
if [ $? -ne 0 ] ; then
printf '%s\n' "$report"
ret=1
fi

clean_tmp_files
[ $ret -eq 0 ] && return 0

Expand Down

0 comments on commit 7413e7f

Please sign in to comment.