More info about kobj_attribute store and show functions

Greg KH greg at kroah.com
Wed Sep 3 22:22:44 EDT 2014


On Wed, Sep 03, 2014 at 10:39:06PM -0300, Lucas Tanure wrote:
> Greg, 
> 
> I was looking again to documentation, but didn't find a explanation about the
> show and store functions. I'm missing something ? 
> 
> Yes, everything work if I simple use the buffer from store function, but I was
> looking for where it came from. 
> Like, It was from user space? So, I need to take care like 
> simple_write_to_buffer does with user space memory ? 

If it came from userspace, it would have been marked with a __user
marking, so it's a kernel pointer.

> static ssize_t id_store(struct kobject *kobj, struct kobj_attribute *attr,
> const char *buf, size_t count)
> {
> char *buffer;
> buffer = kcalloc(cnt, sizeof(char), GFP_KERNEL);
> if (buffer) {
> if (copy_from_user(buffer, buf, cnt) == cnt) {
> if (strcmp(buffer, "Tanure") == 0)
> return cnt;
> }
> }
> }
> return -EINVAL;
> }

Just work with the buffer directly, sysfs is supposed to be "easy" to
use.

greg k-h



More information about the Kernelnewbies mailing list