On Mon, Nov 15, 2021 at 10:05:42AM +0800, Lu Baolu wrote: > +enum iommu_dma_owner { > + DMA_OWNER_NONE, > + DMA_OWNER_KERNEL, > + DMA_OWNER_USER, > +}; > + > + enum iommu_dma_owner dma_owner; > + refcount_t owner_cnt; > + struct file *owner_user_file; I'd just overload the ownership into owner_user_file, NULL -> no owner (struct file *)1UL) -> kernel real pointer -> user Which could simplify a lot of the code dealing with the owner.