linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] PCI: syscall: Set the ~0 value on access failure
@ 2021-07-29 23:37 Krzysztof Wilczyński
  2021-07-29 23:37 ` [PATCH 2/2] PCI: syscall: Change type of err variable from long to int Krzysztof Wilczyński
  0 siblings, 1 reply; 3+ messages in thread
From: Krzysztof Wilczyński @ 2021-07-29 23:37 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: linux-pci

The pciconfig_read syscall has a special provision to handle users that
don't check the return value for a possible error code and rely solely
on checking for the value of ~0 to be set as a result of the PCI
configuration read failure.

The commit e4585da22ad0 ("pci syscall.c: Switch to refcounting API")
changed this semantic of setting the results to the value of ~0 to
indicate read error concerning CAP_SYS_ADMIN capability flag validation.
After this commit, the syscall would simply return -EPERM early should
the user does not have the required permissions.  This changes the
original behaviour which might not be something that the users of this
syscall expect, especially since some of the problematic users do not
check the return code whatsoever.

Thus, restore the original behaviour of setting the results to a value
of ~0 on read failure to include the capabilities check.

Fixes: e4585da22ad0 ("pci syscall.c: Switch to refcounting API")
Signed-off-by: Krzysztof Wilczyński <kw@linux.com>
---
 drivers/pci/syscall.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
index 8b003c890b87..b842af1e06b8 100644
--- a/drivers/pci/syscall.c
+++ b/drivers/pci/syscall.c
@@ -22,8 +22,9 @@ SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
 	long err;
 	int cfg_ret;
 
+	err = -EPERM;
 	if (!capable(CAP_SYS_ADMIN))
-		return -EPERM;
+		goto error;
 
 	err = -ENODEV;
 	dev = pci_get_domain_bus_and_slot(0, bus, dfn);
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-07-30 21:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-29 23:37 [PATCH 1/2] PCI: syscall: Set the ~0 value on access failure Krzysztof Wilczyński
2021-07-29 23:37 ` [PATCH 2/2] PCI: syscall: Change type of err variable from long to int Krzysztof Wilczyński
2021-07-30 21:06   ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).