All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: "YoungJun.Park" <her0gyugyu@gmail.com>
Cc: linux-usb@vger.kernel.org, youngjun.park@ahnlab.com, her0gyu@naver.com
Subject: Re: Question of possible concurrent xhci debugfs file
Date: Tue, 28 Mar 2023 12:42:09 +0200	[thread overview]
Message-ID: <ZCLEgXfzbsEb75lN@kroah.com> (raw)
In-Reply-To: <20230328063020.GA1824187@ubuntu>

On Mon, Mar 27, 2023 at 11:30:20PM -0700, YoungJun.Park wrote:
> I got a panic dump which happend on kernel(
> I check the both of CentOS and mainline kernel
> And I assume it could be happend on mainline kernel.
> (like I said assume)

Note, CentOS uses a very old and obsolete kernel, nothing we can do
about that mess, please get support for that from the company that
provided it.

> I think xhci-debugfs file creation check the creation of
> NULL parent dentry. Is it right? (drivers/usb/host/xhci-debugfs.c)

Why is that needed?

> The contents below is the what I analyze.
> 
> 1. A lot of usb error
> ...
> [1994159.974407] usb 1-2: device descriptor read/64, error -71
> [1994160.187902] usb 1-2: new low-speed USB device number 36 using xhci_hcd
> [1994160.302634] usb 1-2: device descriptor read/64, error -71
> [1994160.562027] usb 1-2: device descriptor read/64, error -71
> [1994160.663789] usb usb1-port2: unable to enumerate USB device
> [1994162.256029] usb 1-2: new low-speed USB device number 37 using xhci_hcd
> [1994162.370764] usb 1-2: device descriptor read/64, error -71
> [1994162.585258] usb 1-2: device descriptor read/64, error -71
> [1994162.797751] usb 1-2: new low-speed USB device number 38 using xhci_hcd
> [1994162.912484] usb 1-2: device descriptor read/64, error -71
> [1994163.141944] usb 1-2: device descriptor read/64, error -71
> [1994163.243712] usb usb1-port2: attempt power cycle.
> ...

That has nothing to do with debugfs.

> 2. After that panic happend and I got a dump.
> The cause of panic reading "/sys/kernel/debug/trbs" which is abnormal.
> (which have bad xhci_ring private data)
> the file must be on the "/sys/kernel/debug/usb/~~~".
> 
> sh> bt
> PID: 91416  TASK: ffff8d68fcc54200  CPU: 1   COMMAND: "fbmons"
>  #0 [ffff8d679a6cbad0] machine_kexec at ffffffff9e2662c4
>  #1 [ffff8d679a6cbb30] __crash_kexec at ffffffff9e322a32
>  #2 [ffff8d679a6cbc00] crash_kexec at ffffffff9e322b20
>  #3 [ffff8d679a6cbc18] oops_end at ffffffff9e98d798
>  #4 [ffff8d679a6cbc40] no_context at ffffffff9e275d14
>  #5 [ffff8d679a6cbc90] __bad_area_nosemaphore at ffffffff9e275fe2
>  #6 [ffff8d679a6cbce0] bad_area_nosemaphore at ffffffff9e276104
>  #7 [ffff8d679a6cbcf0] __do_page_fault at ffffffff9e990750
>  #8 [ffff8d679a6cbd60] do_page_fault at ffffffff9e990975
>  #9 [ffff8d679a6cbd90] page_fault at ffffffff9e98c778
>     [exception RIP: xhci_ring_trb_show+29]
>     RIP: ffffffff9e76005d  RSP: ffff8d679a6cbe40  RFLAGS: 00010246
>     RAX: ffff8d497b0fe018  RBX: 0000000000000000  RCX: 0000001309207f9b
>     RDX: fffffffffffffff4  RSI: 0000000000000001  RDI: ffff8d6939b8fd40
>     RBP: ffff8d679a6cbe60   R8: ffff8d49ffa5f1a0   R9: ffff8d3b3fc07300
>     R10: ffff8d3b3fc07300  R11: ffffffff9e3de9fd  R12: 0000000000000000
>     R13: 0000000000000000  R14: ffff8d6939b8fd40  R15: ffff8d6939b8fd40
>     ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
> #10 [ffff8d679a6cbe68] seq_read at ffffffff9e476d10
> #11 [ffff8d679a6cbed8] vfs_read at ffffffff9e44e3ff
> #12 [ffff8d679a6cbf08] sys_read at ffffffff9e44f27f
> #13 [ffff8d679a6cbf50] system_call_fastpath at ffffffff9e995f92
>     RIP: 00007f5f9749f6fd  RSP: 00007f5f84c73700  RFLAGS: 00000293
>     RAX: 0000000000000000  RBX: 00007f5f7066a390  RCX: ffffffffffffffff
>     RDX: 0000000000000400  RSI: 00007f5f706d2270  RDI: 0000000000000016
>     RBP: 00007f5f706d2270   R8: 00007f5f953e73a0   R9: 00007f5f953e7388
>     R10: 0000000000000040  R11: 0000000000000293  R12: 0000000000000400
>     R13: 00007f5f84c7354c  R14: 0000000022100004  R15: 00007f5f866c5368
>     ORIG_RAX: 0000000000000000  CS: 0033  SS: 002b

So the xhci driver is crashing here?

> 3. I found a another abnormal xhci debugfs file ep_context in dump. 
> Check xhci_slot_priv is alive and find the root is NULL.
> 
> crash> files -d 0xffff8d68fe8f0000
>      DENTRY           INODE           SUPERBLK     TYPE PATH
> ffff8d68fe8f0000 ffff8d489e979e10 ffff8d3b19169800 REG  /sys/kernel/debug/ep-context
> 
> crash > struct xchi_slot_priv 0xffff8d4812492c0
> struct xhci_slot_priv {
> ...
>   root = 0x0, 
> ...
>   dev = 0xffff8d497b0fe000
> }
> 
> 4. Looking into the mainline kernel code, I finally concluded that
> /sys/fs/debug/"interface file" could be made.
> 
> drivers/usb/host/xhci-debugfs.c
> xhci_debugfs_create_slot function
> ...
> priv->root = debugfs_create_dir(priv->name, xhci->debugfs_slots); // root can be NULL

How is root NULL here?  What caused that to happen?  Shouldn't you fix
that issue here, that's not a general debugfs problem.

thanks,

greg k-h

  reply	other threads:[~2023-03-28 10:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-28  6:30 Question of possible concurrent xhci debugfs file YoungJun.Park
2023-03-28 10:42 ` Greg KH [this message]
2023-03-30 12:34 ` Mathias Nyman

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=ZCLEgXfzbsEb75lN@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=her0gyu@naver.com \
    --cc=her0gyugyu@gmail.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=youngjun.park@ahnlab.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.