diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 97c8d73b7b..30dffb68e8 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -1236,8 +1236,14 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner) * * (Note that the undestroyable active grants are not a security hole in * Xen. All active grants can safely be cleaned up when the domain dies.) + * + * NB: the preprocessor conditional is required in order to prevent clang's + * -Wtautological-constant-compare complaining about converting the result + * of a << into a bool is always true if it's evaluated directly in the if + * condition. */ - if ( _PAGE_GNTTAB && (l1e_get_flags(l1e) & _PAGE_GNTTAB) && +#if _PAGE_GNTTAB + if ( (l1e_get_flags(l1e) & _PAGE_GNTTAB) && !l1e_owner->is_shutting_down && !l1e_owner->is_dying ) { gdprintk(XENLOG_WARNING, @@ -1245,6 +1251,7 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner) l1e_get_intpte(l1e)); domain_crash(l1e_owner); } +#endif /* * Remember we didn't take a type-count of foreign writable mappings