Remove patches.
This commit is contained in:
parent
b5a71ab87a
commit
6fca1977b0
@ -1,74 +0,0 @@
|
|||||||
From 8b20bbd329c07941f3e4aa00e14c05ed27b25435 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Tue, 2 Mar 2021 22:20:49 +0000
|
|
||||||
Subject: [PATCH 1/6] copy: Stable sort in tests.
|
|
||||||
|
|
||||||
When running the tests in Koji they behaved differently from running
|
|
||||||
locally (under a UTF-8 locale). This turned out to be a difference in
|
|
||||||
sorting under the different locales.
|
|
||||||
|
|
||||||
Thanks: Eric Blake
|
|
||||||
---
|
|
||||||
copy/copy-sparse-request-size.sh | 2 +-
|
|
||||||
copy/copy-sparse.sh | 8 ++++----
|
|
||||||
2 files changed, 5 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/copy/copy-sparse-request-size.sh b/copy/copy-sparse-request-size.sh
|
|
||||||
index b539f5e..f2e2b61 100755
|
|
||||||
--- a/copy/copy-sparse-request-size.sh
|
|
||||||
+++ b/copy/copy-sparse-request-size.sh
|
|
||||||
@@ -50,7 +50,7 @@ $VG nbdcopy --no-extents -S 0 --request-size=1048576 -- \
|
|
||||||
trim=" echo \$@ >> $out " \
|
|
||||||
zero=" echo \$@ >> $out " ]
|
|
||||||
|
|
||||||
-sort -n -o $out $out
|
|
||||||
+LC_ALL=C sort -n -o $out $out
|
|
||||||
|
|
||||||
echo Output:
|
|
||||||
cat $out
|
|
||||||
diff --git a/copy/copy-sparse.sh b/copy/copy-sparse.sh
|
|
||||||
index c43b41a..5f12bad 100755
|
|
||||||
--- a/copy/copy-sparse.sh
|
|
||||||
+++ b/copy/copy-sparse.sh
|
|
||||||
@@ -50,7 +50,7 @@ $VG nbdcopy -S 0 -- \
|
|
||||||
|
|
||||||
# Order of the output could vary because requests are sent in
|
|
||||||
# parallel.
|
|
||||||
-sort -n -o $out $out
|
|
||||||
+LC_ALL=C sort -n -o $out $out
|
|
||||||
|
|
||||||
echo Output:
|
|
||||||
cat $out
|
|
||||||
@@ -65,8 +65,8 @@ zero 134184960 4160749568 may_trim
|
|
||||||
zero 134184960 939524096 may_trim
|
|
||||||
zero 134217728 1073741824 may_trim
|
|
||||||
zero 134217728 1207959552 may_trim
|
|
||||||
-zero 134217728 1342177280 may_trim
|
|
||||||
zero 134217728 134217728 may_trim
|
|
||||||
+zero 134217728 1342177280 may_trim
|
|
||||||
zero 134217728 1476395008 may_trim
|
|
||||||
zero 134217728 1610612736 may_trim
|
|
||||||
zero 134217728 1744830464 may_trim
|
|
||||||
@@ -76,8 +76,8 @@ zero 134217728 2147483648 may_trim
|
|
||||||
zero 134217728 2281701376 may_trim
|
|
||||||
zero 134217728 2415919104 may_trim
|
|
||||||
zero 134217728 2550136832 may_trim
|
|
||||||
-zero 134217728 2684354560 may_trim
|
|
||||||
zero 134217728 268435456 may_trim
|
|
||||||
+zero 134217728 2684354560 may_trim
|
|
||||||
zero 134217728 2818572288 may_trim
|
|
||||||
zero 134217728 2952790016 may_trim
|
|
||||||
zero 134217728 3087007744 may_trim
|
|
||||||
@@ -87,8 +87,8 @@ zero 134217728 3489660928 may_trim
|
|
||||||
zero 134217728 3623878656 may_trim
|
|
||||||
zero 134217728 3758096384 may_trim
|
|
||||||
zero 134217728 3892314112 may_trim
|
|
||||||
-zero 134217728 4026531840 may_trim
|
|
||||||
zero 134217728 402653184 may_trim
|
|
||||||
+zero 134217728 4026531840 may_trim
|
|
||||||
zero 134217728 536870912 may_trim
|
|
||||||
zero 134217728 671088640 may_trim
|
|
||||||
zero 134217728 805306368 may_trim" ]; then
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 40308a005eaa6b2e8f98da8952d0c0cacc51efde Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Blake <eblake@redhat.com>
|
|
||||||
Date: Fri, 12 Mar 2021 17:00:58 -0600
|
|
||||||
Subject: [PATCH] security: Document assignment of CVE-2021-20286
|
|
||||||
|
|
||||||
Now that we finally have a CVE number, it's time to document
|
|
||||||
the problem (it's low severity, but still a denial of service).
|
|
||||||
|
|
||||||
Fixes: fb4440de9cc7 (opt_go: Tolerate unplanned server death)
|
|
||||||
---
|
|
||||||
docs/libnbd-security.pod | 8 +++++++-
|
|
||||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/docs/libnbd-security.pod b/docs/libnbd-security.pod
|
|
||||||
index 876ef2f..3c994de 100644
|
|
||||||
--- a/docs/libnbd-security.pod
|
|
||||||
+++ b/docs/libnbd-security.pod
|
|
||||||
@@ -22,6 +22,12 @@ L<https://www.redhat.com/archives/libguestfs/2019-September/msg00128.html>
|
|
||||||
See the full announcement here:
|
|
||||||
L<https://www.redhat.com/archives/libguestfs/2019-October/msg00060.html>
|
|
||||||
|
|
||||||
+=head2 CVE-2021-20286
|
|
||||||
+denial of service when using L<nbd_set_opt_mode(3)>
|
|
||||||
+
|
|
||||||
+See the full announcement here:
|
|
||||||
+L<https://listman.redhat.com/archives/libguestfs/2021-March/msg00092.html>
|
|
||||||
+
|
|
||||||
=head1 SEE ALSO
|
|
||||||
|
|
||||||
L<libnbd(3)>.
|
|
||||||
@@ -34,4 +40,4 @@ Richard W.M. Jones
|
|
||||||
|
|
||||||
=head1 COPYRIGHT
|
|
||||||
|
|
||||||
-Copyright (C) 2019 Red Hat Inc.
|
|
||||||
+Copyright (C) 2019-2021 Red Hat Inc.
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
@ -1,170 +0,0 @@
|
|||||||
From bae7c41a5126c56da4ee77bce39955036fca8b5f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Blake <eblake@redhat.com>
|
|
||||||
Date: Tue, 2 Mar 2021 16:31:39 -0600
|
|
||||||
Subject: [PATCH 2/6] copy: Nicer sort
|
|
||||||
|
|
||||||
Tell sort where the numbers live, so we can get columns in ascending
|
|
||||||
numeric order. Improves 8b20bbd329.
|
|
||||||
---
|
|
||||||
copy/copy-sparse-no-extents.sh | 12 ++++++------
|
|
||||||
copy/copy-sparse-request-size.sh | 20 ++++++++++----------
|
|
||||||
copy/copy-sparse.sh | 18 +++++++++---------
|
|
||||||
3 files changed, 25 insertions(+), 25 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/copy/copy-sparse-no-extents.sh b/copy/copy-sparse-no-extents.sh
|
|
||||||
index cdc132b..4dc5c88 100755
|
|
||||||
--- a/copy/copy-sparse-no-extents.sh
|
|
||||||
+++ b/copy/copy-sparse-no-extents.sh
|
|
||||||
@@ -50,22 +50,21 @@ $VG nbdcopy --no-extents -S 0 -- \
|
|
||||||
trim=" echo \$@ >> $out " \
|
|
||||||
zero=" echo \$@ >> $out " ]
|
|
||||||
|
|
||||||
-sort -n -o $out $out
|
|
||||||
+LC_ALL=C sort -k1,1 -k2,2n -k3,3n -o $out $out
|
|
||||||
|
|
||||||
echo Output:
|
|
||||||
cat $out
|
|
||||||
|
|
||||||
if [ "$(cat $out)" != "pwrite 33554432 0
|
|
||||||
+pwrite 33554432 33554432
|
|
||||||
+pwrite 33554432 67108864
|
|
||||||
pwrite 33554432 100663296
|
|
||||||
-pwrite 33554432 1006632960
|
|
||||||
-pwrite 33554432 1040187392
|
|
||||||
pwrite 33554432 134217728
|
|
||||||
pwrite 33554432 167772160
|
|
||||||
pwrite 33554432 201326592
|
|
||||||
pwrite 33554432 234881024
|
|
||||||
pwrite 33554432 268435456
|
|
||||||
pwrite 33554432 301989888
|
|
||||||
-pwrite 33554432 33554432
|
|
||||||
pwrite 33554432 335544320
|
|
||||||
pwrite 33554432 369098752
|
|
||||||
pwrite 33554432 402653184
|
|
||||||
@@ -76,7 +75,6 @@ pwrite 33554432 536870912
|
|
||||||
pwrite 33554432 570425344
|
|
||||||
pwrite 33554432 603979776
|
|
||||||
pwrite 33554432 637534208
|
|
||||||
-pwrite 33554432 67108864
|
|
||||||
pwrite 33554432 671088640
|
|
||||||
pwrite 33554432 704643072
|
|
||||||
pwrite 33554432 738197504
|
|
||||||
@@ -86,7 +84,9 @@ pwrite 33554432 838860800
|
|
||||||
pwrite 33554432 872415232
|
|
||||||
pwrite 33554432 905969664
|
|
||||||
pwrite 33554432 939524096
|
|
||||||
-pwrite 33554432 973078528" ]; then
|
|
||||||
+pwrite 33554432 973078528
|
|
||||||
+pwrite 33554432 1006632960
|
|
||||||
+pwrite 33554432 1040187392" ]; then
|
|
||||||
echo "$0: output does not match expected"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
diff --git a/copy/copy-sparse-request-size.sh b/copy/copy-sparse-request-size.sh
|
|
||||||
index f2e2b61..78a066a 100755
|
|
||||||
--- a/copy/copy-sparse-request-size.sh
|
|
||||||
+++ b/copy/copy-sparse-request-size.sh
|
|
||||||
@@ -50,13 +50,21 @@ $VG nbdcopy --no-extents -S 0 --request-size=1048576 -- \
|
|
||||||
trim=" echo \$@ >> $out " \
|
|
||||||
zero=" echo \$@ >> $out " ]
|
|
||||||
|
|
||||||
-LC_ALL=C sort -n -o $out $out
|
|
||||||
+LC_ALL=C sort -k1,1 -k2,2n -k3,3n -o $out $out
|
|
||||||
|
|
||||||
echo Output:
|
|
||||||
cat $out
|
|
||||||
|
|
||||||
if [ "$(cat $out)" != "pwrite 1048576 0
|
|
||||||
pwrite 1048576 1048576
|
|
||||||
+pwrite 1048576 2097152
|
|
||||||
+pwrite 1048576 3145728
|
|
||||||
+pwrite 1048576 4194304
|
|
||||||
+pwrite 1048576 5242880
|
|
||||||
+pwrite 1048576 6291456
|
|
||||||
+pwrite 1048576 7340032
|
|
||||||
+pwrite 1048576 8388608
|
|
||||||
+pwrite 1048576 9437184
|
|
||||||
pwrite 1048576 10485760
|
|
||||||
pwrite 1048576 11534336
|
|
||||||
pwrite 1048576 12582912
|
|
||||||
@@ -67,7 +75,6 @@ pwrite 1048576 16777216
|
|
||||||
pwrite 1048576 17825792
|
|
||||||
pwrite 1048576 18874368
|
|
||||||
pwrite 1048576 19922944
|
|
||||||
-pwrite 1048576 2097152
|
|
||||||
pwrite 1048576 20971520
|
|
||||||
pwrite 1048576 22020096
|
|
||||||
pwrite 1048576 23068672
|
|
||||||
@@ -78,15 +85,8 @@ pwrite 1048576 27262976
|
|
||||||
pwrite 1048576 28311552
|
|
||||||
pwrite 1048576 29360128
|
|
||||||
pwrite 1048576 30408704
|
|
||||||
-pwrite 1048576 3145728
|
|
||||||
pwrite 1048576 31457280
|
|
||||||
-pwrite 1048576 32505856
|
|
||||||
-pwrite 1048576 4194304
|
|
||||||
-pwrite 1048576 5242880
|
|
||||||
-pwrite 1048576 6291456
|
|
||||||
-pwrite 1048576 7340032
|
|
||||||
-pwrite 1048576 8388608
|
|
||||||
-pwrite 1048576 9437184" ]; then
|
|
||||||
+pwrite 1048576 32505856" ]; then
|
|
||||||
echo "$0: output does not match expected"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
diff --git a/copy/copy-sparse.sh b/copy/copy-sparse.sh
|
|
||||||
index 5f12bad..1a6da86 100755
|
|
||||||
--- a/copy/copy-sparse.sh
|
|
||||||
+++ b/copy/copy-sparse.sh
|
|
||||||
@@ -50,7 +50,7 @@ $VG nbdcopy -S 0 -- \
|
|
||||||
|
|
||||||
# Order of the output could vary because requests are sent in
|
|
||||||
# parallel.
|
|
||||||
-LC_ALL=C sort -n -o $out $out
|
|
||||||
+LC_ALL=C sort -k1,1 -k2,2n -k3,3n -o $out $out
|
|
||||||
|
|
||||||
echo Output:
|
|
||||||
cat $out
|
|
||||||
@@ -61,11 +61,16 @@ pwrite 32768 0
|
|
||||||
pwrite 32768 1073709056
|
|
||||||
pwrite 32768 4294934528
|
|
||||||
zero 134184960 32768 may_trim
|
|
||||||
-zero 134184960 4160749568 may_trim
|
|
||||||
zero 134184960 939524096 may_trim
|
|
||||||
+zero 134184960 4160749568 may_trim
|
|
||||||
+zero 134217728 134217728 may_trim
|
|
||||||
+zero 134217728 268435456 may_trim
|
|
||||||
+zero 134217728 402653184 may_trim
|
|
||||||
+zero 134217728 536870912 may_trim
|
|
||||||
+zero 134217728 671088640 may_trim
|
|
||||||
+zero 134217728 805306368 may_trim
|
|
||||||
zero 134217728 1073741824 may_trim
|
|
||||||
zero 134217728 1207959552 may_trim
|
|
||||||
-zero 134217728 134217728 may_trim
|
|
||||||
zero 134217728 1342177280 may_trim
|
|
||||||
zero 134217728 1476395008 may_trim
|
|
||||||
zero 134217728 1610612736 may_trim
|
|
||||||
@@ -76,7 +81,6 @@ zero 134217728 2147483648 may_trim
|
|
||||||
zero 134217728 2281701376 may_trim
|
|
||||||
zero 134217728 2415919104 may_trim
|
|
||||||
zero 134217728 2550136832 may_trim
|
|
||||||
-zero 134217728 268435456 may_trim
|
|
||||||
zero 134217728 2684354560 may_trim
|
|
||||||
zero 134217728 2818572288 may_trim
|
|
||||||
zero 134217728 2952790016 may_trim
|
|
||||||
@@ -87,11 +91,7 @@ zero 134217728 3489660928 may_trim
|
|
||||||
zero 134217728 3623878656 may_trim
|
|
||||||
zero 134217728 3758096384 may_trim
|
|
||||||
zero 134217728 3892314112 may_trim
|
|
||||||
-zero 134217728 402653184 may_trim
|
|
||||||
-zero 134217728 4026531840 may_trim
|
|
||||||
-zero 134217728 536870912 may_trim
|
|
||||||
-zero 134217728 671088640 may_trim
|
|
||||||
-zero 134217728 805306368 may_trim" ]; then
|
|
||||||
+zero 134217728 4026531840 may_trim" ]; then
|
|
||||||
echo "$0: output does not match expected"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
|||||||
From 4e456ff6363580177ceffdad79b8fc1e8c7f35eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Wed, 3 Mar 2021 10:12:31 +0000
|
|
||||||
Subject: [PATCH 3/6] Revert "copy: file-ops.c: Remove unneeded check"
|
|
||||||
|
|
||||||
This reverts commit 0f6e4f38bc440fc52c20a3a448ef031f806ec5e2.
|
|
||||||
|
|
||||||
This fails on ppc64le only with:
|
|
||||||
|
|
||||||
lt-nbdcopy: file-ops.c:136: page_was_cached: Assertion `page < rwf->cached_pages.size' failed.
|
|
||||||
|
|
||||||
Coincidentally this is the only architecture on Fedora that uses a 64K
|
|
||||||
page size, although I don't know if that is connected. I was not able
|
|
||||||
to make this fail on x86.
|
|
||||||
---
|
|
||||||
copy/file-ops.c | 21 ++++++++++-----------
|
|
||||||
1 file changed, 10 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/copy/file-ops.c b/copy/file-ops.c
|
|
||||||
index 47ec768..ea725a4 100644
|
|
||||||
--- a/copy/file-ops.c
|
|
||||||
+++ b/copy/file-ops.c
|
|
||||||
@@ -102,7 +102,7 @@ page_size_init (void)
|
|
||||||
/* Load the page cache map for a particular file into
|
|
||||||
* rwf->cached_pages. Only used when reading files. This doesn't
|
|
||||||
* fail: if a system call fails then rwf->cached_pages.size will be
|
|
||||||
- * zero which is handled in page_cache_evict.
|
|
||||||
+ * zero which is handled in page_was_cached.
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
page_cache_map (struct rw_file *rwf)
|
|
||||||
@@ -126,16 +126,19 @@ page_cache_map (struct rw_file *rwf)
|
|
||||||
munmap (ptr, rwf->rw.size);
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* Test if a single page of the file was cached before nbdcopy ran.
|
|
||||||
- * Valid only if we mapped the cached pages.
|
|
||||||
- */
|
|
||||||
+/* Test if a single page of the file was cached before nbdcopy ran. */
|
|
||||||
static inline bool
|
|
||||||
page_was_cached (struct rw_file *rwf, uint64_t offset)
|
|
||||||
{
|
|
||||||
uint64_t page = offset / page_size;
|
|
||||||
- assert (page < rwf->cached_pages.size);
|
|
||||||
-
|
|
||||||
- return (rwf->cached_pages.ptr[page] & 1) != 0;
|
|
||||||
+ if (page < rwf->cached_pages.size)
|
|
||||||
+ return (rwf->cached_pages.ptr[page] & 1) != 0;
|
|
||||||
+ else
|
|
||||||
+ /* This path is taken if we didn't manage to map the input file
|
|
||||||
+ * for any reason. In this case assume that pages were mapped so
|
|
||||||
+ * we will not evict them: essentially fall back to doing nothing.
|
|
||||||
+ */
|
|
||||||
+ return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Evict file contents from the page cache if they were not present in
|
|
||||||
@@ -147,10 +150,6 @@ page_cache_evict (struct rw_file *rwf, uint64_t orig_offset, size_t orig_len)
|
|
||||||
uint64_t offset, n;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
- /* If we didn't manage to map the input file for any reason, assume
|
|
||||||
- * that pages were mapped so we will not evict them: essentially fall
|
|
||||||
- * back to doing nothing.
|
|
||||||
- */
|
|
||||||
if (rwf->cached_pages.size == 0) return;
|
|
||||||
|
|
||||||
/* Only bother with whole pages. */
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
|||||||
From 94a78764d80b6dc41ff2ae8a0e5f1b35c2fd8e78 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Nir Soffer <nsoffer@redhat.com>
|
|
||||||
Date: Sat, 27 Feb 2021 05:36:38 +0200
|
|
||||||
Subject: [PATCH 4/6] copy: file-ops.c: Remove unneeded check
|
|
||||||
|
|
||||||
This function is called only from page_cache_evict(), which already
|
|
||||||
check that we could map the cached pages. Add an assert to document this
|
|
||||||
assumption.
|
|
||||||
|
|
||||||
Signed-off-by: Nir Soffer <nsoffer@redhat.com>
|
|
||||||
---
|
|
||||||
copy/file-ops.c | 21 +++++++++++----------
|
|
||||||
1 file changed, 11 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/copy/file-ops.c b/copy/file-ops.c
|
|
||||||
index ea725a4..47ec768 100644
|
|
||||||
--- a/copy/file-ops.c
|
|
||||||
+++ b/copy/file-ops.c
|
|
||||||
@@ -102,7 +102,7 @@ page_size_init (void)
|
|
||||||
/* Load the page cache map for a particular file into
|
|
||||||
* rwf->cached_pages. Only used when reading files. This doesn't
|
|
||||||
* fail: if a system call fails then rwf->cached_pages.size will be
|
|
||||||
- * zero which is handled in page_was_cached.
|
|
||||||
+ * zero which is handled in page_cache_evict.
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
page_cache_map (struct rw_file *rwf)
|
|
||||||
@@ -126,19 +126,16 @@ page_cache_map (struct rw_file *rwf)
|
|
||||||
munmap (ptr, rwf->rw.size);
|
|
||||||
}
|
|
||||||
|
|
||||||
-/* Test if a single page of the file was cached before nbdcopy ran. */
|
|
||||||
+/* Test if a single page of the file was cached before nbdcopy ran.
|
|
||||||
+ * Valid only if we mapped the cached pages.
|
|
||||||
+ */
|
|
||||||
static inline bool
|
|
||||||
page_was_cached (struct rw_file *rwf, uint64_t offset)
|
|
||||||
{
|
|
||||||
uint64_t page = offset / page_size;
|
|
||||||
- if (page < rwf->cached_pages.size)
|
|
||||||
- return (rwf->cached_pages.ptr[page] & 1) != 0;
|
|
||||||
- else
|
|
||||||
- /* This path is taken if we didn't manage to map the input file
|
|
||||||
- * for any reason. In this case assume that pages were mapped so
|
|
||||||
- * we will not evict them: essentially fall back to doing nothing.
|
|
||||||
- */
|
|
||||||
- return true;
|
|
||||||
+ assert (page < rwf->cached_pages.size);
|
|
||||||
+
|
|
||||||
+ return (rwf->cached_pages.ptr[page] & 1) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Evict file contents from the page cache if they were not present in
|
|
||||||
@@ -150,6 +147,10 @@ page_cache_evict (struct rw_file *rwf, uint64_t orig_offset, size_t orig_len)
|
|
||||||
uint64_t offset, n;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
+ /* If we didn't manage to map the input file for any reason, assume
|
|
||||||
+ * that pages were mapped so we will not evict them: essentially fall
|
|
||||||
+ * back to doing nothing.
|
|
||||||
+ */
|
|
||||||
if (rwf->cached_pages.size == 0) return;
|
|
||||||
|
|
||||||
/* Only bother with whole pages. */
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From 107eb605cfb75238020332b5a5461d0e09d62bec Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Wed, 3 Mar 2021 12:51:51 +0100
|
|
||||||
Subject: [PATCH 5/6] copy/file-ops.c: Fix page eviction when len < page_size.
|
|
||||||
|
|
||||||
On Fedora ppc64le at the moment page size is 64K. When asked to evict
|
|
||||||
a range with length < 64K the length calculation wrapped around and it
|
|
||||||
tried to evict a huge number of pages beyond the end of the file.
|
|
||||||
|
|
||||||
With Nir's commit 0f6e4f38b this (correctly) resulted in an assertion
|
|
||||||
failure.
|
|
||||||
|
|
||||||
Fix this by checking for the overflow and returning early.
|
|
||||||
---
|
|
||||||
copy/file-ops.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/copy/file-ops.c b/copy/file-ops.c
|
|
||||||
index 47ec768..6bad50c 100644
|
|
||||||
--- a/copy/file-ops.c
|
|
||||||
+++ b/copy/file-ops.c
|
|
||||||
@@ -155,6 +155,7 @@ page_cache_evict (struct rw_file *rwf, uint64_t orig_offset, size_t orig_len)
|
|
||||||
|
|
||||||
/* Only bother with whole pages. */
|
|
||||||
offset = ROUND_UP (orig_offset, page_size);
|
|
||||||
+ if (orig_len < offset - orig_offset) return;
|
|
||||||
len = orig_len - (offset - orig_offset);
|
|
||||||
len = ROUND_DOWN (len, page_size);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
|||||||
From 64962a582c00828cc2d26d94b149840ab2402165 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Blake <eblake@redhat.com>
|
|
||||||
Date: Thu, 4 Mar 2021 09:27:56 -0600
|
|
||||||
Subject: [PATCH 6/6] info: Let exit status reflect any failures during
|
|
||||||
NBD_OPT_INFO
|
|
||||||
|
|
||||||
It turns out that at least nbdkit's testsuite was relying on a
|
|
||||||
non-zero exit status from nbdinfo when purposefully attempting to get
|
|
||||||
info on an invalid export name. Printing as much information as
|
|
||||||
possible instead of going silent becaus of one error is good, but any
|
|
||||||
time we print to stderr, the exit status should reflect that.
|
|
||||||
|
|
||||||
Fixes: 5473e34fc1 (info: Don't kill --list early just because one opt_info fails)
|
|
||||||
Reported-by: Rich Jones <rjones@redhat.com>
|
|
||||||
---
|
|
||||||
info/nbdinfo.c | 25 +++++++++++++++----------
|
|
||||||
1 file changed, 15 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/info/nbdinfo.c b/info/nbdinfo.c
|
|
||||||
index 4b18ab2..3dfc463 100644
|
|
||||||
--- a/info/nbdinfo.c
|
|
||||||
+++ b/info/nbdinfo.c
|
|
||||||
@@ -58,9 +58,9 @@ DEFINE_VECTOR_TYPE (uint32_vector, uint32_t)
|
|
||||||
static int collect_context (void *opaque, const char *name);
|
|
||||||
static int collect_export (void *opaque, const char *name,
|
|
||||||
const char *desc);
|
|
||||||
-static void list_one_export (struct nbd_handle *nbd, const char *desc,
|
|
||||||
+static bool list_one_export (struct nbd_handle *nbd, const char *desc,
|
|
||||||
bool first, bool last);
|
|
||||||
-static void list_all_exports (struct nbd_handle *nbd1, const char *uri);
|
|
||||||
+static bool list_all_exports (struct nbd_handle *nbd1, const char *uri);
|
|
||||||
static void print_json_string (const char *);
|
|
||||||
static char *get_content (struct nbd_handle *, int64_t size);
|
|
||||||
static int extent_callback (void *user_data, const char *metacontext,
|
|
||||||
@@ -124,6 +124,7 @@ main (int argc, char *argv[])
|
|
||||||
int tls_negotiated;
|
|
||||||
char *output = NULL;
|
|
||||||
size_t output_len = 0;
|
|
||||||
+ bool list_okay = true;
|
|
||||||
|
|
||||||
progname = argv[0];
|
|
||||||
|
|
||||||
@@ -336,9 +337,9 @@ main (int argc, char *argv[])
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!list_all)
|
|
||||||
- list_one_export (nbd, NULL, true, true);
|
|
||||||
+ list_okay = list_one_export (nbd, NULL, true, true);
|
|
||||||
else
|
|
||||||
- list_all_exports (nbd, argv[optind]);
|
|
||||||
+ list_okay = list_all_exports (nbd, argv[optind]);
|
|
||||||
|
|
||||||
if (json_output)
|
|
||||||
fprintf (fp, "}\n");
|
|
||||||
@@ -365,7 +366,7 @@ main (int argc, char *argv[])
|
|
||||||
exit (EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
- exit (EXIT_SUCCESS);
|
|
||||||
+ exit (list_okay ? EXIT_SUCCESS : EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
@@ -398,7 +399,7 @@ collect_export (void *opaque, const char *name, const char *desc)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void
|
|
||||||
+static bool
|
|
||||||
list_one_export (struct nbd_handle *nbd, const char *desc,
|
|
||||||
bool first, bool last)
|
|
||||||
{
|
|
||||||
@@ -424,7 +425,7 @@ list_one_export (struct nbd_handle *nbd, const char *desc,
|
|
||||||
nbd_opt_go (nbd) == -1) {
|
|
||||||
fprintf (stderr, "%s: %s: %s\n", progname, nbd_get_export_name (nbd),
|
|
||||||
nbd_get_error ());
|
|
||||||
- return;
|
|
||||||
+ return false;
|
|
||||||
}
|
|
||||||
size = nbd_get_size (nbd);
|
|
||||||
if (size == -1) {
|
|
||||||
@@ -599,12 +600,14 @@ list_one_export (struct nbd_handle *nbd, const char *desc,
|
|
||||||
free (content);
|
|
||||||
free (export_name);
|
|
||||||
free (export_desc);
|
|
||||||
+ return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void
|
|
||||||
+static bool
|
|
||||||
list_all_exports (struct nbd_handle *nbd1, const char *uri)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
+ bool list_okay = true;
|
|
||||||
|
|
||||||
if (export_list.size == 0 && json_output)
|
|
||||||
fprintf (fp, "\"exports\": []\n");
|
|
||||||
@@ -639,14 +642,16 @@ list_all_exports (struct nbd_handle *nbd1, const char *uri)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* List the metadata of this export. */
|
|
||||||
- list_one_export (nbd2, export_list.ptr[i].desc, i == 0,
|
|
||||||
- i + 1 == export_list.size);
|
|
||||||
+ if (!list_one_export (nbd2, export_list.ptr[i].desc, i == 0,
|
|
||||||
+ i + 1 == export_list.size))
|
|
||||||
+ list_okay = false;
|
|
||||||
|
|
||||||
if (probe_content) {
|
|
||||||
nbd_shutdown (nbd2, 0);
|
|
||||||
nbd_close (nbd2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ return list_okay;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
--
|
|
||||||
2.29.0.rc2
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user