[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160524192826.GA28453@roeck-us.net>
Date: Tue, 24 May 2016 12:28:26 -0700
From: Guenter Roeck <linux@...ck-us.net>
To: Heikki Krogerus <heikki.krogerus@...ux.intel.com>
Cc: Greg KH <gregkh@...uxfoundation.org>,
Mathias Nyman <mathias.nyman@...ux.intel.com>,
Felipe Balbi <felipe.balbi@...ux.intel.com>,
Oliver Neukum <oneukum@...e.com>,
Rajaram R <rajaram.officemail@...il.com>,
Andy Shevchenko <andy.shevchenko@...il.com>,
linux-kernel@...r.kernel.org, linux-usb@...r.kernel.org
Subject: Re: [RFC PATCHv2] usb: USB Type-C Connector Class
On Thu, May 19, 2016 at 03:44:54PM +0300, Heikki Krogerus wrote:
> The purpose of this class is to provide unified interface for user
> space to get the status and basic information about USB Type-C
> Connectors in the system, control data role swapping, and when USB PD
> is available, also power role swapping and Alternate Modes.
>
> Signed-off-by: Heikki Krogerus <heikki.krogerus@...ux.intel.com>
[ ... ]
> +
> +static void typec_remove_partner(struct typec_port *port)
> +{
> + sysfs_remove_link(&port->dev.kobj, "partner");
> + typec_unregister_altmodes(port->partner->alt_modes);
This only unregisters alternate modes registered through typec_add_partner(),
but not alternate modes registered separately. Or is the calling code expected
to set port->partner->alt_modes when calling typec_register_altmodes()
directly ?
[ ... ]
> +
> +void typec_unregister_altmodes(struct typec_altmode *alt_modes)
> +{
> + struct typec_altmode *alt;
> +
This will crash if alt_modes is NULL, which will happen if
partner->alt_modes is NULL at connection time. Semantically
this is different to typec_register_altmodes(), which does
have a NULL check.
Guenter
Powered by blists - more mailing lists