|
25 | 25 |
|
26 | 26 | # shellcheck disable=SC1090,SC1091 |
27 | 27 | . "$TOOLS/functestlib.sh" |
28 | | - |
| 28 | + |
29 | 29 | TESTNAME="shmbridge" |
30 | | -test_path=$(find_test_case_by_name "$TESTNAME") || { |
31 | | - log_fail "$TESTNAME : Test directory not found." |
32 | | - echo "$TESTNAME FAIL" > "./$TESTNAME.res" |
33 | | - exit 1 |
34 | | -} |
35 | | - |
| 30 | +test_path=$(find_test_case_by_name "$TESTNAME") |
36 | 31 | cd "$test_path" || exit 1 |
37 | 32 | res_file="./$TESTNAME.res" |
38 | | -rm -f "$res_file" |
39 | | - |
40 | | -log_info "--------------------------------------------------------------------------" |
| 33 | + |
| 34 | +log_info "-----------------------------------------------------------------------------------------" |
41 | 35 | log_info "-------------------Starting $TESTNAME Testcase----------------------------" |
42 | | - |
43 | | -check_dependencies fscryptctl mkfs.ext4 mount dd grep cat |
44 | | - |
45 | | -MOUNT_POINT="/mnt/overlay" |
46 | | -PARTITION="/dev/disk/by-partlabel/xbl_ramdump_a" |
47 | | -KEY_FILE="$MOUNT_POINT/stdkey" |
48 | | -TEST_DIR="$MOUNT_POINT/test" |
49 | | -TEST_FILE="$TEST_DIR/txt" |
50 | | - |
51 | | -log_info "Creating mount point at $MOUNT_POINT" |
52 | | -mkdir -p "$MOUNT_POINT" |
53 | | - |
54 | | -if [ ! -e "$PARTITION" ]; then |
55 | | - log_fail "Partition $PARTITION not found" |
56 | | - echo "$TESTNAME FAIL" > "$res_file" |
57 | | - exit 1 |
58 | | -fi |
59 | | - |
60 | | -if ! mount | grep -q "$PARTITION"; then |
61 | | - log_info "Formatting $PARTITION with ext4 (encrypt, stable_inodes)" |
62 | | - mkfs.ext4 -F -O encrypt,stable_inodes "$PARTITION" |
63 | | -else |
64 | | - log_warn "$PARTITION already mounted, skipping format" |
| 36 | +log_info "=== Test Initialization ===" |
| 37 | + |
| 38 | +log_info "Checking if required tools are available" |
| 39 | +check_dependencies zcat grep dmesg |
| 40 | + |
| 41 | +log_info "Checking kernel config for QCOM_SCM support..." |
| 42 | +if ! check_kernel_config "CONFIG_QCOM_SCM"; then |
| 43 | + log_skip "$TESTNAME : CONFIG_QCOM_SCM not enabled, skipping test" |
| 44 | + echo "$TESTNAME SKIP" > "$res_file" |
| 45 | + exit 0 |
65 | 46 | fi |
66 | | - |
67 | | -log_info "Mounting $PARTITION to $MOUNT_POINT with inlinecrypt" |
68 | | -if ! mount "$PARTITION" -o inlinecrypt "$MOUNT_POINT"; then |
69 | | - log_fail "Failed to mount $PARTITION" |
| 47 | + |
| 48 | +log_info "Checking dmesg logs for qcom_scm entries..." |
| 49 | +dmesg_output=$(dmesg | grep qcom_scm) |
| 50 | + |
| 51 | +if [ -z "$dmesg_output" ]; then |
| 52 | + log_fail "$TESTNAME : No qcom_scm entries found in dmesg" |
70 | 53 | echo "$TESTNAME FAIL" > "$res_file" |
71 | 54 | exit 1 |
72 | 55 | fi |
73 | | - |
74 | | -log_info "Generating 64-byte encryption key" |
75 | | -dd if=/dev/urandom bs=1 count=64 of="$KEY_FILE" status=none |
76 | | - |
77 | | -log_info "Adding encryption key with fscryptctl" |
78 | | -identifier=$(fscryptctl add_key "$MOUNT_POINT" < "$KEY_FILE") || { |
79 | | - log_fail "Failed to add key to $MOUNT_POINT" |
80 | | - echo "$TESTNAME FAIL" > "$res_file" |
81 | | - umount "$MOUNT_POINT" |
82 | | - exit 1 |
83 | | -} |
84 | | - |
85 | | -mkdir -p "$TEST_DIR" |
86 | | -log_info "Applying encryption policy to $TEST_DIR" |
87 | | -fscryptctl set_policy --iv-ino-lblk-64 "$identifier" "$TEST_DIR" || { |
88 | | - log_fail "Failed to set policy on $TEST_DIR" |
89 | | - echo "$TESTNAME FAIL" > "$res_file" |
90 | | - umount "$MOUNT_POINT" |
91 | | - exit 1 |
92 | | -} |
93 | | - |
94 | | -log_info "Verifying encryption policy" |
95 | | -fscryptctl get_policy "$TEST_DIR" |
96 | | - |
97 | | -log_info "Writing and reading test file" |
98 | | -echo "hello" > "$TEST_FILE" |
99 | | -sync |
100 | | -echo 3 > /proc/sys/vm/drop_caches |
101 | | - |
102 | | -if grep -q "hello" "$TEST_FILE"; then |
103 | | - log_pass "$TESTNAME : Test Passed" |
104 | | - echo "$TESTNAME PASS" > "$res_file" |
105 | | -else |
106 | | - log_fail "$TESTNAME : Test Failed to verify data" |
| 56 | + |
| 57 | +echo "$dmesg_output" | while read -r line; do |
| 58 | + log_info "$line" |
| 59 | +done |
| 60 | + |
| 61 | +if echo "$dmesg_output" | grep -qi "probe failure"; then |
| 62 | + log_fail "$TESTNAME : Probe failure detected in dmesg logs" |
107 | 63 | echo "$TESTNAME FAIL" > "$res_file" |
108 | | - umount "$MOUNT_POINT" |
109 | 64 | exit 1 |
110 | 65 | fi |
111 | | - |
112 | | -umount "$MOUNT_POINT" |
113 | | -log_info "Unmounted $MOUNT_POINT and cleaned up." |
114 | | - |
| 66 | + |
| 67 | +log_pass "$TESTNAME : Test Passed (QCOM_SCM present and no probe failures)" |
| 68 | +echo "$TESTNAME PASS" > "$res_file" |
| 69 | + |
115 | 70 | log_info "-------------------Completed $TESTNAME Testcase----------------------------" |
116 | 71 | exit 0 |
117 | | - |
0 commit comments