lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 11 Apr 2019 18:12:30 -0700
From:   John Stultz <>
To:     Yu Chen <>
Cc:     Linux USB List <>,
        <>, lkml <>,
        Zhuangluan Su <>,
        Kongfei <>,
        "Liuyu (R)" <>,,
        butao <>,,,
        Li Pengcheng <>,, YiPing Xu <>,, Yudongbin <>,
        Zang Leigang <>,
        Greg Kroah-Hartman <>,
        Heikki Krogerus <>,
        Hans de Goede <>,
        Andy Shevchenko <>
Subject: Re: [PATCH v5 09/13] usb: roles: Add usb role switch notifier.

On Thu, Mar 28, 2019 at 9:14 PM Yu Chen <> wrote:
> This patch adds notifier for drivers want to be informed of the usb role
> switch.
> Cc: Greg Kroah-Hartman <>
> Cc: Heikki Krogerus <>
> Cc: Hans de Goede <>
> Cc: Andy Shevchenko <>
> Cc: John Stultz <>
> Suggested-by: Heikki Krogerus <>
> Signed-off-by: Yu Chen <>

Hey Yu Chen!
   Thanks again for sending this patch out! As mentioned in my
comments with the other patches, I've got one proposal I wanted to
share to try to avoid  state initialization races that I've seen with
this patchset.

> diff --git a/drivers/usb/roles/class.c b/drivers/usb/roles/class.c
> index f45d8df5cfb8..e2caaa665d6e 100644
> --- a/drivers/usb/roles/class.c
> +++ b/drivers/usb/roles/class.c
> @@ -58,6 +61,20 @@ int usb_role_switch_set_role(struct usb_role_switch *sw, enum usb_role role)
>  }
>  EXPORT_SYMBOL_GPL(usb_role_switch_set_role);
> +int usb_role_switch_register_notifier(struct usb_role_switch *sw,
> +                                     struct notifier_block *nb)
> +{
> +       return blocking_notifier_chain_register(&sw->nh, nb);
> +}
> +EXPORT_SYMBOL_GPL(usb_role_switch_register_notifier);

As noted earlier, one issue I've seen is that the hisi_hikey_usb
driver's notifier may not get called early enough to receive
notification of the initial usb state.

It seems like on registration here, we should take the lock, read the
role state and immediately call the notifier to properly initialize
it? I suspect that should close the window for any state races around
driver probe timings and

Does that make sense? I have roughly prototyped this but need to do
additional testing.


Powered by blists - more mailing lists