vlib: fix vlib_pci_get_device_info on when not running as root 46/10946/2
authorDamjan Marion <damarion@cisco.com>
Sun, 4 Mar 2018 15:44:26 +0000 (16:44 +0100)
committerFlorin Coras <florin.coras@gmail.com>
Sun, 4 Mar 2018 18:00:03 +0000 (18:00 +0000)
While comment properly says that only first 64 bytes can be read, actual
code was returning error instead being happy with 64 bytes received.

Change-Id: I09c0d1d5c9fc8e1f6c59c093d81bb1ce1924281b
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/linux/pci.c

index 8954bcc..e67e651 100644 (file)
@@ -182,10 +182,8 @@ vlib_pci_get_device_info (vlib_pci_addr_t * addr, clib_error_t ** error)
 
   /* You can only read more that 64 bytes of config space as root; so we try to
      read the full space but fall back to just the first 64 bytes. */
-  if (read (fd, &di->config_data, sizeof (di->config_data)) !=
-      sizeof (di->config_data)
-      && read (fd, &di->config0,
-              sizeof (di->config0)) != sizeof (di->config0))
+  if (read (fd, &di->config_data, sizeof (di->config_data)) <
+      sizeof (di->config0))
     {
       err = clib_error_return_unix (0, "read `%s'", f);
       close (fd);