From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Niklas Cassel <niklas.cassel@axis.com>
Cc: Jingoo Han <jingoohan1@gmail.com>,
Joao Pinto <Joao.Pinto@synopsys.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Niklas Cassel <niklass@axis.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
kishon@ti.com
Subject: Re: [PATCH v2 1/2] PCI: designware-ep: Fix find_first_zero_bit() usage
Date: Fri, 17 Nov 2017 18:43:37 +0000 [thread overview]
Message-ID: <20171117184337.GA26321@red-moon> (raw)
In-Reply-To: <20171117150041.30509-2-niklas.cassel@axis.com>
[+Kishon - please CC him next time]
On Fri, Nov 17, 2017 at 04:00:40PM +0100, Niklas Cassel wrote:
> find_first_zero_bit()'s parameter 'size' is defined in bits,
> not in bytes.
>
> find_first_zero_bit() was called with size in bytes rather than bits,
> which thus defined a too low upper limit, causing
> dw_pcie_ep_inbound_atu() to assign iatu index #4 to both bar 4
> and bar 5, which made bar 5 overwrite the settings set by bar 4.
>
> Fix this by using replacing find_first_zero_bit() with ffz(),
> since ffz() only works on a single 'unsigned long' and therefore
> does not need a size argument.
>
> Fixes: f8aed6ec624f ("PCI: dwc: designware: Add EP mode support")
> Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
> ---
> drivers/pci/dwc/pcie-designware-ep.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/dwc/pcie-designware-ep.c b/drivers/pci/dwc/pcie-designware-ep.c
> index d53d5f168363..ab9a9e160daf 100644
> --- a/drivers/pci/dwc/pcie-designware-ep.c
> +++ b/drivers/pci/dwc/pcie-designware-ep.c
> @@ -70,8 +70,7 @@ static int dw_pcie_ep_inbound_atu(struct dw_pcie_ep *ep, enum pci_barno bar,
> u32 free_win;
> struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
>
> - free_win = find_first_zero_bit(&ep->ib_window_map,
> - sizeof(ep->ib_window_map));
> + free_win = ffz(ep->ib_window_map);
You fix the bug at hand but code suffers from the same issue since we
should be checking the value against ~0UL first ie if size in bits <
num_ib_windows (that I think it is unlikely anyway but while at it let's
think if we can improve this).
@Kishon: maybe we should add a static upper size and declare a
static bitmap accordingly (and still use find_first_zero_bit()) ?
I think the check against ~0UL should be added anyway, let's get
Kishon's opinion before a v3 (if any).
Thanks,
Lorenzo
> if (free_win >= ep->num_ib_windows) {
> dev_err(pci->dev, "no free inbound window\n");
> return -EINVAL;
> @@ -96,8 +95,7 @@ static int dw_pcie_ep_outbound_atu(struct dw_pcie_ep *ep, phys_addr_t phys_addr,
> u32 free_win;
> struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
>
> - free_win = find_first_zero_bit(&ep->ob_window_map,
> - sizeof(ep->ob_window_map));
> + free_win = ffz(ep->ob_window_map);
> if (free_win >= ep->num_ob_windows) {
> dev_err(pci->dev, "no free outbound window\n");
> return -EINVAL;
> --
> 2.14.2
>
next prev parent reply other threads:[~2017-11-17 18:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-17 15:00 [PATCH v2 0/2] Fix find_first_zero_bit() usage Niklas Cassel
2017-11-17 15:00 ` [PATCH v2 1/2] PCI: designware-ep: " Niklas Cassel
2017-11-17 18:43 ` Lorenzo Pieralisi [this message]
2017-11-21 7:54 ` Kishon Vijay Abraham I
2017-11-21 16:44 ` Lorenzo Pieralisi
2017-11-17 15:00 ` [PATCH v2 2/2] PCI: endpoint: " Niklas Cassel
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=20171117184337.GA26321@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=Joao.Pinto@synopsys.com \
--cc=bhelgaas@google.com \
--cc=jingoohan1@gmail.com \
--cc=kishon@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=niklas.cassel@axis.com \
--cc=niklass@axis.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.