Messages in this thread | | | Date | Tue, 27 Aug 2019 12:40:41 -0600 | From | Alex Williamson <> | Subject | Re: [PATCH] vfio/type1: avoid redundant PageReserved checking |
| |
On Tue, 27 Aug 2019 20:49:48 +0800 Ben Luo <luoben@linux.alibaba.com> 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 <luoben@linux.alibaba.com> > --- > 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
| |