On Tue, 27 Aug 2019 20:49:48 +0800
Ben Luo <[email protected]> wrote:

> currently, if the page is not a tail of compound page, it will be
> checked twice for the same thing.
> 
> Signed-off-by: Ben Luo <[email protected]>
> ---
>  drivers/vfio/vfio_iommu_type1.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
> index 054391f..cbe0d88 100644
> --- a/drivers/vfio/vfio_iommu_type1.c
> +++ b/drivers/vfio/vfio_iommu_type1.c
> @@ -291,11 +291,10 @@ static int vfio_lock_acct(struct vfio_dma *dma, long 
> npage, bool async)
>  static bool is_invalid_reserved_pfn(unsigned long pfn)
>  {
>       if (pfn_valid(pfn)) {
> -             bool reserved;
>               struct page *tail = pfn_to_page(pfn);
>               struct page *head = compound_head(tail);
> -             reserved = !!(PageReserved(head));
>               if (head != tail) {
> +                     bool reserved = !!(PageReserved(head));
>                       /*
>                        * "head" is not a dangling pointer
>                        * (compound_head takes care of that)
> @@ -310,7 +309,7 @@ static bool is_invalid_reserved_pfn(unsigned long pfn)
>                       if (PageTail(tail))
>                               return reserved;
>               }
> -             return PageReserved(tail);
> +             return !!(PageReserved(tail));
>       }
>  
>       return true;

Logic seems fine to me, though I'd actually prefer to get rid of the !!
in the first use than duplicate it at the second use.  Thanks,

Alex

Reply via email to