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.