Merge ~paelzer/ubuntu/+source/qemu:lp-1921468-1887535-1921665-GROOVY into ubuntu/+source/qemu:ubuntu/groovy-devel
- Git
- lp:~paelzer/ubuntu/+source/qemu
- lp-1921468-1887535-1921665-GROOVY
- Merge into ubuntu/groovy-devel
Status: | Merged | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Christian Ehrhardt | ||||||||||||
Approved revision: | 9d1e5c0035e2636a6056d0af886be6272e732b0f | ||||||||||||
Merge reported by: | Christian Ehrhardt | ||||||||||||
Merged at revision: | 9d1e5c0035e2636a6056d0af886be6272e732b0f | ||||||||||||
Proposed branch: | ~paelzer/ubuntu/+source/qemu:lp-1921468-1887535-1921665-GROOVY | ||||||||||||
Merge into: | ubuntu/+source/qemu:ubuntu/groovy-devel | ||||||||||||
Diff against target: |
586 lines (+529/-0) 8 files modified
debian/changelog (+14/-0) debian/patches/series (+5/-0) debian/patches/ubuntu/lp-1887535-configure-replace-enable-disable-git-update-with-wit.patch (+276/-0) debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-break-loop-if-a-null-block-number-i.patch (+40/-0) debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-fix-off-by-one-error.patch (+41/-0) debian/patches/ubuntu/lp-1921665-1-block-Require-aligned-image-size-to-avoid-assert.patch (+66/-0) debian/patches/ubuntu/lp-1921665-2-file-posix-Allow-byte-aligned-O_DIRECT-with-NFS.patch (+86/-0) debian/rules (+1/-0) |
||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Utkarsh Gupta (community) | Approve | ||
Canonical Server | Pending | ||
Canonical Server packageset reviewers | Pending | ||
git-ubuntu developers | Pending | ||
Review via email:
|
Commit message
Description of the change
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Christian Ehrhardt (paelzer) wrote : | # |
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Utkarsh Gupta (utkarsh) wrote : | # |
* Changelog:
- [✔] changelog entry correct version and targeted codename
- [✔] changelog entries correct
- [✔] update-maintainer has been run
* New Delta:
- [✔] patches match what was proposed upstream
- [✔] patches correctly included in debian/
- [✔] patches have correct DEP3 metadata
- [?] patches are all correct
A quick note here: I prefer to run `quilt refresh` after a patch is applied to refresh a patch, this removes the unnecessary noise from all the patches.
The first 3 patches seems to be partially refreshed (which is good!), but the last two (namely, lp-1921665-
* Build/Test:
- [✔] build is ok
- [✔] verified PPA package installs/uninstalls
- [✔] autopkgtest against the PPA package passes
* Extra:
- [?] lintian warnings
I get a bunch of lintian warning for spelling errors; cf: https:/
Another very, very trivial lintian comment is about trailing whitespaces in debian/changelog. You could run:
sed -i -e 's@[[:space:
to get rid of them but I guess worth sending this pointer to mjt maybe?
That said, this MP looks good and you can upload as-is but maybe worth considering my points above?
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Christian Ehrhardt (paelzer) wrote : | # |
Thanks for having a look.
The whitespace noise mostly is that way in Salsa, and that isn't a Delta I want to reapply every time. The warning is very low prio so I'll ignore that.
Similar for spelling errors, those mostly mark a package I work on and are intentional :-P
For the patch refreshes I agree, that is functional and is due to me picking up patches as suggested by others. But when I had a look at least focal was fine.
To ssh://git.
* [new tag] upload/
Uploading to ubuntu (via ftp to upload.ubuntu.com):
Uploading qemu_5.
Uploading qemu_5.
Uploading qemu_5.
Uploading qemu_5.
Successfully uploaded packages.
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Christian Ehrhardt (paelzer) wrote : | # |
merged - closing MP
Preview Diff
1 | diff --git a/debian/changelog b/debian/changelog |
2 | index 996d8d8..6463c36 100644 |
3 | --- a/debian/changelog |
4 | +++ b/debian/changelog |
5 | @@ -1,3 +1,17 @@ |
6 | +qemu (1:5.0-5ubuntu9.7) groovy; urgency=medium |
7 | + |
8 | + * d/p/u/lp-1921468-*: fix issues handling boot menu index on s390x |
9 | + (LP: #1921468) |
10 | + * d/p/u/lp-1887535-configure-replace-enable-disable-git-update-with-wit.patch, |
11 | + d/rules: Backport --with-git-submodules param so building from git repo |
12 | + doesn't fail (LP: #1887535) |
13 | + * Fix byte aligned writes when writing to image stored on NFS |
14 | + server, as they aren't required to be 4kib aligned. (LP: #1921665) |
15 | + - d/p/u/lp-1921665-1-block-Require-aligned-image-size-to-avoid-assert.patch |
16 | + - d/p/u/lp-1921665-2-file-posix-Allow-byte-aligned-O_DIRECT-with-NFS.patch |
17 | + |
18 | + -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Fri, 26 Mar 2021 10:36:31 +0100 |
19 | + |
20 | qemu (1:5.0-5ubuntu9.6) groovy-security; urgency=medium |
21 | |
22 | * SECURITY REGRESSION: fix multiple regressions caused by CVE-2020-13754 |
23 | diff --git a/debian/patches/series b/debian/patches/series |
24 | index 905d272..e0e42b7 100644 |
25 | --- a/debian/patches/series |
26 | +++ b/debian/patches/series |
27 | @@ -117,3 +117,8 @@ ubuntu/CVE-2020-13754-4.patch |
28 | ubuntu/CVE-2020-13754-5.patch |
29 | ubuntu/CVE-2020-13754-6.patch |
30 | ubuntu/CVE-2020-13754-7.patch |
31 | +ubuntu/lp-1921468-pc-bios-s390-ccw-fix-off-by-one-error.patch |
32 | +ubuntu/lp-1921468-pc-bios-s390-ccw-break-loop-if-a-null-block-number-i.patch |
33 | +ubuntu/lp-1887535-configure-replace-enable-disable-git-update-with-wit.patch |
34 | +ubuntu/lp-1921665-1-block-Require-aligned-image-size-to-avoid-assert.patch |
35 | +ubuntu/lp-1921665-2-file-posix-Allow-byte-aligned-O_DIRECT-with-NFS.patch |
36 | diff --git a/debian/patches/ubuntu/lp-1887535-configure-replace-enable-disable-git-update-with-wit.patch b/debian/patches/ubuntu/lp-1887535-configure-replace-enable-disable-git-update-with-wit.patch |
37 | new file mode 100644 |
38 | index 0000000..f9fd317 |
39 | --- /dev/null |
40 | +++ b/debian/patches/ubuntu/lp-1887535-configure-replace-enable-disable-git-update-with-wit.patch |
41 | @@ -0,0 +1,276 @@ |
42 | +From 7d7dbf9dc15be6e1465c756c2c5ae7f1ab104fc8 Mon Sep 17 00:00:00 2001 |
43 | +From: Dan Streetman <ddstreet@canonical.com> |
44 | +Date: Tue, 19 Jan 2021 12:20:46 -0500 |
45 | +Subject: [PATCH] configure: replace --enable/disable-git-update with |
46 | + --with-git-submodules |
47 | +MIME-Version: 1.0 |
48 | +Content-Type: text/plain; charset=UTF-8 |
49 | +Content-Transfer-Encoding: 8bit |
50 | +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1887535 |
51 | +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=7d7dbf9dc15be6e1465c756c2c5ae7f1ab104fc8 |
52 | + |
53 | +Replace the --enable-git-update and --disable-git-update configure params |
54 | +with the param --with-git-submodules=(update|validate|ignore) to |
55 | +allow 3 options for building from a git repo. |
56 | + |
57 | +This is needed because downstream packagers, e.g. Debian, Ubuntu, etc, |
58 | +also keep the source code in git, but do not want to enable the |
59 | +'git_update' mode; with the current code, that's not possible even |
60 | +if the downstream package specifies --disable-git-update. |
61 | + |
62 | +The previous parameters are deprecated but still available; the |
63 | +--enable-git-update parameter maps to --with-git-submodules=update and |
64 | +--disable-git-update parameter maps to --with-git-submodules=validate. |
65 | + |
66 | +The configure script behavior is slightly modified, where previously |
67 | +the dtc, capstone, and slirp submodules were not validated when |
68 | +--disable-git-update was specified (but were updated with git-update |
69 | +enabled), now they are validated when using --with-git-submodules=validate |
70 | +and are only ignored when using --with-git-submodules=ignore. |
71 | + |
72 | +Signed-off-by: Dan Streetman <ddstreet@canonical.com> |
73 | +Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> |
74 | +--- |
75 | + Makefile | 24 ++----------------- |
76 | + configure | 51 ++++++++++++++++++++++++++++++---------- |
77 | + scripts/git-submodule.sh | 34 ++++++++++++++++++++------- |
78 | + 3 files changed, 66 insertions(+), 43 deletions(-) |
79 | + |
80 | +--- a/Makefile |
81 | ++++ b/Makefile |
82 | +@@ -21,33 +21,11 @@ ifneq ($(wildcard config-host.mak),) |
83 | + all: |
84 | + include config-host.mak |
85 | + |
86 | +-git-submodule-update: |
87 | +- |
88 | + .PHONY: git-submodule-update |
89 | +- |
90 | +-git_module_status := $(shell \ |
91 | +- cd '$(SRC_PATH)' && \ |
92 | +- GIT="$(GIT)" ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \ |
93 | +- echo $$?; \ |
94 | +-) |
95 | +- |
96 | +-ifeq (1,$(git_module_status)) |
97 | +-ifeq (no,$(GIT_UPDATE)) |
98 | +-git-submodule-update: |
99 | +- $(call quiet-command, \ |
100 | +- echo && \ |
101 | +- echo "GIT submodule checkout is out of date. Please run" && \ |
102 | +- echo " scripts/git-submodule.sh update $(GIT_SUBMODULES)" && \ |
103 | +- echo "from the source directory checkout $(SRC_PATH)" && \ |
104 | +- echo && \ |
105 | +- exit 1) |
106 | +-else |
107 | + git-submodule-update: |
108 | + $(call quiet-command, \ |
109 | +- (cd $(SRC_PATH) && GIT="$(GIT)" ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \ |
110 | +- "GIT","$(GIT_SUBMODULES)") |
111 | +-endif |
112 | +-endif |
113 | ++ (GIT="$(GIT)" "$(SRC_PATH)/scripts/git-submodule.sh" $(GIT_SUBMODULES_ACTION) $(GIT_SUBMODULES)), \ |
114 | ++ "GIT","$(GIT_SUBMODULES)") |
115 | + |
116 | + .git-submodule-status: git-submodule-update config-host.mak |
117 | + |
118 | +--- a/configure |
119 | ++++ b/configure |
120 | +@@ -307,12 +307,12 @@ gdb_bin=$(command -v "gdb") |
121 | + |
122 | + if test -e "$source_path/.git" |
123 | + then |
124 | +- git_update=yes |
125 | ++ git_submodules_action="update" |
126 | + git_submodules="ui/keycodemapdb" |
127 | + git_submodules="$git_submodules tests/fp/berkeley-testfloat-3" |
128 | + git_submodules="$git_submodules tests/fp/berkeley-softfloat-3" |
129 | + else |
130 | +- git_update=no |
131 | ++ git_submodules_action="ignore" |
132 | + git_submodules="" |
133 | + |
134 | + if ! test -f "$source_path/ui/keycodemapdb/README" |
135 | +@@ -1571,9 +1571,16 @@ for opt do |
136 | + ;; |
137 | + --with-git=*) git="$optarg" |
138 | + ;; |
139 | +- --enable-git-update) git_update=yes |
140 | ++ --enable-git-update) |
141 | ++ git_submodules_action="update" |
142 | ++ echo "--enable-git-update deprecated, use --with-git-submodules=update" |
143 | ++ ;; |
144 | ++ --disable-git-update) |
145 | ++ git_submodules_action="validate" |
146 | ++ echo "--disable-git-update deprecated, use --with-git-submodules=validate" |
147 | + ;; |
148 | +- --disable-git-update) git_update=no |
149 | ++ --with-git-submodules=*) |
150 | ++ git_submodules_action="$optarg" |
151 | + ;; |
152 | + --enable-debug-mutex) debug_mutex=yes |
153 | + ;; |
154 | +@@ -1609,6 +1616,21 @@ for opt do |
155 | + esac |
156 | + done |
157 | + |
158 | ++case $git_submodules_action in |
159 | ++ update|validate) |
160 | ++ if test ! -e "$source_path/.git"; then |
161 | ++ echo "ERROR: cannot $git_submodules_action git submodules without .git" |
162 | ++ exit 1 |
163 | ++ fi |
164 | ++ ;; |
165 | ++ ignore) |
166 | ++ ;; |
167 | ++ *) |
168 | ++ echo "ERROR: invalid --with-git-submodules= value '$git_submodules_action'" |
169 | ++ exit 1 |
170 | ++ ;; |
171 | ++esac |
172 | ++ |
173 | + case "$cpu" in |
174 | + ppc) |
175 | + CPU_CFLAGS="-m32" |
176 | +@@ -1736,6 +1758,9 @@ Advanced options (experts only): |
177 | + --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build] |
178 | + --smbd=SMBD use specified smbd [$smbd] |
179 | + --with-git=GIT use specified git [$git] |
180 | ++ --with-git-submodules=update update git submodules (default if .git dir exists) |
181 | ++ --with-git-submodules=validate fail if git submodules are not up to date |
182 | ++ --with-git-submodules=ignore do not update or check git submodules (default if no .git dir) |
183 | + --static enable static build [$static] |
184 | + --mandir=PATH install man pages in PATH |
185 | + --datadir=PATH install firmware in PATH$confsuffix |
186 | +@@ -1962,7 +1987,7 @@ fi |
187 | + # Consult white-list to determine whether to enable werror |
188 | + # by default. Only enable by default for git builds |
189 | + if test -z "$werror" ; then |
190 | +- if test -e "$source_path/.git" && \ |
191 | ++ if test $git_submodules_action != 'ignore' && \ |
192 | + { test "$linux" = "yes" || test "$mingw32" = "yes"; }; then |
193 | + werror="yes" |
194 | + else |
195 | +@@ -4273,10 +4298,10 @@ EOF |
196 | + fdt=system |
197 | + else |
198 | + # have GIT checkout, so activate dtc submodule |
199 | +- if test -e "${source_path}/.git" ; then |
200 | ++ if test $git_submodules_action != 'ignore' ; then |
201 | + git_submodules="${git_submodules} dtc" |
202 | + fi |
203 | +- if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then |
204 | ++ if test -d "${source_path}/dtc/libfdt" || test $git_submodules_action != 'ignore' ; then |
205 | + fdt=git |
206 | + mkdir -p dtc |
207 | + if [ "$pwd_is_source_path" != "y" ] ; then |
208 | +@@ -5231,7 +5256,7 @@ case "$capstone" in |
209 | + "" | yes) |
210 | + if $pkg_config capstone; then |
211 | + capstone=system |
212 | +- elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then |
213 | ++ elif test $git_submodules_action != 'ignore' ; then |
214 | + capstone=git |
215 | + elif test -e "${source_path}/capstone/Makefile" ; then |
216 | + capstone=internal |
217 | +@@ -6206,7 +6231,7 @@ case "$slirp" in |
218 | + "" | yes) |
219 | + if $pkg_config slirp; then |
220 | + slirp=system |
221 | +- elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then |
222 | ++ elif test $git_submodules_action != 'ignore' ; then |
223 | + slirp=git |
224 | + elif test -e "${source_path}/slirp/Makefile" ; then |
225 | + slirp=internal |
226 | +@@ -6791,7 +6816,7 @@ echo "libs_cpu=$libs_cpu" >> $config_hos |
227 | + echo "libs_softmmu=$libs_softmmu" >> $config_host_mak |
228 | + echo "GIT=$git" >> $config_host_mak |
229 | + echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak |
230 | +-echo "GIT_UPDATE=$git_update" >> $config_host_mak |
231 | ++echo "GIT_SUBMODULES_ACTION=$git_submodules_action" >> $config_host_mak |
232 | + |
233 | + echo "ARCH=$ARCH" >> $config_host_mak |
234 | + |
235 | +--- a/scripts/git-submodule.sh |
236 | ++++ b/scripts/git-submodule.sh |
237 | +@@ -9,9 +9,14 @@ command=$1 |
238 | + shift |
239 | + maybe_modules="$@" |
240 | + |
241 | ++# if --with-git-submodules=ignore, do nothing |
242 | ++test "$command" = "ignore" && exit 0 |
243 | ++ |
244 | + test -z "$GIT" && GIT=git |
245 | + |
246 | +-error() { |
247 | ++cd "$(dirname "$0")/.." |
248 | ++ |
249 | ++update_error() { |
250 | + echo "$0: $*" |
251 | + echo |
252 | + echo "Unable to automatically checkout GIT submodules '$modules'." |
253 | +@@ -24,7 +29,7 @@ error() { |
254 | + echo "Alternatively you may disable automatic GIT submodule checkout" |
255 | + echo "with:" |
256 | + echo |
257 | +- echo " $ ./configure --disable-git-update" |
258 | ++ echo " $ ./configure --with-git-submodules=validate" |
259 | + echo |
260 | + echo "and then manually update submodules prior to running make, with:" |
261 | + echo |
262 | +@@ -33,6 +38,19 @@ error() { |
263 | + exit 1 |
264 | + } |
265 | + |
266 | ++validate_error() { |
267 | ++ if test "$1" = "validate"; then |
268 | ++ echo "GIT submodules checkout is out of date, and submodules" |
269 | ++ echo "configured for validate only. Please run" |
270 | ++ echo " scripts/git-submodule.sh update $maybe_modules" |
271 | ++ echo "from the source directory or call configure with" |
272 | ++ echo " --with-git-submodules=update" |
273 | ++ echo "To disable GIT submodules validation, use" |
274 | ++ echo " --with-git-submodules=ignore" |
275 | ++ fi |
276 | ++ exit 1 |
277 | ++} |
278 | ++ |
279 | + modules="" |
280 | + for m in $maybe_modules |
281 | + do |
282 | +@@ -52,18 +70,18 @@ then |
283 | + fi |
284 | + |
285 | + case "$command" in |
286 | +-status) |
287 | ++status|validate) |
288 | + if test -z "$maybe_modules" |
289 | + then |
290 | +- test -s ${substat} && exit 1 || exit 0 |
291 | ++ test -s ${substat} && validate_error "$command" || exit 0 |
292 | + fi |
293 | + |
294 | +- test -f "$substat" || exit 1 |
295 | ++ test -f "$substat" || validate_error "$command" |
296 | + for module in $modules; do |
297 | + CURSTATUS=$($GIT submodule status $module) |
298 | + OLDSTATUS=$(cat $substat | grep $module) |
299 | + if test "$CURSTATUS" != "$OLDSTATUS"; then |
300 | +- exit 1 |
301 | ++ validate_error "$command" |
302 | + fi |
303 | + done |
304 | + exit 0 |
305 | +@@ -76,10 +94,10 @@ update) |
306 | + fi |
307 | + |
308 | + $GIT submodule update --init $modules 1>/dev/null |
309 | +- test $? -ne 0 && error "failed to update modules" |
310 | ++ test $? -ne 0 && update_error "failed to update modules" |
311 | + |
312 | + $GIT submodule status $modules > "${substat}" |
313 | +- test $? -ne 0 && error "failed to save git submodule status" >&2 |
314 | ++ test $? -ne 0 && update_error "failed to save git submodule status" >&2 |
315 | + ;; |
316 | + esac |
317 | + |
318 | diff --git a/debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-break-loop-if-a-null-block-number-i.patch b/debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-break-loop-if-a-null-block-number-i.patch |
319 | new file mode 100644 |
320 | index 0000000..1df9421 |
321 | --- /dev/null |
322 | +++ b/debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-break-loop-if-a-null-block-number-i.patch |
323 | @@ -0,0 +1,40 @@ |
324 | +From 468184ec9024f4f7b55247f70ec57554e8a500d7 Mon Sep 17 00:00:00 2001 |
325 | +From: Marc Hartmayer <mhartmay@linux.ibm.com> |
326 | +Date: Thu, 24 Sep 2020 10:59:25 +0200 |
327 | +Subject: [PATCH] pc-bios/s390-ccw: break loop if a null block number is |
328 | + reached |
329 | + |
330 | +Break the loop if `cur_block_nr` is a null block number because this |
331 | +means that the end of chunk is reached. In this case we will try to |
332 | +boot the default entry. |
333 | + |
334 | +Fixes: ba831b25262a ("s390-ccw: read stage2 boot loader data to find menu") |
335 | +Reviewed-by: Collin Walling <walling@linux.ibm.com> |
336 | +Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> |
337 | +Message-Id: <20200924085926.21709-3-mhartmay@linux.ibm.com> |
338 | +Signed-off-by: Thomas Huth <thuth@redhat.com> |
339 | + |
340 | +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=468184ec9024 |
341 | +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1921468 |
342 | +Last-Update: 2021-03-26 |
343 | + |
344 | +--- |
345 | + pc-bios/s390-ccw/bootmap.c | 2 +- |
346 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
347 | + |
348 | +diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c |
349 | +index 767bb612db..942fba3fa7 100644 |
350 | +--- a/pc-bios/s390-ccw/bootmap.c |
351 | ++++ b/pc-bios/s390-ccw/bootmap.c |
352 | +@@ -192,7 +192,7 @@ static int eckd_get_boot_menu_index(block_number_t s1b_block_nr) |
353 | + for (i = 0; i < STAGE2_BLK_CNT_MAX; i++) { |
354 | + cur_block_nr = eckd_block_num(&s1b->seek[i].chs); |
355 | + |
356 | +- if (!cur_block_nr) { |
357 | ++ if (!cur_block_nr || is_null_block_number(cur_block_nr)) { |
358 | + break; |
359 | + } |
360 | + |
361 | +-- |
362 | +2.30.0 |
363 | + |
364 | diff --git a/debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-fix-off-by-one-error.patch b/debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-fix-off-by-one-error.patch |
365 | new file mode 100644 |
366 | index 0000000..b59bdad |
367 | --- /dev/null |
368 | +++ b/debian/patches/ubuntu/lp-1921468-pc-bios-s390-ccw-fix-off-by-one-error.patch |
369 | @@ -0,0 +1,41 @@ |
370 | +From 5f97ba0c74ccace0a4014460de9751ff3c6f454a Mon Sep 17 00:00:00 2001 |
371 | +From: Marc Hartmayer <mhartmay@linux.ibm.com> |
372 | +Date: Thu, 24 Sep 2020 10:59:24 +0200 |
373 | +Subject: [PATCH] pc-bios/s390-ccw: fix off-by-one error |
374 | + |
375 | +This error takes effect when the magic value "zIPL" is located at the |
376 | +end of a block. For example if s2_cur_blk = 0x7fe18000 and the magic |
377 | +value "zIPL" is located at 0x7fe18ffc - 0x7fe18fff. |
378 | + |
379 | +Fixes: ba831b25262a ("s390-ccw: read stage2 boot loader data to find menu") |
380 | +Reviewed-by: Collin Walling <walling@linux.ibm.com> |
381 | +Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> |
382 | +Message-Id: <20200924085926.21709-2-mhartmay@linux.ibm.com> |
383 | +Reviewed-by: Thomas Huth <thuth@redhat.com> |
384 | +[thuth: Use "<= ... - 4" instead of "< ... - 3"] |
385 | +Signed-off-by: Thomas Huth <thuth@redhat.com> |
386 | + |
387 | +Origin: upstream, https://git.qemu.org/?p=qemu.git;a=commit;h=5f97ba0c74cc |
388 | +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1921468 |
389 | +Last-Update: 2021-03-26 |
390 | + |
391 | +--- |
392 | + pc-bios/s390-ccw/bootmap.c | 2 +- |
393 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
394 | + |
395 | +diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c |
396 | +index 0ef6b851f3..767bb612db 100644 |
397 | +--- a/pc-bios/s390-ccw/bootmap.c |
398 | ++++ b/pc-bios/s390-ccw/bootmap.c |
399 | +@@ -163,7 +163,7 @@ static bool find_zipl_boot_menu_banner(int *offset) |
400 | + int i; |
401 | + |
402 | + /* Menu banner starts with "zIPL" */ |
403 | +- for (i = 0; i < virtio_get_block_size() - 4; i++) { |
404 | ++ for (i = 0; i <= virtio_get_block_size() - 4; i++) { |
405 | + if (magic_match(s2_cur_blk + i, ZIPL_MAGIC_EBCDIC)) { |
406 | + *offset = i; |
407 | + return true; |
408 | +-- |
409 | +2.30.0 |
410 | + |
411 | diff --git a/debian/patches/ubuntu/lp-1921665-1-block-Require-aligned-image-size-to-avoid-assert.patch b/debian/patches/ubuntu/lp-1921665-1-block-Require-aligned-image-size-to-avoid-assert.patch |
412 | new file mode 100644 |
413 | index 0000000..a4bdd17 |
414 | --- /dev/null |
415 | +++ b/debian/patches/ubuntu/lp-1921665-1-block-Require-aligned-image-size-to-avoid-assert.patch |
416 | @@ -0,0 +1,66 @@ |
417 | +From 9c60a5d1978e6dcf85c0e01b50e6f7f54ca09104 Mon Sep 17 00:00:00 2001 |
418 | +From: Kevin Wolf <kwolf@redhat.com> |
419 | +Date: Thu, 16 Jul 2020 16:26:00 +0200 |
420 | +Subject: [PATCH] block: Require aligned image size to avoid assertion failure |
421 | + |
422 | +Unaligned requests will automatically be aligned to bl.request_alignment |
423 | +and we can't extend write requests to access space beyond the end of the |
424 | +image without resizing the image, so if we have the WRITE permission, |
425 | +but not the RESIZE one, it's required that the image size is aligned. |
426 | + |
427 | +Failing to meet this requirement could cause assertion failures like |
428 | +this if RESIZE permissions weren't requested: |
429 | + |
430 | +qemu-img: block/io.c:1910: bdrv_co_write_req_prepare: Assertion `end_sector <= bs->total_sectors || child->perm & BLK_PERM_RESIZE' failed. |
431 | + |
432 | +This was e.g. triggered by qemu-img converting to a target image with 4k |
433 | +request alignment when the image was only aligned to 512 bytes, but not |
434 | +to 4k. |
435 | + |
436 | +Turn this into a graceful error in bdrv_check_perm() so that WRITE |
437 | +without RESIZE can only be taken if the image size is aligned. If a user |
438 | +holds both permissions and drops only RESIZE, the function will return |
439 | +an error, but bdrv_child_try_set_perm() will ignore the failure silently |
440 | +if permissions are only requested to be relaxed and just keep both |
441 | +permissions while returning success. |
442 | + |
443 | +Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
444 | +Message-Id: <20200716142601.111237-2-kwolf@redhat.com> |
445 | +Reviewed-by: Max Reitz <mreitz@redhat.com> |
446 | +Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
447 | + |
448 | +Origin: backport, https://git.qemu.org/?p=qemu.git;a=commit;h=9c60a5d1978e6dcf85c0e01b50e6f7f54ca09104 |
449 | +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1921665 |
450 | +Last-Update: 2021-03-29 |
451 | + |
452 | +--- |
453 | + block.c | 16 ++++++++++++++++ |
454 | + 1 file changed, 16 insertions(+) |
455 | + |
456 | +Index: qemu-5.0/block.c |
457 | +=================================================================== |
458 | +--- qemu-5.0.orig/block.c 2021-03-29 16:46:50.775130508 +1300 |
459 | ++++ qemu-5.0/block.c 2021-03-29 16:46:50.771130437 +1300 |
460 | +@@ -2031,6 +2031,22 @@ |
461 | + return -EPERM; |
462 | + } |
463 | + |
464 | ++ /* |
465 | ++ * Unaligned requests will automatically be aligned to bl.request_alignment |
466 | ++ * and without RESIZE we can't extend requests to write to space beyond the |
467 | ++ * end of the image, so it's required that the image size is aligned. |
468 | ++ */ |
469 | ++ if ((cumulative_perms & (BLK_PERM_WRITE | BLK_PERM_WRITE_UNCHANGED)) && |
470 | ++ !(cumulative_perms & BLK_PERM_RESIZE)) |
471 | ++ { |
472 | ++ if ((bs->total_sectors * BDRV_SECTOR_SIZE) % bs->bl.request_alignment) { |
473 | ++ error_setg(errp, "Cannot get 'write' permission without 'resize': " |
474 | ++ "Image size is not a multiple of request " |
475 | ++ "alignment"); |
476 | ++ return -EPERM; |
477 | ++ } |
478 | ++ } |
479 | ++ |
480 | + /* Check this node */ |
481 | + if (!drv) { |
482 | + return 0; |
483 | diff --git a/debian/patches/ubuntu/lp-1921665-2-file-posix-Allow-byte-aligned-O_DIRECT-with-NFS.patch b/debian/patches/ubuntu/lp-1921665-2-file-posix-Allow-byte-aligned-O_DIRECT-with-NFS.patch |
484 | new file mode 100644 |
485 | index 0000000..069a1bb |
486 | --- /dev/null |
487 | +++ b/debian/patches/ubuntu/lp-1921665-2-file-posix-Allow-byte-aligned-O_DIRECT-with-NFS.patch |
488 | @@ -0,0 +1,86 @@ |
489 | +From 5edc85571e7b7269dce408735eba7507f18ac666 Mon Sep 17 00:00:00 2001 |
490 | +From: Kevin Wolf <kwolf@redhat.com> |
491 | +Date: Thu, 16 Jul 2020 16:26:01 +0200 |
492 | +Subject: [PATCH] file-posix: Allow byte-aligned O_DIRECT with NFS |
493 | + |
494 | +Since commit a6b257a08e3 ('file-posix: Handle undetectable alignment'), |
495 | +we assume that if we open a file with O_DIRECT and alignment probing |
496 | +returns 1, we just couldn't find out the real alignment requirement |
497 | +because some filesystems make the requirement only for allocated blocks. |
498 | +In this case, a safe default of 4k is used. |
499 | + |
500 | +This is too strict for NFS, which does actually allow byte-aligned |
501 | +requests even with O_DIRECT. Because we can't distinguish both cases |
502 | +with generic code, let's just look at the file system magic and disable |
503 | +s->needs_alignment for NFS. This way, O_DIRECT can still be used on NFS |
504 | +for images that are not aligned to 4k. |
505 | + |
506 | +Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
507 | +Reviewed-by: Eric Blake <eblake@redhat.com> |
508 | +Message-Id: <20200716142601.111237-3-kwolf@redhat.com> |
509 | +Reviewed-by: Max Reitz <mreitz@redhat.com> |
510 | +Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
511 | + |
512 | +Origin: backport, https://git.qemu.org/?p=qemu.git;a=commit;h=5edc85571e7b7269dce408735eba7507f18ac666 |
513 | +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1921665 |
514 | +Last-Update: 2021-03-29 |
515 | + |
516 | +--- |
517 | + block/file-posix.c | 26 +++++++++++++++++++++++++- |
518 | + 1 file changed, 25 insertions(+), 1 deletion(-) |
519 | + |
520 | +Index: qemu-5.0/block/file-posix.c |
521 | +=================================================================== |
522 | +--- qemu-5.0.orig/block/file-posix.c 2021-03-29 16:47:07.303430132 +1300 |
523 | ++++ qemu-5.0/block/file-posix.c 2021-03-29 16:47:07.303430132 +1300 |
524 | +@@ -61,10 +61,12 @@ |
525 | + #include <sys/ioctl.h> |
526 | + #include <sys/param.h> |
527 | + #include <sys/syscall.h> |
528 | ++#include <sys/vfs.h> |
529 | + #include <linux/cdrom.h> |
530 | + #include <linux/fd.h> |
531 | + #include <linux/fs.h> |
532 | + #include <linux/hdreg.h> |
533 | ++#include <linux/magic.h> |
534 | + #include <scsi/sg.h> |
535 | + #ifdef __s390__ |
536 | + #include <asm/dasd.h> |
537 | +@@ -299,6 +301,28 @@ |
538 | + #endif |
539 | + } |
540 | + |
541 | ++/* |
542 | ++ * Returns true if no alignment restrictions are necessary even for files |
543 | ++ * opened with O_DIRECT. |
544 | ++ * |
545 | ++ * raw_probe_alignment() probes the required alignment and assume that 1 means |
546 | ++ * the probing failed, so it falls back to a safe default of 4k. This can be |
547 | ++ * avoided if we know that byte alignment is okay for the file. |
548 | ++ */ |
549 | ++static bool dio_byte_aligned(int fd) |
550 | ++{ |
551 | ++#ifdef __linux__ |
552 | ++ struct statfs buf; |
553 | ++ int ret; |
554 | ++ |
555 | ++ ret = fstatfs(fd, &buf); |
556 | ++ if (ret == 0 && buf.f_type == NFS_SUPER_MAGIC) { |
557 | ++ return true; |
558 | ++ } |
559 | ++#endif |
560 | ++ return false; |
561 | ++} |
562 | ++ |
563 | + /* Check if read is allowed with given memory buffer and length. |
564 | + * |
565 | + * This function is used to check O_DIRECT memory buffer and request alignment. |
566 | +@@ -630,7 +654,7 @@ |
567 | + |
568 | + s->has_discard = true; |
569 | + s->has_write_zeroes = true; |
570 | +- if ((bs->open_flags & BDRV_O_NOCACHE) != 0) { |
571 | ++ if ((bs->open_flags & BDRV_O_NOCACHE) != 0 && !dio_byte_aligned(s->fd)) { |
572 | + s->needs_alignment = true; |
573 | + } |
574 | + |
575 | diff --git a/debian/rules b/debian/rules |
576 | index 2d1fa4e..c794d8f 100755 |
577 | --- a/debian/rules |
578 | +++ b/debian/rules |
579 | @@ -59,6 +59,7 @@ common_configure_opts = \ |
580 | --disable-strip \ |
581 | --interp-prefix=/etc/qemu-binfmt/%M \ |
582 | --localstatedir=/var \ |
583 | + --with-git-submodules=ignore \ |
584 | |
585 | # Cross compiling support |
586 | ifneq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) |
PPA: https:/ /launchpad. net/~ci- train-ppa- service/ +archive/ ubuntu/ 4504/+packages