|
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