Hello, On Fri, Apr 11, 2014 at 12:10:45PM +0800, Li Zhong wrote: > @@ -439,6 +439,7 @@ static ssize_t online_store(struct device *dev, struct > device_attribute *attr, > { > bool val; > int ret; > + struct kernfs_node *kn; > > ret = strtobool(buf, &val); > if (ret < 0) > @@ -448,7 +449,15 @@ static ssize_t online_store(struct device *dev, struct > device_attribute *attr, > if (ret) > return ret; > > + kn = kernfs_find_and_get(dev->kobj.sd, attr->attr.name);
Wouldn't find_and_get need to be paired with put? > + if (WARN_ON_ONCE(!kn)) > + goto out; > + > + kernfs_break_active_protection(kn); > + > ret = val ? device_online(dev) : device_offline(dev); With active protection protection @dev may go away at any time. There should be some protection / synchronization to prevent that, no? > + kernfs_unbreak_active_protection(kn); > +out: > unlock_device_hotplug(); > return ret < 0 ? ret : count; > } Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/