xtest 6007: close and re-open object
Update regression test 6007 to close and re-open the persistent object
after truncation and extension.
Reproducer for issue https://github.com/OP-TEE/optee_os/issues/2094.
Suggested-by: Kevin Peng <kevinp@marvell.com>
[jf: add close/open to test_file_hole(), too]
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
diff --git a/host/xtest/regression_6000.c b/host/xtest/regression_6000.c
index 2016311..ddbfb42 100644
--- a/host/xtest/regression_6000.c
+++ b/host/xtest/regression_6000.c
@@ -482,6 +482,29 @@
/* check buffer */
(void)ADBG_EXPECT_BUFFER(c, &data_00[5], 5, out, count);
+ /* close */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_close(&sess, obj)))
+ goto exit;
+
+ /* open */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_open(&sess, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_WRITE |
+ TEE_DATA_FLAG_ACCESS_READ |
+ TEE_DATA_FLAG_ACCESS_WRITE_META, &obj, storage_id)))
+ goto exit;
+
+ /* seek */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(
+ c, fs_seek(&sess, obj, 5, TEE_DATA_SEEK_SET)))
+ goto exit;
+
+ /* verify */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_read(&sess, obj, out, 10, &count)))
+ goto exit;
+
+ /* check buffer */
+ (void)ADBG_EXPECT_BUFFER(c, &data_00[5], 5, out, count);
+
/* clean */
if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_unlink(&sess, obj)))
goto exit;
@@ -531,6 +554,31 @@
expect[1] = data_00[31];
(void)ADBG_EXPECT_BUFFER(c, &expect[0], 10, out, count);
+ /* close */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_close(&sess, obj)))
+ goto exit;
+
+ /* open */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_open(&sess, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_WRITE |
+ TEE_DATA_FLAG_ACCESS_READ |
+ TEE_DATA_FLAG_ACCESS_WRITE_META, &obj, storage_id)))
+ goto exit;
+
+ /* seek */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(
+ c, fs_seek(&sess, obj, 30, TEE_DATA_SEEK_SET)))
+ goto exit;
+
+ /* verify */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_read(&sess, obj, out, 10, &count)))
+ goto exit;
+
+ /* check buffer */
+ expect[0] = data_00[30];
+ expect[1] = data_00[31];
+ (void)ADBG_EXPECT_BUFFER(c, &expect[0], 10, out, count);
+
/* clean */
if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_unlink(&sess, obj)))
goto exit;
@@ -588,6 +636,33 @@
expect[9] = data_00[3];
(void)ADBG_EXPECT_BUFFER(c, &expect[0], 10, out, count);
+ /* close */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_close(&sess, obj)))
+ goto exit;
+
+ /* open */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_open(&sess, file_01, sizeof(file_01),
+ TEE_DATA_FLAG_ACCESS_WRITE |
+ TEE_DATA_FLAG_ACCESS_READ |
+ TEE_DATA_FLAG_ACCESS_WRITE_META, &obj, storage_id)))
+ goto exit;
+
+ /* seek */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(
+ c, fs_seek(&sess, obj, 74, TEE_DATA_SEEK_SET)))
+ goto exit;
+
+ /* verify */
+ if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_read(&sess, obj, out, 10, &count)))
+ goto exit;
+
+ /* check buffer */
+ expect[6] = data_00[0];
+ expect[7] = data_00[1];
+ expect[8] = data_00[2];
+ expect[9] = data_00[3];
+ (void)ADBG_EXPECT_BUFFER(c, &expect[0], 10, out, count);
+
/* clean */
if (!ADBG_EXPECT_TEEC_SUCCESS(c, fs_unlink(&sess, obj)))
goto exit;