KVM_GUESTDBG_INJECT_DB | \
        KVM_GUESTDBG_BLOCKIRQ)
 
-
-#define PFERR_PRESENT_BIT 0
-#define PFERR_WRITE_BIT 1
-#define PFERR_USER_BIT 2
-#define PFERR_RSVD_BIT 3
-#define PFERR_FETCH_BIT 4
-#define PFERR_PK_BIT 5
-#define PFERR_SGX_BIT 15
-#define PFERR_GUEST_FINAL_BIT 32
-#define PFERR_GUEST_PAGE_BIT 33
-#define PFERR_IMPLICIT_ACCESS_BIT 48
-
-#define PFERR_PRESENT_MASK     BIT(PFERR_PRESENT_BIT)
-#define PFERR_WRITE_MASK       BIT(PFERR_WRITE_BIT)
-#define PFERR_USER_MASK                BIT(PFERR_USER_BIT)
-#define PFERR_RSVD_MASK                BIT(PFERR_RSVD_BIT)
-#define PFERR_FETCH_MASK       BIT(PFERR_FETCH_BIT)
-#define PFERR_PK_MASK          BIT(PFERR_PK_BIT)
-#define PFERR_SGX_MASK         BIT(PFERR_SGX_BIT)
-#define PFERR_GUEST_FINAL_MASK BIT_ULL(PFERR_GUEST_FINAL_BIT)
-#define PFERR_GUEST_PAGE_MASK  BIT_ULL(PFERR_GUEST_PAGE_BIT)
-#define PFERR_IMPLICIT_ACCESS  BIT_ULL(PFERR_IMPLICIT_ACCESS_BIT)
+#define PFERR_PRESENT_MASK     BIT(0)
+#define PFERR_WRITE_MASK       BIT(1)
+#define PFERR_USER_MASK                BIT(2)
+#define PFERR_RSVD_MASK                BIT(3)
+#define PFERR_FETCH_MASK       BIT(4)
+#define PFERR_PK_MASK          BIT(5)
+#define PFERR_SGX_MASK         BIT(15)
+#define PFERR_GUEST_FINAL_MASK BIT_ULL(32)
+#define PFERR_GUEST_PAGE_MASK  BIT_ULL(33)
+#define PFERR_IMPLICIT_ACCESS  BIT_ULL(48)
 
 #define PFERR_NESTED_GUEST_PAGE (PFERR_GUEST_PAGE_MASK |       \
                                 PFERR_WRITE_MASK |             \
 
         */
        u64 implicit_access = access & PFERR_IMPLICIT_ACCESS;
        bool not_smap = ((rflags & X86_EFLAGS_AC) | implicit_access) == X86_EFLAGS_AC;
-       int index = (pfec + (not_smap << PFERR_RSVD_BIT)) >> 1;
+       int index = (pfec | (not_smap ? PFERR_RSVD_MASK : 0)) >> 1;
        u32 errcode = PFERR_PRESENT_MASK;
        bool fault;
 
                pkru_bits = (vcpu->arch.pkru >> (pte_pkey * 2)) & 3;
 
                /* clear present bit, replace PFEC.RSVD with ACC_USER_MASK. */
-               offset = (pfec & ~1) +
-                       ((pte_access & PT_USER_MASK) << (PFERR_RSVD_BIT - PT_USER_SHIFT));
+               offset = (pfec & ~1) | ((pte_access & PT_USER_MASK) ? PFERR_RSVD_MASK : 0);
 
                pkru_bits &= mmu->pkru_mask >> offset;
                errcode |= -pkru_bits & PFERR_PK_MASK;