Re: [Bug] INFO: task hung in hub_activate

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

 



On Fri, Mar 8, 2024 at 4:35 AM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Mon, Mar 04, 2024 at 08:10:02PM +0800, Sam Sun wrote:
> > Dear developers and maintainers,
> >
> > We encountered a task hung in function hub_activate(). It was reported
> > before by Syzbot several years ago
> > (https://groups.google.com/g/syzkaller-lts-bugs/c/_komEgHj03Y/m/rbcVKyLXBwAJ),
> > but no repro at that time. We have a C repro this time and kernel
> > config is attached to this email. The bug report is listed below.
>
> > If you have any questions, please contact us.
> >
> > Reported by Yue Sun <samsun1006219@xxxxxxxxx>
> > Reported by xingwei lee <xrivendell7@xxxxxxxxx>
>
> Yue:
>
> Can you try testing the patch below?  Thanks.
>
> Alan Stern
>
>
>
> Index: usb-devel/drivers/usb/core/sysfs.c
> ===================================================================
> --- usb-devel.orig/drivers/usb/core/sysfs.c
> +++ usb-devel/drivers/usb/core/sysfs.c
> @@ -1168,14 +1168,24 @@ static ssize_t interface_authorized_stor
>  {
>         struct usb_interface *intf = to_usb_interface(dev);
>         bool val;
> +       struct kernfs_node *kn;
>
>         if (kstrtobool(buf, &val) != 0)
>                 return -EINVAL;
>
> -       if (val)
> +       if (val) {
>                 usb_authorize_interface(intf);
> -       else
> -               usb_deauthorize_interface(intf);
> +       } else {
> +               /*
> +                * Prevent deadlock if another process is concurrently
> +                * trying to unregister intf or its parent device.
> +                */
> +               kn = sysfs_break_active_protection(&dev->kobj, &attr->attr);
> +               if (kn) {
> +                       usb_deauthorize_interface(intf);
> +                       sysfs_unbreak_active_protection(kn);
> +               }
> +       }
>
>         return count;
>  }

Hi Alan,

I applied this patch on the latest linux git commit and tested several
times. There is no more task hung report, so I think it works. Should
I try this on usb-dev branch?

Best,
Yue





[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux