From: Christoph Hellwig <hch@lst.de> To: Bjorn Helgaas <helgaas@kernel.org> Cc: Christoph Hellwig <hch@lst.de>, rakesh@tuxera.com, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] PCI: ensure the PCI device is locked over ->reset_notify calls Date: Wed, 7 Jun 2017 20:29:36 +0200 [thread overview] Message-ID: <20170607182936.GA31815@lst.de> (raw) In-Reply-To: <20170606211443.GB12672@bhelgaas-glaptop.roam.corp.google.com> On Tue, Jun 06, 2017 at 04:14:43PM -0500, Bjorn Helgaas wrote: > So I guess the method here is > dev->driver->err_handler->reset_notify(), and the PCI core should be > holding device_lock() while calling it? That makes sense to me; > thanks a lot for articulating that! Yes. > 1) The current patch protects the err_handler->reset_notify() uses by > adding or expanding device_lock regions in the paths that lead to > pci_reset_notify(). Could we simplify it by doing the locking > directly in pci_reset_notify()? Then it would be easy to verify the > locking, and we would be less likely to add new callers without the > proper locking. We could do that, except that I'd rather hold the lock over a longer period if we have many calls following each other. I also have a patch to actually kill pci_reset_notify() later in the series as well, as the calling convention for it and ->reset_notify() are awkward - depending on prepare parameter they do two entirely different things. That being said I could also add new pci_reset_prepare() and pci_reset_done() helpers. > 2) Stating the rule explicitly helps look for other problems, and I > think we have a similar problem in all the pcie_portdrv_err_handler > methods. Yes, I mentioned this earlier, and I also vaguely remember we got bug reports from IBM on power for this a while ago. I just don't feel confident enough to touch all these without a good test plan.
WARNING: multiple messages have this Message-ID (diff)
From: hch@lst.de (Christoph Hellwig) Subject: [PATCH 1/3] PCI: ensure the PCI device is locked over ->reset_notify calls Date: Wed, 7 Jun 2017 20:29:36 +0200 [thread overview] Message-ID: <20170607182936.GA31815@lst.de> (raw) In-Reply-To: <20170606211443.GB12672@bhelgaas-glaptop.roam.corp.google.com> On Tue, Jun 06, 2017@04:14:43PM -0500, Bjorn Helgaas wrote: > So I guess the method here is > dev->driver->err_handler->reset_notify(), and the PCI core should be > holding device_lock() while calling it? That makes sense to me; > thanks a lot for articulating that! Yes. > 1) The current patch protects the err_handler->reset_notify() uses by > adding or expanding device_lock regions in the paths that lead to > pci_reset_notify(). Could we simplify it by doing the locking > directly in pci_reset_notify()? Then it would be easy to verify the > locking, and we would be less likely to add new callers without the > proper locking. We could do that, except that I'd rather hold the lock over a longer period if we have many calls following each other. I also have a patch to actually kill pci_reset_notify() later in the series as well, as the calling convention for it and ->reset_notify() are awkward - depending on prepare parameter they do two entirely different things. That being said I could also add new pci_reset_prepare() and pci_reset_done() helpers. > 2) Stating the rule explicitly helps look for other problems, and I > think we have a similar problem in all the pcie_portdrv_err_handler > methods. Yes, I mentioned this earlier, and I also vaguely remember we got bug reports from IBM on power for this a while ago. I just don't feel confident enough to touch all these without a good test plan.
next prev parent reply other threads:[~2017-06-07 18:29 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-06-01 11:10 avoid null pointer rereference during FLR V2 Christoph Hellwig 2017-06-01 11:10 ` Christoph Hellwig 2017-06-01 11:10 ` [PATCH 1/3] PCI: ensure the PCI device is locked over ->reset_notify calls Christoph Hellwig 2017-06-01 11:10 ` Christoph Hellwig 2017-06-06 5:31 ` Bjorn Helgaas 2017-06-06 5:31 ` Bjorn Helgaas 2017-06-06 7:28 ` Marta Rybczynska 2017-06-06 7:28 ` Marta Rybczynska 2017-06-06 10:48 ` Christoph Hellwig 2017-06-06 10:48 ` Christoph Hellwig 2017-06-06 21:14 ` Bjorn Helgaas 2017-06-06 21:14 ` Bjorn Helgaas 2017-06-07 18:29 ` Christoph Hellwig [this message] 2017-06-07 18:29 ` Christoph Hellwig 2017-06-12 23:14 ` Bjorn Helgaas 2017-06-12 23:14 ` Bjorn Helgaas 2017-06-13 7:08 ` Christoph Hellwig 2017-06-13 7:08 ` Christoph Hellwig 2017-06-13 14:05 ` Bjorn Helgaas 2017-06-13 14:05 ` Bjorn Helgaas 2017-06-22 20:41 ` Guilherme G. Piccoli 2017-06-22 20:41 ` Guilherme G. Piccoli 2017-06-01 11:10 ` [PATCH 2/3] PCI: split reset_notify method Christoph Hellwig 2017-06-01 11:10 ` Christoph Hellwig 2017-06-01 11:10 ` [PATCH 3/3] PCI: remove __pci_dev_reset and pci_dev_reset Christoph Hellwig 2017-06-01 11:10 ` Christoph Hellwig 2017-06-15 3:11 ` avoid null pointer rereference during FLR V2 Bjorn Helgaas 2017-06-15 3:11 ` Bjorn Helgaas
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=20170607182936.GA31815@lst.de \ --to=hch@lst.de \ --cc=gregkh@linuxfoundation.org \ --cc=helgaas@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=linux-pci@vger.kernel.org \ --cc=rakesh@tuxera.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: linkBe 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.