[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200218122545.GF28776@kuha.fi.intel.com>
Date: Tue, 18 Feb 2020 14:25:45 +0200
From: Heikki Krogerus <heikki.krogerus@...ux.intel.com>
To: Peter Chen <peter.chen@....com>
Cc: Felipe Balbi <balbi@...nel.org>,
Chunfeng Yun <chunfeng.yun@...iatek.com>,
Bin Liu <b-liu@...com>, Benson Leung <bleung@...omium.org>,
Prashant Malani <pmalani@...omium.org>,
Mika Westerberg <mika.westerberg@...ux.intel.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>
Subject: Re: [PATCH 5/9] usb: roles: Provide the switch drivers handle to the
switch in the API
Hi,
On Tue, Feb 18, 2020 at 07:23:41AM +0000, Peter Chen wrote:
> > > @@ -1118,6 +1119,7 @@ static int ci_hdrc_probe(struct platform_device *pdev)
> > > }
> > >
> > > if (ci_role_switch.fwnode) {
> > > + ci_role_switch.driver_data = ci;
> > > ci->role_switch = usb_role_switch_register(dev,
> > > &ci_role_switch);
>
> Why the struct usb_role_switch_desc needs drvdata, the struct
> usb_role_switch has already one?
I'm assuming that you are asking why not just register the switch,
and then call usb_role_switch_set_drvdata(), right?
That may create a race condition where the switch is accessed before
the driver data is available. That can happen for example if the
switch is exposed to the user space.
To play it safe, supplying the driver data as part of the descriptor.
That way we can be sure that the driver data is always available
the moment the switch is registered.
thanks,
--
heikki
Powered by blists - more mailing lists