All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-trivial] [PATCH] pci-assign: do not test path with access() before opening
@ 2015-11-02 14:17 ` Paolo Bonzini
  0 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2015-11-02 14:17 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-trivial

Using access() is a time-of-check/time-of-use race condition.  It is
okay to use them to provide better error messages, but that is pretty
much it.

In this case we can get the same error from fopen(), so just use
strerror and errno there---which actually improves the error
message most of the time.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/i386/pci-assign-load-rom.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/hw/i386/pci-assign-load-rom.c b/hw/i386/pci-assign-load-rom.c
index 34a3a7e..e40b586 100644
--- a/hw/i386/pci-assign-load-rom.c
+++ b/hw/i386/pci-assign-load-rom.c
@@ -45,14 +45,10 @@ void *pci_assign_dev_load_option_rom(PCIDevice *dev, struct Object *owner,
         return NULL;
     }
 
-    if (access(rom_file, F_OK)) {
-        error_report("pci-assign: Insufficient privileges for %s", rom_file);
-        return NULL;
-    }
-
     /* Write "1" to the ROM file to enable it */
     fp = fopen(rom_file, "r+");
     if (fp == NULL) {
+        error_report("pci-assign: Cannot open %s: %s", rom_file, strerror(errno));
         return NULL;
     }
     val = 1;
-- 
2.5.0



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

end of thread, other threads:[~2015-11-03 12:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-02 14:17 [Qemu-trivial] [PATCH] pci-assign: do not test path with access() before opening Paolo Bonzini
2015-11-02 14:17 ` [Qemu-devel] " Paolo Bonzini
2015-11-02 15:30 ` [Qemu-trivial] " Eric Blake
2015-11-02 15:30   ` Eric Blake
2015-11-03 12:12 ` [Qemu-trivial] " Michael Tokarev
2015-11-03 12:12   ` [Qemu-devel] " Michael Tokarev

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.