All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukas Wunner <lukas@wunner.de>
To: Sinan Kaya <okaya@kernel.org>
Cc: Ethan Zhao <haifeng.zhao@intel.com>,
	bhelgaas@google.com, oohall@gmail.com, ruscur@russell.cc,
	andriy.shevchenko@linux.intel.com, stuart.w.hayes@gmail.com,
	mr.nuke.me@gmail.com, mika.westerberg@linux.intel.com,
	Keith Busch <keith.busch@intel.com>,
	linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	pei.p.jia@intel.com, ashok.raj@linux.intel.com,
	sathyanarayanan.kuppuswamy@intel.com
Subject: Re: [PATCH 2/5 V2] PCI: pciehp: check and wait port status out of DPC before handling DLLSC and PDC
Date: Tue, 29 Sep 2020 10:18:00 +0200	[thread overview]
Message-ID: <20200929081800.GA15858@wunner.de> (raw)
In-Reply-To: <f2c9e3db-2027-f669-fcdd-fbc80888b934@kernel.org>

On Sun, Sep 27, 2020 at 11:27:46AM -0400, Sinan Kaya wrote:
> On 9/26/2020 11:28 PM, Ethan Zhao wrote:
> > --- a/drivers/pci/hotplug/pciehp_hpc.c
> > +++ b/drivers/pci/hotplug/pciehp_hpc.c
> > @@ -710,8 +710,10 @@ static irqreturn_t pciehp_ist(int irq, void *dev_id)
> >  	down_read(&ctrl->reset_lock);
> >  	if (events & DISABLE_SLOT)
> >  		pciehp_handle_disable_request(ctrl);
> > -	else if (events & (PCI_EXP_SLTSTA_PDC | PCI_EXP_SLTSTA_DLLSC))
> > +	else if (events & (PCI_EXP_SLTSTA_PDC | PCI_EXP_SLTSTA_DLLSC)) {
> > +		pci_wait_port_outdpc(pdev);
> >  		pciehp_handle_presence_or_link_change(ctrl, events);
> > +	}
> >  	up_read(&ctrl->reset_lock);
> 
> This looks like a hack TBH.
> 
> Lukas, Keith;
> 
> What is your take on this?
> Why is device lock not protecting this situation?
> 
> Is there a lock missing in hotplug driver?

According to Ethan's commit message, there are two issues here:
One, that pciehp may remove a device even though DPC recovered the error,
and two, that a null pointer deref occurs.

The latter is most certainly not a locking issue but failure of DPC
to hold a reference on the pci_dev.

Thanks,

Lukas

  parent reply	other threads:[~2020-09-29  8:27 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-27  3:28 [PATCH 0/5 V2] Fix DPC hotplug race and enhance error handling Ethan Zhao
2020-09-27  3:28 ` [PATCH 1/5 V2] PCI: define a function to check and wait till port finish DPC handling Ethan Zhao
2020-09-27  6:23   ` Christoph Hellwig
2020-09-27  6:43     ` Zhao, Haifeng
2020-09-29  2:32     ` Ethan Zhao
2020-09-27  3:28 ` [PATCH 2/5 V2] PCI: pciehp: check and wait port status out of DPC before handling DLLSC and PDC Ethan Zhao
2020-09-27 15:27   ` Sinan Kaya
2020-09-28  2:01     ` Zhao, Haifeng
2020-09-28 11:10       ` Sinan Kaya
2020-09-28 16:43         ` Sinan Kaya
2020-09-28 16:44           ` Kuppuswamy, Sathyanarayanan
2020-09-29  2:28             ` Ethan Zhao
2020-09-29  2:50           ` Ethan Zhao
2020-09-29  8:18     ` Lukas Wunner [this message]
2020-09-29  9:46       ` Ethan Zhao
2020-09-29 10:07         ` Lukas Wunner
2020-09-30  2:20           ` Ethan Zhao
2020-09-27  3:28 ` [PATCH 3/5 V2] PCI/ERR: get device before call device driver to avoid NULL pointer reference Ethan Zhao
2020-09-27  3:28 ` [PATCH 4/5 V2] PCI: only return true when dev io state is really changed Ethan Zhao
2020-09-27  4:16   ` Joe Perches
2020-09-27  5:12     ` Zhao, Haifeng
2020-09-27  3:28 ` [PATCH 5/5 V2] PCI/ERR: don't mix io state not changed and no driver together Ethan Zhao

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=20200929081800.GA15858@wunner.de \
    --to=lukas@wunner.de \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=ashok.raj@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=haifeng.zhao@intel.com \
    --cc=keith.busch@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=mr.nuke.me@gmail.com \
    --cc=okaya@kernel.org \
    --cc=oohall@gmail.com \
    --cc=pei.p.jia@intel.com \
    --cc=ruscur@russell.cc \
    --cc=sathyanarayanan.kuppuswamy@intel.com \
    --cc=stuart.w.hayes@gmail.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: 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.