forked from Minki/linux
PCI/ASPM: Use standard parsing functions for sysfs setters
The functions link_state_store() and clk_ctl_store() had just subtracted ASCII '0' from input which could lead to undesired results. Instead, use Linux string functions to safely parse input. [bhelgaas: check kstrtouint() return value] Signed-off-by: Chris J Arges <chris.j.arges@canonical.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
97bf6af1f9
commit
94a90312e4
@ -859,7 +859,10 @@ 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 = buf[0] - '0', state = 0;
|
||||
u32 val, state = 0;
|
||||
|
||||
if (kstrtouint(buf, 10, &val))
|
||||
return -EINVAL;
|
||||
|
||||
if (aspm_disabled)
|
||||
return -EPERM;
|
||||
@ -900,15 +903,14 @@ static ssize_t clk_ctl_store(struct device *dev,
|
||||
size_t n)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev);
|
||||
int state;
|
||||
bool state;
|
||||
|
||||
if (n < 1)
|
||||
if (strtobool(buf, &state))
|
||||
return -EINVAL;
|
||||
state = buf[0]-'0';
|
||||
|
||||
down_read(&pci_bus_sem);
|
||||
mutex_lock(&aspm_lock);
|
||||
pcie_set_clkpm_nocheck(pdev->link_state, !!state);
|
||||
pcie_set_clkpm_nocheck(pdev->link_state, state);
|
||||
mutex_unlock(&aspm_lock);
|
||||
up_read(&pci_bus_sem);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user