[PATCH pciutils] libpci: Fix intel_cleanup_io() implementations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Function intel_cleanup_io() should de-initialize I/O port access, e.g. by
calling iopl(0) to reset I/O privilege level to default value.

Caller of intel_cleanup_io() expects that this function returns negative
value on success and positive value on error. Error means that I/O port
access was not de-initialized and is still active. Success means that I/O
port access is not active anymore and intel_setup_io() needs to be called
again to access I/O ports.

Fix Cygwin, Haiku and Linux implementations of intel_cleanup_io() function
to correctly de-initialize I/O port access and fix return value.
---
 lib/i386-io-cygwin.h | 2 +-
 lib/i386-io-haiku.h  | 2 +-
 lib/i386-io-linux.h  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/i386-io-cygwin.h b/lib/i386-io-cygwin.h
index 16022482f268..038b02d00a94 100644
--- a/lib/i386-io-cygwin.h
+++ b/lib/i386-io-cygwin.h
@@ -17,7 +17,7 @@ intel_setup_io(struct pci_access *a UNUSED)
 static inline int
 intel_cleanup_io(struct pci_access *a UNUSED)
 {
-  iopl(3);
+  iopl(0);
   return -1;
 }
 
diff --git a/lib/i386-io-haiku.h b/lib/i386-io-haiku.h
index 2bbe592672ab..5c724b34e98a 100644
--- a/lib/i386-io-haiku.h
+++ b/lib/i386-io-haiku.h
@@ -72,7 +72,7 @@ static inline int
 intel_cleanup_io(struct pci_access *a UNUSED)
 {
   close(poke_driver_fd);
-  return 1;
+  return -1;
 }
 
 static inline u8
diff --git a/lib/i386-io-linux.h b/lib/i386-io-linux.h
index b39b4eb8267d..619f8ec11695 100644
--- a/lib/i386-io-linux.h
+++ b/lib/i386-io-linux.h
@@ -17,7 +17,7 @@ intel_setup_io(struct pci_access *a UNUSED)
 static inline int
 intel_cleanup_io(struct pci_access *a UNUSED)
 {
-  iopl(3);
+  iopl(0);
   return -1;
 }
 
-- 
2.20.1




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux