|
@@ -769,10 +769,12 @@ static ssize_t read_vpd_attr(struct file *filp, struct kobject *kobj,
|
|
|
{
|
|
|
struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
|
|
|
|
|
|
- if (off > bin_attr->size)
|
|
|
- count = 0;
|
|
|
- else if (count > bin_attr->size - off)
|
|
|
- count = bin_attr->size - off;
|
|
|
+ if (bin_attr->size > 0) {
|
|
|
+ if (off > bin_attr->size)
|
|
|
+ count = 0;
|
|
|
+ else if (count > bin_attr->size - off)
|
|
|
+ count = bin_attr->size - off;
|
|
|
+ }
|
|
|
|
|
|
return pci_read_vpd(dev, off, count, buf);
|
|
|
}
|
|
@@ -783,10 +785,12 @@ static ssize_t write_vpd_attr(struct file *filp, struct kobject *kobj,
|
|
|
{
|
|
|
struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
|
|
|
|
|
|
- if (off > bin_attr->size)
|
|
|
- count = 0;
|
|
|
- else if (count > bin_attr->size - off)
|
|
|
- count = bin_attr->size - off;
|
|
|
+ if (bin_attr->size > 0) {
|
|
|
+ if (off > bin_attr->size)
|
|
|
+ count = 0;
|
|
|
+ else if (count > bin_attr->size - off)
|
|
|
+ count = bin_attr->size - off;
|
|
|
+ }
|
|
|
|
|
|
return pci_write_vpd(dev, off, count, buf);
|
|
|
}
|