In iommu_range_alloc() we generate a mask by right shifting ~0,
however if the specified alignment is 0 then we right shift by 64,
which is undefined. UBSAN tells us so:
  UBSAN: Undefined behaviour in ../arch/powerpc/kernel/iommu.c:193:35
  shift exponent 64 is too large for 64-bit type 'long unsigned int'
We can avoid it by instead generating the mask with:
  align_mask = (1ull << align_order) - 1;
That will also generate an undefined shift if align_order is 64 or
greater, but that shouldn't be a problem for a while.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
        unsigned int pool_nr;
        struct iommu_pool *pool;
 
-       align_mask = 0xffffffffffffffffl >> (64 - align_order);
+       align_mask = (1ull << align_order) - 1;
 
        /* This allocator was derived from x86_64's bit string search */