cpu_especulation_barreira serviço de kernel
Propósito
Fornece proteção contra ataques colaterais de execução especulativa.
Sintaxe
#include <sys/processor.h>
void cpu_speculation_barrier ( void )
Descrição
O serviço kernel
cpu_speculation_barrier fornece extensões de kernel com mitigação dependente do processador contra conhecidas vulnerabilidades de execução especulativa. O serviço kernel cpu_speculation_barrier pode ser usado para proteger contra ataques de canais laterais dentro do ambiente do kernel. Extensões do kernel devem ser cuidadosamente vetados quando o serviço de kernel cpu_speculation_barrier é usado.Nota: O desempenho do Kernel pode reduzir quando o serviço de kernel
cpu_speculation_barrier é usado.O serviço kernel cpu_speculation_barrier deve ser chamado antes de o armazenamento ser acessado usando endereços que são computados a partir de uma fonte não confiável. Portanto, apenas extensões do kernel que referencia dados do modo usuário diretamente sem usar os serviços de acesso de domínio de privilégio cruzado, como o serviço copyin , podem usar o serviço kernel cpu_speculation_barrier .
Ambiente de Execução
O serviço kernel cpu_speculation_barrier pode ser chamado a partir do ambiente de processo ou do ambiente de interrupção do .
Exemplo:
O exemplo a seguir mostra um manipulador de driver de dispositivo
ioctl que referencia diretamente dados do modo de usuário:int
dd_ioctl(dev_t devno, int cmd, void *arg, ulong devflag, chan_t chan, int ext)
{
int index;
char val;
vector_t *uvec = NULL;
extern int max_kdata_index;
extern char kdata[];
if (cmd == 0xC1C2) {
/* Select kernel data from user input */
uvec = (vector_t *)arg;
index = uvec->index;
if (index < max_kdata_index) {
cpu_speculation_barrier();
val = kdata[index];
uvec->data[val]++;
}
}
}
Valores De Retorno
O serviço kernel cpu_speculation_barrier não retorna nenhum valor.