From: Bjorn Helgaas <helgaas@kernel.org>
To: Andy Lutomirski <luto@kernel.org>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>,
Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org
Subject: Re: [PATCH] pcie_aspm: Make link_state_store consistent with link_state_show
Date: Thu, 3 Dec 2015 11:21:28 -0600 [thread overview]
Message-ID: <20151203172128.GA17565@localhost> (raw)
In-Reply-To: <6ff64f0313c4e6400ef536017078e58ec3487c71.1447949082.git.luto@kernel.org>
On Thu, Nov 19, 2015 at 08:05:35AM -0800, Andy Lutomirski wrote:
> If CONFIG_PCIEASPM_DEBUG is set, then pci devices have a link_state
> attribute. Reading that attribute shows the state as a bit mask: 1
> means L0S upstream, 2 means L0S downstream, and 4 means L1.
>
> Oddly, writing to link_state is inconsistent and gets translated,
> leading to mysterious results in which the value you store isn't
> comparable the value you load back out.
>
> Fix it by making link_state_store match link_state_show.
>
> Signed-off-by: Andy Lutomirski <luto@kernel.org>
Applied to pci/aspm for v4.5, thanks! You didn't touch the
"aspm_disabled" check, but I moved it above the input validation code to
make the patch look like the attached. I think it's better to not
even look at the input if aspm_disabled, and this also puts the
validation code all together.
Let me know if you object.
Bjorn
commit 57d86a0485a30145382ad03b9504cc03ba4641c7
Author: Andy Lutomirski <luto@kernel.org>
Date: Thu Nov 19 08:05:35 2015 -0800
PCI/ASPM: Make sysfs link_state_store() consistent with link_state_show()
If CONFIG_PCIEASPM_DEBUG is set, then PCI devices have a link_state
attribute. Reading that attribute shows the state as a bit mask: 1
means L0S upstream, 2 means L0S downstream, and 4 means L1.
Oddly, writing to link_state is inconsistent and gets translated, leading
to mysterious results in which the value you store isn't comparable the
value you load back out.
Fix it by making link_state_store() match link_state_show().
[bhelgaas: Check "aspm_disabled" *before* validating input. When
"aspm_disabled" is set, this changes the error for invalid input from
-EINVAL to -EPERM.]
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 317e355..2dfe7fd 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -834,21 +834,15 @@ static ssize_t link_state_store(struct device *dev,
{
struct pci_dev *pdev = to_pci_dev(dev);
struct pcie_link_state *link, *root = pdev->link_state->root;
- u32 val, state = 0;
-
- if (kstrtouint(buf, 10, &val))
- return -EINVAL;
+ u32 state;
if (aspm_disabled)
return -EPERM;
- if (n < 1 || val > 3)
- return -EINVAL;
- /* Convert requested state to ASPM state */
- if (val & PCIE_LINK_STATE_L0S)
- state |= ASPM_STATE_L0S;
- if (val & PCIE_LINK_STATE_L1)
- state |= ASPM_STATE_L1;
+ if (kstrtouint(buf, 10, &state))
+ return -EINVAL;
+ if ((state & ~ASPM_STATE_ALL) != 0)
+ return -EINVAL;
down_read(&pci_bus_sem);
mutex_lock(&aspm_lock);
next prev parent reply other threads:[~2015-12-03 17:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-19 16:05 [PATCH] pcie_aspm: Make link_state_store consistent with link_state_show Andy Lutomirski
2015-12-03 17:21 ` Bjorn Helgaas [this message]
2015-12-03 20:35 ` Andy Lutomirski
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=20151203172128.GA17565@localhost \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mjg59@srcf.ucam.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.