[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-pci
Subject:    Re: [PATCH 1/2] PCI/DOE: Silence WARN splat upon task submission
From:       Ira Weiny <ira.weiny () intel ! com>
Date:       2022-11-30 18:52:38
Message-ID: Y4emdob9uFP354jk () iweiny-desk3
[Download RAW message or body]

On Wed, Nov 30, 2022 at 03:36:58PM +0000, Jonathan Cameron wrote:
> On Mon, 28 Nov 2022 05:25:51 +0100
> Lukas Wunner <lukas@wunner.de> wrote:
> 
> > Gregory Price reports a WARN splat with CONFIG_DEBUG_OBJECTS=y upon CXL
> > probing because pci_doe_submit_task() invokes INIT_WORK() instead of
> > INIT_WORK_ONSTACK() for a work_struct that was allocated on the stack.
> > 
> > All callers of pci_doe_submit_task() allocate the work_struct on the
> > stack, so replace INIT_WORK() with INIT_WORK_ONSTACK() as a backportable
> > short-term fix.
> > 
> > Stacktrace for posterity:
> > 
> > WARNING: CPU: 0 PID: 23 at lib/debugobjects.c:545 \
> >                 __debug_object_init.cold+0x18/0x183
> > CPU: 0 PID: 23 Comm: kworker/u2:1 Not tainted \
> > 6.1.0-0.rc1.20221019gitaae703b02f92.17.fc38.x86_64 #1 Hardware name: QEMU \
> > Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org \
> > 04/01/2014 Call Trace:
> > pci_doe_submit_task+0x5d/0xd0
> > pci_doe_discovery+0xb4/0x100
> > pcim_doe_create_mb+0x219/0x290
> > cxl_pci_probe+0x192/0x430
> > local_pci_probe+0x41/0x80
> > pci_device_probe+0xb3/0x220
> > really_probe+0xde/0x380
> > __driver_probe_device+0x78/0x170
> > driver_probe_device+0x1f/0x90
> > __driver_attach_async_helper+0x5c/0xe0
> > async_run_entry_fn+0x30/0x130
> > process_one_work+0x294/0x5b0
> > 
> > Fixes: 9d24322e887b ("PCI/DOE: Add DOE mailbox support functions")
> > Link: https://lore.kernel.org/linux-cxl/Y1bOniJliOFszvIK@memverge.com/
> > Reported-by: Gregory Price <gregory.price@memverge.com>
> > Signed-off-by: Lukas Wunner <lukas@wunner.de>
> > Cc: stable@vger.kernel.org # v6.0+
> > Cc: Ira Weiny <ira.weiny@intel.com>
> > Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > ---
> > drivers/pci/doe.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c
> > index 66d9ab288646..52541eac17f1 100644
> > --- a/drivers/pci/doe.c
> > +++ b/drivers/pci/doe.c
> > @@ -541,7 +541,7 @@ int pci_doe_submit_task(struct pci_doe_mb *doe_mb, struct \
> > pci_doe_task *task)  return -EIO;
> > 
> > 	task->doe_mb = doe_mb;
> > -	INIT_WORK(&task->work, doe_statemachine_work);
> > +	INIT_WORK_ONSTACK(&task->work, doe_statemachine_work);
> 
> If we go this way, add a comment to say 'why' it is ONSTACK
> or add to the function description to say it 'must be on stack'.

My apologies, I somehow missed this series with the chaos of my personal life.

I do like this as a backportable fix and I'm not opposed to it.

I think Lukas will need to determine how much he needs the async support.  So
I'm going to back off and let him deal with this.

Ira

> 
> > 	queue_work(doe_mb->work_queue, &task->work);
> > 	return 0;
> > }
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic