]> www.infradead.org Git - mtd-utils.git/commit
ubi-tests: ubi_mkvol_request: Fully initialize 'struct ubi_mkvol_request req'
authorZhihao Cheng <chengzhihao1@huawei.com>
Fri, 14 Jun 2019 12:14:38 +0000 (20:14 +0800)
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>
Sun, 16 Jun 2019 10:27:10 +0000 (12:27 +0200)
commitc74c62420cbe1939c924e83f00e8838f148ae051
treeca3a6363ad10e20d4bbae02d41da68b098e2eae3
parente5530fea6a3e094e83303749c20622f0af12f21f
ubi-tests: ubi_mkvol_request: Fully initialize 'struct ubi_mkvol_request req'

'struct ubi_mkvol_request req' is one parameter of the function 'ubi_mkvol'
, this parameter will be passed to kernel and then be checked. It acts as a
local variable in many ubi tests, such as io_basic, io_read, mkvol_bad,
mkvol_basic, etc.

After commit c355aa465fce ("ubi: expose the volume CRC check skip flag") in
linux-stable, 'struct ubi_mkvol_request' supports a new configuration named
'flags', and req.flags will be checked in kernel function
'verify_mkvol_req'. Currently, there is no initialization for req.flags
before 'ubi_mkvol' invoked. So, req.flags can be an arbitrary number passed
to kernel. When we run ubi tests in qemu (x86_64, kernel image: 5.2.0-rc4),
the following errors may occur:

  ======================================================================
  ======================================================================
  ======================================================================
  Test on mtdram, fastmap enabled, VID header offset factor 1
  ======================================================================
  ======================================================================
  ======================================================================
  mtdram: 16MiB, PEB size 16KiB, fastmap enabled
  Running mkvol_basic /dev/ubi0
  Running mkvol_bad /dev/ubi0
  [mkvol_bad] test_mkvol():105: ubi_mkvol failed with error 22
  (Invalid argument), expected 28 (No space left on device)
  [mkvol_bad] test_mkvol():105: bytes = 16060929
  Error: mkvol_bad failed
  FAILURE

This patch fully initializes every 'struct ubi_mkvol_request req' passed to
'ubi_mkvol', which can fix the bug that the ubi test failed caused by that
req.flags was not initialized. And it is still compatible with old kernel
before kernel commit c355aa465fce ("ubi: expose the volume CRC check skip
flag").

----------------------------------------

Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
tests/ubi-tests/integ.c
tests/ubi-tests/io_basic.c
tests/ubi-tests/io_paral.c
tests/ubi-tests/io_read.c
tests/ubi-tests/io_update.c
tests/ubi-tests/mkvol_bad.c
tests/ubi-tests/mkvol_basic.c
tests/ubi-tests/mkvol_paral.c
tests/ubi-tests/rsvol.c
tests/ubi-tests/volrefcnt.c