Re: [PATCH v13 08/13] x86/sgx: Add wrappers for ENCLS leaf functions

From: Andy Shevchenko
Date: Mon Sep 03 2018 - 11:01:53 EST


On Mon, Aug 27, 2018 at 9:58 PM Jarkko Sakkinen
<jarkko.sakkinen@xxxxxxxxxxxxxxx> wrote:
>
> Add wrappers for Intel(R) SGX ENCLS opcode leaf functions except
> ENCLS(EINIT). ENCLS invokes privileged functions for managing (creation,
> initialization and swapping) and debugging enclaves.

> +#define ENCLS_FAULT_FLAG 0x40000000UL
> +#define ENCLS_FAULT_FLAG_ASM "$0x40000000"

Hmm... Why it can't have same name?

See, how _AC() macro is defined and being used.

> +#define ENCLS_TRAPNR(r) ((r) & ~ENCLS_FAULT_FLAG)

If result of macro is assigned to some variable and (r) by some reason
is 32-bit type
and you compile as 64-bit object, compiler will warn here.
Please, check this is not the case in any of use of this macro.
Otherwise you need a type casting, like

foo = bar & (u32)~BAR;

(or using typeof() might work)

--
With Best Regards,
Andy Shevchenko