Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53fa56f0 authored by Will Deacon's avatar Will Deacon Committed by Will Deacon
Browse files

FROMGIT: drivers/iommu: Initialise module 'owner' field in iommu_device_set_ops()



Requiring each IOMMU driver to initialise the 'owner' field of their
'struct iommu_ops' is error-prone and easily forgotten. Follow the
example set by PCI and USB by assigning THIS_MODULE automatically when
registering the ops structure with IOMMU core.

Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
(cherry picked from commit fc10cca69ee8
 git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git

 arm/smmu)
Change-Id: I98dd7b9155dab7dc6890f1bc61f49c124b7eca36
Signed-off-by: default avatarWill Deacon <willdeacon@google.com>
(cherry picked from commit 237cd1e40dae35e2dfc1207ecc12d5338e4f4fbd)
parent 7af24377
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -2733,7 +2733,6 @@ static struct iommu_ops arm_smmu_ops = {
	.get_resv_regions	= arm_smmu_get_resv_regions,
	.put_resv_regions	= arm_smmu_put_resv_regions,
	.pgsize_bitmap		= -1UL, /* Restricted during device attach */
	.owner			= THIS_MODULE,
};

/* Probing and initialisation functions */
+0 −1
Original line number Diff line number Diff line
@@ -1612,7 +1612,6 @@ static struct iommu_ops arm_smmu_ops = {
	.get_resv_regions	= arm_smmu_get_resv_regions,
	.put_resv_regions	= arm_smmu_put_resv_regions,
	.pgsize_bitmap		= -1UL, /* Restricted during device attach */
	.owner			= THIS_MODULE,
};

static void arm_smmu_device_reset(struct arm_smmu_device *smmu)
+9 −2
Original line number Diff line number Diff line
@@ -378,12 +378,19 @@ void iommu_device_sysfs_remove(struct iommu_device *iommu);
int  iommu_device_link(struct iommu_device   *iommu, struct device *link);
void iommu_device_unlink(struct iommu_device *iommu, struct device *link);

static inline void iommu_device_set_ops(struct iommu_device *iommu,
static inline void __iommu_device_set_ops(struct iommu_device *iommu,
					  const struct iommu_ops *ops)
{
	iommu->ops = ops;
}

#define iommu_device_set_ops(iommu, ops)				\
do {									\
	struct iommu_ops *__ops = (struct iommu_ops *)(ops);		\
	__ops->owner = THIS_MODULE;					\
	__iommu_device_set_ops(iommu, __ops);				\
} while (0)

static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
					   struct fwnode_handle *fwnode)
{