Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aac45150 authored by Jack Pham's avatar Jack Pham
Browse files

Revert "usb: phy: dual-role: update sysfs attrs when changed"



This reverts commit d1263829.

The previous approach of dynamically updating the writeable
permission bits of the power/data_role attributes only works
if the userspace application has root permission since the
call to sysfs_update_group() removes and re-adds the files. If
they had previously been chown/chgrp'ed, the ownership would be
reset. On the other hand, if there was a ueventd rule to
dynamically update the ownership, then the mode would always
be overridden with the static umask given in the ueventd rule,
contradicting the driver's determination of writeability.

Hence, the more comprehensive fix should be done in userspace
to not rely solely on writeability. Still, this change needs
to be reverted since it can still cause a race between ueventd
and the userspace service trying to check writability.

Change-Id: Ic667a97f2bae41e5a86ee45565518b06db959b36
Signed-off-by: default avatarJack Pham <jackp@codeaurora.org>
parent 2a247139
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -70,7 +70,15 @@ static char *kstrdupcase(const char *str, gfp_t gfp, bool to_upper)
	return ret;
}

static void dual_role_changed_work(struct work_struct *work);
static void dual_role_changed_work(struct work_struct *work)
{
	struct dual_role_phy_instance *dual_role =
	    container_of(work, struct dual_role_phy_instance,
			 changed_work);

	dev_dbg(&dual_role->dev, "%s\n", __func__);
	kobject_uevent(&dual_role->dev.kobj, KOBJ_CHANGE);
}

void dual_role_instance_changed(struct dual_role_phy_instance *dual_role)
{
@@ -497,17 +505,6 @@ int dual_role_uevent(struct device *dev, struct kobj_uevent_env *env)
	return ret;
}

static void dual_role_changed_work(struct work_struct *work)
{
	struct dual_role_phy_instance *dual_role =
	    container_of(work, struct dual_role_phy_instance,
			 changed_work);

	dev_dbg(&dual_role->dev, "%s\n", __func__);
	sysfs_update_group(&dual_role->dev.kobj, &dual_role_attr_group);
	kobject_uevent(&dual_role->dev.kobj, KOBJ_CHANGE);
}

/******************* Module Init ***********************************/

static int __init dual_role_class_init(void)