On Fri, Sep 18, 2020 at 12:18:52PM +0200, Jean-Philippe Brucker wrote: > +/* Allocate or get existing MMU notifier for this {domain, mm} pair */ > +static struct arm_smmu_mmu_notifier * > +arm_smmu_mmu_notifier_get(struct arm_smmu_domain *smmu_domain, > + struct mm_struct *mm) > +{ > + int ret; > + struct arm_smmu_ctx_desc *cd; > + struct arm_smmu_mmu_notifier *smmu_mn; > + > + list_for_each_entry(smmu_mn, &smmu_domain->mmu_notifiers, list) { > + if (smmu_mn->mn.mm == mm) { > + refcount_inc(&smmu_mn->refs); > + return smmu_mn; > + } > + } > + > + cd = arm_smmu_alloc_shared_cd(mm); > + if (IS_ERR(cd)) > + return ERR_CAST(cd); > + > + smmu_mn = kzalloc(sizeof(*smmu_mn), GFP_KERNEL); > + if (!smmu_mn) { > + ret = -ENOMEM; > + goto err_free_cd; > + } > + > + refcount_set(&smmu_mn->refs, 1); > + smmu_mn->cd = cd; > + smmu_mn->domain = smmu_domain; > + smmu_mn->mn.ops = &arm_smmu_mmu_notifier_ops; > + > + ret = mmu_notifier_register(&smmu_mn->mn, mm); > + if (ret) { > + kfree(smmu_mn); > + goto err_free_cd; > + } I suppose this hasn't been applied yet, but someone asked me to look at this series.. Why did you drop the change to mmu_notifier_get here? I'm strongly trying to discourage static lists matching mm's like smmu_mn is doing. This is handled by the core code, don't open code it.. Thanks, Jason