mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Nicolai Stange <nstange@suse.de>,
	Bjorn Helgaas <bhelgaas@google.com>
Subject: [PATCH 3.18 20/24] PCI: Fix race condition with driver_override
Date: Tue,  3 Oct 2017 14:18:41 +0200	[thread overview]
Message-ID: <20171003113649.160646643@linuxfoundation.org> (raw)
In-Reply-To: <20171003113646.772919167@linuxfoundation.org>

3.18-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Nicolai Stange <nstange@suse.de>

commit 9561475db680f7144d2223a409dd3d7e322aca03 upstream.

The driver_override implementation is susceptible to a race condition when
different threads are reading vs. storing a different driver override.  Add
locking to avoid the race condition.

This is in close analogy to commit 6265539776a0 ("driver core: platform:
fix race condition with driver_override") from Adrian Salido.

Fixes: 782a985d7af2 ("PCI: Introduce new device binding path using pci_dev.driver_override")
Signed-off-by: Nicolai Stange <nstange@suse.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/pci/pci-sysfs.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -513,7 +513,7 @@ static ssize_t driver_override_store(str
 				     const char *buf, size_t count)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
-	char *driver_override, *old = pdev->driver_override, *cp;
+	char *driver_override, *old, *cp;
 
 	/* We need to keep extra room for a newline */
 	if (count >= (PAGE_SIZE - 1))
@@ -527,12 +527,15 @@ static ssize_t driver_override_store(str
 	if (cp)
 		*cp = '\0';
 
+	device_lock(dev);
+	old = pdev->driver_override;
 	if (strlen(driver_override)) {
 		pdev->driver_override = driver_override;
 	} else {
 		kfree(driver_override);
 		pdev->driver_override = NULL;
 	}
+	device_unlock(dev);
 
 	kfree(old);
 
@@ -543,8 +546,12 @@ static ssize_t driver_override_show(stru
 				    struct device_attribute *attr, char *buf)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
+	ssize_t len;
 
-	return snprintf(buf, PAGE_SIZE, "%s\n", pdev->driver_override);
+	device_lock(dev);
+	len = snprintf(buf, PAGE_SIZE, "%s\n", pdev->driver_override);
+	device_unlock(dev);
+	return len;
 }
 static DEVICE_ATTR_RW(driver_override);
 

  parent reply	other threads:[~2017-10-03 12:19 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-03 12:18 [PATCH 3.18 00/24] 3.18.73-stable review Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 01/24] cifs: release cifs root_cred after exit_cifs Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 02/24] cifs: release auth_key.response for reconnect Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 03/24] mac80211: flush hw_roc_start work before cancelling the ROC Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 04/24] KVM: PPC: Book3S: Fix race and leak in kvm_vm_ioctl_create_spapr_tce() Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 05/24] tracing: Fix trace_pipe behavior for instance traces Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 06/24] tracing: Erase irqsoff trace with empty write Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 07/24] scsi: scsi_transport_iscsi: fix the issue that iscsi_if_rx doesnt parse nlmsg properly Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 08/24] crypto: talitos - fix sha224 Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 09/24] KEYS: fix writing past end of user-supplied buffer in keyring_read() Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 10/24] KEYS: prevent creating a different users keyrings Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 11/24] KEYS: prevent KEYCTL_READ on negative key Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 12/24] powerpc/pseries: Fix parent_dn reference leak in add_dt_node() Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 13/24] SMB: Validate negotiate (to protect against downgrade) even if signing off Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 14/24] SMB3: Dont ignore O_SYNC/O_DSYNC and O_DIRECT flags Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 15/24] vfs: Return -ENXIO for negative SEEK_HOLE / SEEK_DATA offsets Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 16/24] nl80211: check for the required netlink attributes presence Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 17/24] bsg-lib: dont free job in bsg_prepare_job Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 18/24] arm64: Make sure SPsel is always set Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 19/24] kvm: nVMX: Dont allow L2 to access the hardware CR8 Greg Kroah-Hartman
2017-10-03 12:18 ` Greg Kroah-Hartman [this message]
2017-10-03 12:18 ` [PATCH 3.18 21/24] btrfs: prevent to set invalid default subvolid Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 22/24] x86/fpu: Dont let userspace set bogus xcomp_bv Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 23/24] video: fbdev: aty: do not leak uninitialized padding in clk to userspace Greg Kroah-Hartman
2017-10-03 12:18 ` [PATCH 3.18 24/24] swiotlb-xen: implement xen_swiotlb_dma_mmap callback Greg Kroah-Hartman
2017-10-03 19:25 ` [PATCH 3.18 00/24] 3.18.73-stable review Shuah Khan
2017-10-04  7:53   ` Greg Kroah-Hartman
2017-10-03 20:29 ` Guenter Roeck

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=20171003113649.160646643@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=bhelgaas@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nstange@suse.de \
    --cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome