Messages in this thread | | | Date | Tue, 1 Aug 2006 13:25:09 -0700 | From | Pete Zaitcev <> | Subject | get_device in device_create_file |
| |
Hi, Greg:
This code makes no sense to me:
> int device_create_file(struct device * dev, struct device_attribute * attr) > { > int error = 0; > if (get_device(dev)) { > error = sysfs_create_file(&dev->kobj, &attr->attr); > put_device(dev); > } > return error; > }
If the struct device *dev, and its presumably enclosing structure, can be freed by a different CPU (or pre-empt), then get_device does not protect it. It can be freed before get_device is reached. Buf it not, and the caller has a reference, then the call to get_device is redundant.
How is this supposed to work?
-- Pete - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |