// SPDX-License-Identifier: GPL-2.0-only /* * Corrupt the XSTATE header in a signal frame * * Based on analysis and a test case from Thomas Gleixner.
*/
if (!xsave_enabled()) {
printf("[SKIP] CR4.OSXSAVE disabled.\n"); return 0;
}
CPU_ZERO(&set);
CPU_SET(0, &set);
/* * Enforce that the child runs on the same CPU * which in turn forces a schedule.
*/
sched_setaffinity(getpid(), sizeof(set), &set);
printf("[RUN]\tSend ourselves a signal\n");
raise(SIGUSR1);
printf("[OK]\tBack from the signal. Now schedule.\n");
pid_t child = fork(); if (child < 0)
err(1, "fork"); if (child == 0) return 0; if (child)
waitpid(child, NULL, 0);
printf("[OK]\tBack in the main thread.\n");
/* * We could try to confirm that extended state is still preserved * when we schedule. For now, the only indication of failure is * a warning in the kernel logs.
*/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.