diff options
Diffstat (limited to 'drivers/pci/proc.c')
| -rw-r--r-- | drivers/pci/proc.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c index eb907a8faf2a..9b8505ccc56d 100644 --- a/drivers/pci/proc.c +++ b/drivers/pci/proc.c @@ -76,6 +76,8 @@ proc_bus_pci_read(struct file *file, char __user *buf, size_t nbytes, loff_t *pp  	if (!access_ok(VERIFY_WRITE, buf, cnt))  		return -EINVAL; +	pci_config_pm_runtime_get(dev); +  	if ((pos & 1) && cnt) {  		unsigned char val;  		pci_user_read_config_byte(dev, pos, &val); @@ -121,6 +123,8 @@ proc_bus_pci_read(struct file *file, char __user *buf, size_t nbytes, loff_t *pp  		cnt--;  	} +	pci_config_pm_runtime_put(dev); +  	*ppos = pos;  	return nbytes;  } @@ -146,6 +150,8 @@ proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, lof  	if (!access_ok(VERIFY_READ, buf, cnt))  		return -EINVAL; +	pci_config_pm_runtime_get(dev); +  	if ((pos & 1) && cnt) {  		unsigned char val;  		__get_user(val, buf); @@ -191,6 +197,8 @@ proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, lof  		cnt--;  	} +	pci_config_pm_runtime_put(dev); +  	*ppos = pos;  	i_size_write(ino, dp->size);  	return nbytes;  | 
