aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xspectre-meltdown-checker.sh24
1 files changed, 18 insertions, 6 deletions
diff --git a/spectre-meltdown-checker.sh b/spectre-meltdown-checker.sh
index 1d7c72b..30828cc 100755
--- a/spectre-meltdown-checker.sh
+++ b/spectre-meltdown-checker.sh
@@ -170,6 +170,16 @@ _debug()
_echo 3 "\033[34m(debug) $@\033[0m"
}
+is_cpu_vulnerable_cached=0
+_is_cpu_vulnerable_cached()
+{
+ [ "$1" = 1 ] && return $variant1
+ [ "$1" = 2 ] && return $variant2
+ [ "$1" = 3 ] && return $variant3
+ echo "$0: error: invalid variant '$1' passed to is_cpu_vulnerable()" >&2
+ exit 255
+}
+
is_cpu_vulnerable()
{
# param: 1, 2 or 3 (variant)
@@ -177,6 +187,11 @@ is_cpu_vulnerable()
# (note that in shell, a return of 0 is success)
# by default, everything is vulnerable, we work in a "whitelist" logic here.
# usage: is_cpu_vulnerable 2 && do something if vulnerable
+ if [ "$is_cpu_vulnerable_cached" = 1 ]; then
+ _is_cpu_vulnerable_cached "$1"
+ return $?
+ fi
+
variant1=''
variant2=''
variant3=''
@@ -260,12 +275,9 @@ is_cpu_vulnerable()
[ "$variant2" = "immune" ] && variant2=1 || variant2=0
[ "$variant3" = "immune" ] && variant3=1 || variant3=0
_debug "is_cpu_vulnerable: final results are <$variant1> <$variant2> <$variant3>"
-
- [ "$1" = 1 ] && return $variant1
- [ "$1" = 2 ] && return $variant2
- [ "$1" = 3 ] && return $variant3
- echo "$0: error: invalid variant '$1' passed to is_cpu_vulnerable()" >&2
- exit 255
+ is_cpu_vulnerable_cached=1
+ _is_cpu_vulnerable_cached "$1"
+ return $?
}
show_header()