Re: [PATCH] usb: typec: Send uevent for num_altmodes update

From: Greg KH
Date: Thu Jan 07 2021 - 04:17:15 EST


On Wed, Jan 06, 2021 at 07:49:04PM -0800, Prashant Malani wrote:
> Generate a change uevent when the "number_of_alternate_modes" sysfs file
> for partners and plugs is updated by a port driver.
>
> Cc: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> Cc: Benson Leung <bleung@xxxxxxxxxxxx>
> Signed-off-by: Prashant Malani <pmalani@xxxxxxxxxxxx>
> ---
> drivers/usb/typec/class.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
> index ebfd3113a9a8..8f77669f9cf4 100644
> --- a/drivers/usb/typec/class.c
> +++ b/drivers/usb/typec/class.c
> @@ -766,6 +766,7 @@ int typec_partner_set_num_altmodes(struct typec_partner *partner, int num_altmod
> return ret;
>
> sysfs_notify(&partner->dev.kobj, NULL, "number_of_alternate_modes");
> + kobject_uevent(&partner->dev.kobj, KOBJ_CHANGE);

Shouldn't the sysfs_notify() handle the "something has changed" logic
good enough for userspace, as obviously someone is polling on the thing
(otherwise we wouldn't be calling sysfs_notify...)

The kobject itself hasn't "changed", but rather an individual attribute
has changed. We don't want to create uevents for every individual sysfs
attribute changing values, do we?

What is preventing a normal "monitor the sysfs file" logic from working
here for anyone who wants to know that the alternate modes have changed?

thanks,

greg k-h