Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94a90312 authored by Chris J Arges's avatar Chris J Arges Committed by Bjorn Helgaas
Browse files

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: default avatarChris J Arges <chris.j.arges@canonical.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent 97bf6af1
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -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);