From: Sricharan R <sricharan@codeaurora.org>
To: robin.murphy@arm.com, will.deacon@arm.com, joro@8bytes.org,
lorenzo.pieralisi@arm.com, iommu@lists.linux-foundation.org,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, m.szyprowski@samsung.com,
bhelgaas@google.com, linux-pci@vger.kernel.org,
linux-acpi@vger.kernel.org, tn@semihalf.com,
hanjun.guo@linaro.org, okaya@codeaurora.org, robh+dt@kernel.org,
frowand.list@gmail.com, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, sudeep.holla@arm.com,
rjw@rjwysocki.net, lenb@kernel.org, catalin.marinas@arm.com,
arnd@arndb.de, linux-arch@vger.kernel.org,
gregkh@linuxfoundation.org
Cc: sricharan@codeaurora.org
Subject: [PATCH V11 05/11] of: device: Fix overflow of coherent_dma_mask
Date: Mon, 10 Apr 2017 16:51:00 +0530 [thread overview]
Message-ID: <1491823266-1209-6-git-send-email-sricharan@codeaurora.org> (raw)
In-Reply-To: <1491823266-1209-1-git-send-email-sricharan@codeaurora.org>
Size of the dma-range is calculated as coherent_dma_mask + 1
and passed to arch_setup_dma_ops further. It overflows when
the coherent_dma_mask is set for full 64 bits 0xFFFFFFFFFFFFFFFF,
resulting in size getting passed as 0 wrongly. Fix this by
passsing in max(mask, mask + 1). Note that in this case
when the mask is set to full 64bits, we will be passing the mask
itself to arch_setup_dma_ops instead of the size. The real fix
for this should be to make arch_setup_dma_ops receive the
mask and handle it, to be done in the future.
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sricharan R <sricharan@codeaurora.org>
---
drivers/of/device.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/device.c b/drivers/of/device.c
index 0d378c0..e1ae9e7 100644
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -107,7 +107,7 @@ void of_dma_configure(struct device *dev, struct device_node *np)
ret = of_dma_get_range(np, &dma_addr, &paddr, &size);
if (ret < 0) {
dma_addr = offset = 0;
- size = dev->coherent_dma_mask + 1;
+ size = max(dev->coherent_dma_mask, dev->coherent_dma_mask + 1);
} else {
offset = PFN_DOWN(paddr - dma_addr);
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID (diff)
From: sricharan@codeaurora.org (Sricharan R)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V11 05/11] of: device: Fix overflow of coherent_dma_mask
Date: Mon, 10 Apr 2017 16:51:00 +0530 [thread overview]
Message-ID: <1491823266-1209-6-git-send-email-sricharan@codeaurora.org> (raw)
In-Reply-To: <1491823266-1209-1-git-send-email-sricharan@codeaurora.org>
Size of the dma-range is calculated as coherent_dma_mask + 1
and passed to arch_setup_dma_ops further. It overflows when
the coherent_dma_mask is set for full 64 bits 0xFFFFFFFFFFFFFFFF,
resulting in size getting passed as 0 wrongly. Fix this by
passsing in max(mask, mask + 1). Note that in this case
when the mask is set to full 64bits, we will be passing the mask
itself to arch_setup_dma_ops instead of the size. The real fix
for this should be to make arch_setup_dma_ops receive the
mask and handle it, to be done in the future.
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sricharan R <sricharan@codeaurora.org>
---
drivers/of/device.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/device.c b/drivers/of/device.c
index 0d378c0..e1ae9e7 100644
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -107,7 +107,7 @@ void of_dma_configure(struct device *dev, struct device_node *np)
ret = of_dma_get_range(np, &dma_addr, &paddr, &size);
if (ret < 0) {
dma_addr = offset = 0;
- size = dev->coherent_dma_mask + 1;
+ size = max(dev->coherent_dma_mask, dev->coherent_dma_mask + 1);
} else {
offset = PFN_DOWN(paddr - dma_addr);
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
next prev parent reply other threads:[~2017-04-10 11:22 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20170410112136epcas2p2cdd7dc21a8dc0ffcfab7f8290c4b7467@epcas2p2.samsung.com>
2017-04-10 11:20 ` [PATCH V11 00/11] IOMMU probe deferral support Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` [PATCH V11 01/11] iommu/of: Refactor of_iommu_configure() for error handling Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` [PATCH V11 02/11] iommu/of: Prepare for deferred IOMMU configuration Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` [PATCH V11 03/11] of: dma: Make of_dma_deconfigure() public Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` [PATCH V11 04/11] ACPI/IORT: Add function to check SMMUs drivers presence Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:20 ` Sricharan R
2017-04-10 11:21 ` Sricharan R [this message]
2017-04-10 11:21 ` [PATCH V11 05/11] of: device: Fix overflow of coherent_dma_mask Sricharan R
[not found] ` <1491823266-1209-1-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-04-10 11:21 ` [PATCH V11 06/11] of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` [PATCH V11 07/11] iommu: of: Handle IOMMU lookup failure with deferred probing or error Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` [PATCH V11 08/11] drivers: acpi: " Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
[not found] ` <1491823266-1209-9-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-05-23 6:26 ` Nate Watterson
2017-05-23 6:26 ` Nate Watterson
2017-05-23 6:26 ` Nate Watterson
2017-05-23 6:26 ` Nate Watterson
[not found] ` <41668eff-271c-1c4c-7665-3bf0faa74669-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-05-23 8:52 ` Lorenzo Pieralisi
2017-05-23 8:52 ` Lorenzo Pieralisi
2017-05-23 8:52 ` Lorenzo Pieralisi
2017-05-23 8:52 ` Lorenzo Pieralisi
2017-05-23 9:01 ` Sricharan R
2017-05-23 9:01 ` Sricharan R
2017-05-23 9:01 ` Sricharan R
2017-05-23 9:01 ` Sricharan R
[not found] ` <c6d5c033-a8f9-03e3-9963-cd291ae2d7e1-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-05-23 9:26 ` Lorenzo Pieralisi
2017-05-23 9:26 ` Lorenzo Pieralisi
2017-05-23 9:26 ` Lorenzo Pieralisi
2017-05-23 9:26 ` Lorenzo Pieralisi
2017-05-23 11:27 ` Nate Watterson
2017-05-23 11:27 ` Nate Watterson
2017-05-23 11:27 ` Nate Watterson
2017-05-23 11:27 ` Nate Watterson
2017-05-23 8:59 ` Sricharan R
2017-05-23 8:59 ` Sricharan R
2017-05-23 8:59 ` Sricharan R
2017-05-23 8:59 ` Sricharan R
2017-04-10 11:21 ` [PATCH V11 09/11] arm64: dma-mapping: Remove the notifier trick to handle early setting of dma_ops Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` [PATCH V11 10/11] iommu/arm-smmu: Clean up early-probing workarounds Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` [PATCH V11 11/11] ACPI/IORT: Remove linker section for IORT entries probing Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-10 11:21 ` Sricharan R
2017-04-20 14:31 ` [PATCH V11 00/11] IOMMU probe deferral support Joerg Roedel
2017-04-20 14:31 ` Joerg Roedel
2017-04-20 14:31 ` Joerg Roedel
2017-04-10 11:56 ` Frank Rowand
2017-04-10 11:56 ` Frank Rowand
2017-05-08 11:23 ` Marek Szyprowski
2017-05-08 11:23 ` Marek Szyprowski
2017-05-08 11:23 ` Marek Szyprowski
2017-05-08 14:57 ` Sricharan R
2017-05-08 14:57 ` Sricharan R
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=1491823266-1209-6-git-send-email-sricharan@codeaurora.org \
--to=sricharan@codeaurora.org \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hanjun.guo@linaro.org \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=m.szyprowski@samsung.com \
--cc=okaya@codeaurora.org \
--cc=rjw@rjwysocki.net \
--cc=robh+dt@kernel.org \
--cc=robin.murphy@arm.com \
--cc=sudeep.holla@arm.com \
--cc=tn@semihalf.com \
--cc=will.deacon@arm.com \
/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.