diff options
author | Hongxu Jia <hongxu.jia@windriver.com> | 2019-04-12 05:10:38 -0400 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-05-22 00:31:48 +0100 |
commit | dfc74324c94e5c90f0f802b21cfc84fadebcff33 (patch) | |
tree | 9673a2c60f4263c343f1a6f0cab8e2063b9805ff /meta/classes | |
parent | cd7114274d44b3a8f409f1d54c4412e8db39d49e (diff) | |
download | poky-dfc74324c94e5c90f0f802b21cfc84fadebcff33.tar.gz |
image_types.bbclass: fix a race between the ubi and ubifs FSTYPES
The ubi, ubifs and multiubi FSTYPES calls `mkfs.ubifs' to create UBIFS
images.
In do_image_ubi, $vname is empty, the name of UBIFS image conflicts with
the one in do_image_ubifs, and it's a race risk.
[do_image_ubi]
mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ${mkubifs_args}
[do_image_ubi]
[do_image_ubifs]
mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}
[do_image_ubifs]
In do_image_multiubi, $vname is not empty, the UBIFS image name does
not conflict with others.
So do not call mkfs.ubifs in do_image_ubi and depend on do_image_ubifs
to create UBIFS images.
The fix does not affect do_image_multiubi which still call mkfs.ubifs to
create multiple UBIFS images and symlinks.
[YOCTO #13272]
(From OE-Core rev: 5e900f2c9319843c8905713dd3dd12a1ad435976)
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/image_types.bbclass | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass index 0a69542fcc..c7d9b8d96d 100644 --- a/meta/classes/image_types.bbclass +++ b/meta/classes/image_types.bbclass | |||
@@ -171,7 +171,9 @@ multiubi_mkfs() { | |||
171 | echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg | 171 | echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg |
172 | echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg | 172 | echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg |
173 | echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg | 173 | echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg |
174 | mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ${mkubifs_args} | 174 | if [ -n "$vname" ]; then |
175 | mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ${mkubifs_args} | ||
176 | fi | ||
175 | ubinize -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi ${ubinize_args} ubinize${vname}-${IMAGE_NAME}.cfg | 177 | ubinize -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi ${ubinize_args} ubinize${vname}-${IMAGE_NAME}.cfg |
176 | 178 | ||
177 | # Cleanup cfg file | 179 | # Cleanup cfg file |
@@ -205,6 +207,7 @@ IMAGE_CMD_multiubi () { | |||
205 | IMAGE_CMD_ubi () { | 207 | IMAGE_CMD_ubi () { |
206 | multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}" | 208 | multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}" |
207 | } | 209 | } |
210 | IMAGE_TYPEDEP_ubi = "ubifs" | ||
208 | 211 | ||
209 | IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}" | 212 | IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}" |
210 | 213 | ||