diff options
-rw-r--r-- | tests/auto/kallsyms/tst_kallsyms.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/kallsyms/tst_kallsyms.cpp b/tests/auto/kallsyms/tst_kallsyms.cpp index 6d9e31c..416390e 100644 --- a/tests/auto/kallsyms/tst_kallsyms.cpp +++ b/tests/auto/kallsyms/tst_kallsyms.cpp @@ -115,6 +115,25 @@ private slots: if (!QFile::exists(path)) QSKIP("/proc/kallsysms not available"); + auto checkSysCtl = [](const QString &knob, int expectedValue) -> bool { + QFile file(QLatin1String("/proc/sys/kernel/") + knob); + if (!file.open(QIODevice::ReadOnly)) { + qWarning() << "failed to open sysctl file for" << knob; + return false; + } + const auto contents = file.readAll().trimmed(); + bool ok = false; + const auto value = contents.toInt(&ok); + if (!ok) + qWarning() << "Failed to parse sysctl file contents for" << knob << contents; + return ok && value == expectedValue; + }; + if (!checkSysCtl(QStringLiteral("kptr_restrict"), 0)) { + QEXPECT_FAIL("", "sysctl kernel.kptr_restrict != 0, cannot parse /proc/kallsyms", Abort); + } else if (!checkSysCtl(QStringLiteral("perf_event_paranoid"), -1)) { + QEXPECT_FAIL("", "sysctl kernel.perf_event_paranoid != -1, cannot parse /proc/kallsyms", Abort); + } + PerfKallsyms kallsyms; QVERIFY(kallsyms.parseMapping(path)); QVERIFY(kallsyms.errorString().isEmpty()); |