ae23c9
From eb8c3d2ca7a67da197d2b33e0b3a83efb9abe589 Mon Sep 17 00:00:00 2001
ae23c9
From: Max Reitz <mreitz@redhat.com>
ae23c9
Date: Wed, 3 Apr 2019 17:13:13 +0100
ae23c9
Subject: [PATCH 06/11] file-posix: Fix shared locks on reopen commit
ae23c9
ae23c9
RH-Author: Max Reitz <mreitz@redhat.com>
ae23c9
Message-id: <20190403171315.20841-7-mreitz@redhat.com>
ae23c9
Patchwork-id: 85404
ae23c9
O-Subject: [RHEL-8.1 qemu-kvm PATCH 6/8] file-posix: Fix shared locks on reopen commit
ae23c9
Bugzilla: 1694148
ae23c9
RH-Acked-by: John Snow <jsnow@redhat.com>
ae23c9
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
ae23c9
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
ae23c9
ae23c9
s->locked_shared_perm is the set of bits locked in the file, which is
ae23c9
the inverse of the permissions actually shared.  So we need to pass them
ae23c9
as they are to raw_apply_lock_bytes() instead of inverting them again.
ae23c9
ae23c9
Reported-by: Alberto Garcia <berto@igalia.com>
ae23c9
Signed-off-by: Max Reitz <mreitz@redhat.com>
ae23c9
Reviewed-by: Alberto Garcia <berto@igalia.com>
ae23c9
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
ae23c9
(cherry picked from commit 577a133988c76e4ebf01d050d0d758d207a1baf7)
ae23c9
Signed-off-by: Max Reitz <mreitz@redhat.com>
ae23c9
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
ae23c9
---
ae23c9
 block/file-posix.c | 2 +-
ae23c9
 1 file changed, 1 insertion(+), 1 deletion(-)
ae23c9
ae23c9
diff --git a/block/file-posix.c b/block/file-posix.c
ae23c9
index 97e7ff2..deecf58 100644
ae23c9
--- a/block/file-posix.c
ae23c9
+++ b/block/file-posix.c
ae23c9
@@ -929,7 +929,7 @@ static void raw_reopen_commit(BDRVReopenState *state)
ae23c9
 
ae23c9
     /* Copy locks to the new fd before closing the old one. */
ae23c9
     raw_apply_lock_bytes(NULL, rs->fd, s->locked_perm,
ae23c9
-                         ~s->locked_shared_perm, false, &local_err);
ae23c9
+                         s->locked_shared_perm, false, &local_err);
ae23c9
     if (local_err) {
ae23c9
         /* shouldn't fail in a sane host, but report it just in case. */
ae23c9
         error_report_err(local_err);
ae23c9
-- 
ae23c9
1.8.3.1
ae23c9