All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: Joerg Roedel <joro@8bytes.org>
Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	linux-arm-msm@vger.kernel.org,
	linux-mediatek@lists.infradead.org,
	virtualization@lists.linux-foundation.org,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Hanjun Guo <guohanjun@huawei.com>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>,
	Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Thierry Reding <thierry.reding@gmail.com>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Joerg Roedel <jroedel@suse.de>
Subject: Re: [PATCH 10/15] iommu/arm-smmu: Use accessor functions for iommu private data
Date: Mon, 16 Mar 2020 18:55:15 +0100	[thread overview]
Message-ID: <20200316175515.GP304669@myrica> (raw)
In-Reply-To: <20200310091229.29830-11-joro@8bytes.org>

On Tue, Mar 10, 2020 at 10:12:24AM +0100, Joerg Roedel wrote:
> From: Joerg Roedel <jroedel@suse.de>
> 
> Make use of dev_iommu_priv_set/get() functions and simplify the code
> where possible with this change.
> 
> Tested-by: Will Deacon <will@kernel.org> # arm-smmu
> Signed-off-by: Joerg Roedel <jroedel@suse.de>
> ---
[...]
> @@ -1467,7 +1470,7 @@ static void arm_smmu_remove_device(struct device *dev)
>  	if (!fwspec || fwspec->ops != &arm_smmu_ops)
>  		return;
>  
> -	cfg  = fwspec->iommu_priv;
> +	cfg  = dev_iommu_priv_get(dev);
>  	smmu = cfg->smmu;
>  
>  	ret = arm_smmu_rpm_get(smmu);
> @@ -1475,23 +1478,22 @@ static void arm_smmu_remove_device(struct device *dev)
>  		return;
>  
>  	iommu_device_unlink(&smmu->iommu, dev);
> -	arm_smmu_master_free_smes(fwspec);
> +	arm_smmu_master_free_smes(dev);
>  
>  	arm_smmu_rpm_put(smmu);
>  
>  	iommu_group_remove_device(dev);
> -	kfree(fwspec->iommu_priv);
>  	iommu_fwspec_free(dev);
> +	kfree(cfg);

nit: cfg is allocated after fwspec so it might be cleaner to free cfg
before fwspec.

But more importantly, should we clear the private data here and in the
other drivers, by calling dev_iommu_priv_set(dev, NULL) from
remove_device()?  We are leaving stale pointers in dev->iommu and I think
some of the drivers could end up reusing them.

Thanks,
Jean


WARNING: multiple messages have this Message-ID (diff)
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: Joerg Roedel <joro@8bytes.org>
Cc: Will Deacon <will@kernel.org>,
	linux-arm-msm@vger.kernel.org,
	Sudeep Holla <sudeep.holla@arm.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	iommu@lists.linux-foundation.org,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-mediatek@lists.infradead.org,
	Andy Gross <agross@kernel.org>, Joerg Roedel <jroedel@suse.de>,
	Hanjun Guo <guohanjun@huawei.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Sean Paul <sean@poorly.run>, Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH 10/15] iommu/arm-smmu: Use accessor functions for iommu private data
Date: Mon, 16 Mar 2020 18:55:15 +0100	[thread overview]
Message-ID: <20200316175515.GP304669@myrica> (raw)
In-Reply-To: <20200310091229.29830-11-joro@8bytes.org>

On Tue, Mar 10, 2020 at 10:12:24AM +0100, Joerg Roedel wrote:
> From: Joerg Roedel <jroedel@suse.de>
> 
> Make use of dev_iommu_priv_set/get() functions and simplify the code
> where possible with this change.
> 
> Tested-by: Will Deacon <will@kernel.org> # arm-smmu
> Signed-off-by: Joerg Roedel <jroedel@suse.de>
> ---
[...]
> @@ -1467,7 +1470,7 @@ static void arm_smmu_remove_device(struct device *dev)
>  	if (!fwspec || fwspec->ops != &arm_smmu_ops)
>  		return;
>  
> -	cfg  = fwspec->iommu_priv;
> +	cfg  = dev_iommu_priv_get(dev);
>  	smmu = cfg->smmu;
>  
>  	ret = arm_smmu_rpm_get(smmu);
> @@ -1475,23 +1478,22 @@ static void arm_smmu_remove_device(struct device *dev)
>  		return;
>  
>  	iommu_device_unlink(&smmu->iommu, dev);
> -	arm_smmu_master_free_smes(fwspec);
> +	arm_smmu_master_free_smes(dev);
>  
>  	arm_smmu_rpm_put(smmu);
>  
>  	iommu_group_remove_device(dev);
> -	kfree(fwspec->iommu_priv);
>  	iommu_fwspec_free(dev);
> +	kfree(cfg);

nit: cfg is allocated after fwspec so it might be cleaner to free cfg
before fwspec.

But more importantly, should we clear the private data here and in the
other drivers, by calling dev_iommu_priv_set(dev, NULL) from
remove_device()?  We are leaving stale pointers in dev->iommu and I think
some of the drivers could end up reusing them.

Thanks,
Jean

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: Joerg Roedel <joro@8bytes.org>
Cc: Rob Clark <robdclark@gmail.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Will Deacon <will@kernel.org>,
	linux-arm-msm@vger.kernel.org,
	Sudeep Holla <sudeep.holla@arm.com>,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	iommu@lists.linux-foundation.org,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-mediatek@lists.infradead.org,
	Andy Gross <agross@kernel.org>, Joerg Roedel <jroedel@suse.de>,
	Hanjun Guo <guohanjun@huawei.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Sean Paul <sean@poorly.run>, Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH 10/15] iommu/arm-smmu: Use accessor functions for iommu private data
Date: Mon, 16 Mar 2020 18:55:15 +0100	[thread overview]
Message-ID: <20200316175515.GP304669@myrica> (raw)
In-Reply-To: <20200310091229.29830-11-joro@8bytes.org>

On Tue, Mar 10, 2020 at 10:12:24AM +0100, Joerg Roedel wrote:
> From: Joerg Roedel <jroedel@suse.de>
> 
> Make use of dev_iommu_priv_set/get() functions and simplify the code
> where possible with this change.
> 
> Tested-by: Will Deacon <will@kernel.org> # arm-smmu
> Signed-off-by: Joerg Roedel <jroedel@suse.de>
> ---
[...]
> @@ -1467,7 +1470,7 @@ static void arm_smmu_remove_device(struct device *dev)
>  	if (!fwspec || fwspec->ops != &arm_smmu_ops)
>  		return;
>  
> -	cfg  = fwspec->iommu_priv;
> +	cfg  = dev_iommu_priv_get(dev);
>  	smmu = cfg->smmu;
>  
>  	ret = arm_smmu_rpm_get(smmu);
> @@ -1475,23 +1478,22 @@ static void arm_smmu_remove_device(struct device *dev)
>  		return;
>  
>  	iommu_device_unlink(&smmu->iommu, dev);
> -	arm_smmu_master_free_smes(fwspec);
> +	arm_smmu_master_free_smes(dev);
>  
>  	arm_smmu_rpm_put(smmu);
>  
>  	iommu_group_remove_device(dev);
> -	kfree(fwspec->iommu_priv);
>  	iommu_fwspec_free(dev);
> +	kfree(cfg);

nit: cfg is allocated after fwspec so it might be cleaner to free cfg
before fwspec.

But more importantly, should we clear the private data here and in the
other drivers, by calling dev_iommu_priv_set(dev, NULL) from
remove_device()?  We are leaving stale pointers in dev->iommu and I think
some of the drivers could end up reusing them.

Thanks,
Jean


_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

  reply	other threads:[~2020-03-16 17:55 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-10  9:12 [PATCH 00/15 v2] iommu: Move iommu_fwspec out of 'struct device' Joerg Roedel
2020-03-10  9:12 ` Joerg Roedel
2020-03-10  9:12 ` Joerg Roedel
2020-03-10  9:12 ` [PATCH 01/15] iommu: Define dev_iommu_fwspec_get() for !CONFIG_IOMMU_API Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:39   ` Jean-Philippe Brucker
2020-03-16 15:39     ` Jean-Philippe Brucker
2020-03-16 15:39     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 02/15] ACPI/IORT: Remove direct access of dev->iommu_fwspec Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:40   ` Jean-Philippe Brucker
2020-03-16 15:40     ` Jean-Philippe Brucker
2020-03-16 15:40     ` Jean-Philippe Brucker
2020-03-16 15:40     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 03/15] drm/msm/mdp5: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:42   ` Jean-Philippe Brucker
2020-03-16 15:42     ` Jean-Philippe Brucker
2020-03-16 15:42     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 04/15] iommu/tegra-gart: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:42   ` Jean-Philippe Brucker
2020-03-16 15:42     ` Jean-Philippe Brucker
2020-03-16 15:42     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 05/15] iommu: Rename struct iommu_param to dev_iommu Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:45   ` Jean-Philippe Brucker
2020-03-16 15:45     ` Jean-Philippe Brucker
2020-03-16 15:45     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 06/15] iommu: Move iommu_fwspec to struct dev_iommu Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:46   ` Jean-Philippe Brucker
2020-03-16 15:46     ` Jean-Philippe Brucker
2020-03-16 15:46     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 07/15] iommu/arm-smmu: Fix uninitilized variable warning Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:47   ` Jean-Philippe Brucker
2020-03-16 15:47     ` Jean-Philippe Brucker
2020-03-16 15:47     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 08/15] iommu: Introduce accessors for iommu private data Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:47   ` Jean-Philippe Brucker
2020-03-16 15:47     ` Jean-Philippe Brucker
2020-03-16 15:47     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 09/15] iommu/arm-smmu-v3: Use accessor functions " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:49   ` Jean-Philippe Brucker
2020-03-16 15:49     ` Jean-Philippe Brucker
2020-03-16 15:49     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 10/15] iommu/arm-smmu: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 17:55   ` Jean-Philippe Brucker [this message]
2020-03-16 17:55     ` Jean-Philippe Brucker
2020-03-16 17:55     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 11/15] iommu/renesas: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:50   ` Jean-Philippe Brucker
2020-03-16 15:50     ` Jean-Philippe Brucker
2020-03-16 15:50     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 12/15] iommu/mediatek: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:51   ` Jean-Philippe Brucker
2020-03-16 15:51     ` Jean-Philippe Brucker
2020-03-16 15:51     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 13/15] iommu/qcom: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:52   ` Jean-Philippe Brucker
2020-03-16 15:52     ` Jean-Philippe Brucker
2020-03-16 15:52     ` Jean-Philippe Brucker
2020-03-19 13:11     ` Joerg Roedel
2020-03-19 13:11       ` Joerg Roedel
2020-03-19 13:11       ` Joerg Roedel
2020-03-10  9:12 ` [PATCH 14/15] iommu/virtio: " Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:56   ` Jean-Philippe Brucker
2020-03-16 15:56     ` Jean-Philippe Brucker
2020-03-16 15:56     ` Jean-Philippe Brucker
2020-03-10  9:12 ` [PATCH 15/15] iommu: Move fwspec->iommu_priv to struct dev_iommu Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-10  9:12   ` Joerg Roedel
2020-03-16 15:57   ` Jean-Philippe Brucker
2020-03-16 15:57     ` Jean-Philippe Brucker
2020-03-16 15:57     ` Jean-Philippe Brucker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200316175515.GP304669@myrica \
    --to=jean-philippe@linaro.org \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=guohanjun@huawei.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=jroedel@suse.de \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=robdclark@gmail.com \
    --cc=robin.murphy@arm.com \
    --cc=sean@poorly.run \
    --cc=sudeep.holla@arm.com \
    --cc=thierry.reding@gmail.com \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.