On 11/23/18 4:39 PM, Ilya Maximets wrote:
If rte_eal_iopl_init() will be called more than once we'll leak
the file descriptor.

Fixes: b46fe31862ec ("eal/bsd: fix virtio on FreeBSD")
Cc: sta...@dpdk.org

Signed-off-by: Ilya Maximets <i.maxim...@samsung.com>
---
  lib/librte_eal/bsdapp/eal/eal.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 508cbc46f..b8152a75c 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -556,9 +556,11 @@ int rte_eal_has_hugepages(void)
  int
  rte_eal_iopl_init(void)
  {
-       static int fd;
+       static int fd = -1;
+
+       if (fd < 0)
+               fd = open("/dev/io", O_RDWR);
- fd = open("/dev/io", O_RDWR);
        if (fd < 0)
                return -1;
        /* keep fd open for iopl */


Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>

Reply via email to