Re: next: x86_64: ahci 0000:00:1f.2: probe with driver ahci failed with error -12

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 14, 2024 at 03:56:56PM +0530, Naresh Kamboju wrote:
> On Wed, 14 Aug 2024 at 15:15, Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> wrote:
> >
> > The qemu-x86_64 boot failed with today's Linux next-20240814 tag due to
> > following crash.
> >
> > The catch here is the crash seen on both x86_64 device and qemu-x86_64
> > but x86_64 device is able to boot successfully.
> >
> > Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
> >
> > Boot log:
> > ---
> > [    0.000000] Linux version 6.11.0-rc3-next-20240814
> > (tuxmake@tuxmake) (x86_64-linux-gnu-gcc (Debian 13.3.0-1) 13.3.0, GNU
> > ld (GNU Binutils for Debian) 2.42.50.20240625) #1 SMP PREEMPT_DYNAMIC
> > @1723614704
> > ...
> > <6>[    2.479915] scsi host0: ahci
> > <4>[    2.484371] sysfs: cannot create duplicate filename
> > '/devices/virtual/workqueue/scsi_tmf_-1073661392'
                                         ^^^^^^^^^^^
Negative number.  This comes from:

        shost->tmf_work_q = alloc_workqueue("scsi_tmf_%d",
                                        WQ_UNBOUND | WQ_MEM_RECLAIM | WQ_SYSFS,
                                           1, shost->host_no);

shost->host_no comes from ida_alloc() and we have checked to ensure it's not
negative.  The problem is the va_args changes in workqueue.c as Anders's bisect
shows.

kernel/workqueue.c
  5627  static struct workqueue_struct *__alloc_workqueue(const char *fmt,
  5628                                                    unsigned int flags,
  5629                                                    int max_active, ...)
                                                                          ^^^
This should be a "va_list args" now.

  5750  struct workqueue_struct *alloc_workqueue(const char *fmt,
  5751                                           unsigned int flags,
  5752                                           int max_active, ...)
  5753  {
  5754          struct workqueue_struct *wq;
  5755          va_list args;
  5756  
  5757          va_start(args, max_active);
  5758          wq = __alloc_workqueue(fmt, flags, max_active, args);
                                                               ^^^^
We're passing a va_list.

  5759          va_end(args);

Any workqueue that has a format string is going to be broken now.

regards,
dan carpenter





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux