device-mapper-multipath/0002-libmultipath-cleanup-pthread_cleanup_pop-call.patch
Benjamin Marzinski 170e923cae device-mapper-multipath-0.7.9-1
Update Source to upstream version 0.7.9
  * Previous patches 0001-0006 are included in this version
Rename files
  * Previous patches 0007-0014 are now patches 0004-0011
Add 0001-multipathd-fix-mpp-hwe-handling-when-paths-are-freed.patch
Add 0002-libmultipath-cleanup-pthread_cleanup_pop-call.patch
Add 0003-libmultipath-fix-false-removes-in-dmevents-polling-c.patch
  * The above 3 patches have been submitted upstream
2018-12-03 15:24:23 -06:00

45 lines
1.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Mon, 26 Nov 2018 16:42:24 -0600
Subject: [PATCH] libmultipath: cleanup pthread_cleanup_pop call
pthread_cleanup_push() and pthread_cleanup_pop() must be called in the
same lexical scope. In uevent_listen(), the pthread_cleanup_pop() call
to cleanup the udev monitor is called in a nested 'if' block, within
the block where pthread_cleanup_push() is called. Since this is a
single-statement if block, it doesn't actually cause any problems, but
it should be fixed anyways.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/uevent.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
index 5f910e6..f73de8c 100644
--- a/libmultipath/uevent.c
+++ b/libmultipath/uevent.c
@@ -806,7 +806,7 @@ int uevent_listen(struct udev *udev)
monitor = udev_monitor_new_from_netlink(udev, "udev");
if (!monitor) {
condlog(2, "failed to create udev monitor");
- goto out;
+ goto failback;
}
pthread_cleanup_push(monitor_cleanup, monitor);
#ifdef LIBUDEV_API_RECVBUF
@@ -893,8 +893,8 @@ int uevent_listen(struct udev *udev)
}
need_failback = 0;
out:
- if (monitor)
- pthread_cleanup_pop(1);
+ pthread_cleanup_pop(1);
+failback:
if (need_failback)
err = failback_listen();
pthread_cleanup_pop(1);
--
2.17.2