|
@@ -335,13 +335,14 @@ pci_driver_attr_show(struct kobject * kobj, struct attribute *attr, char *buf)
|
|
|
{
|
|
|
struct device_driver *driver = kobj_to_pci_driver(kobj);
|
|
|
struct driver_attribute *dattr = attr_to_driver_attribute(attr);
|
|
|
- ssize_t ret = 0;
|
|
|
+ ssize_t ret;
|
|
|
|
|
|
- if (get_driver(driver)) {
|
|
|
- if (dattr->show)
|
|
|
- ret = dattr->show(driver, buf);
|
|
|
- put_driver(driver);
|
|
|
- }
|
|
|
+ if (!get_driver(driver))
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
+ ret = dattr->show ? dattr->show(driver, buf) : -EIO;
|
|
|
+
|
|
|
+ put_driver(driver);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -351,13 +352,14 @@ pci_driver_attr_store(struct kobject * kobj, struct attribute *attr,
|
|
|
{
|
|
|
struct device_driver *driver = kobj_to_pci_driver(kobj);
|
|
|
struct driver_attribute *dattr = attr_to_driver_attribute(attr);
|
|
|
- ssize_t ret = 0;
|
|
|
+ ssize_t ret;
|
|
|
|
|
|
- if (get_driver(driver)) {
|
|
|
- if (dattr->store)
|
|
|
- ret = dattr->store(driver, buf, count);
|
|
|
- put_driver(driver);
|
|
|
- }
|
|
|
+ if (!get_driver(driver))
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
+ ret = dattr->store ? dattr->store(driver, buf, count) : -EIO;
|
|
|
+
|
|
|
+ put_driver(driver);
|
|
|
return ret;
|
|
|
}
|
|
|
|