1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3# Copyright (C) 2018 Joe Lawrence <joe.lawrence@redhat.com> 4 5. $(dirname $0)/functions.sh 6 7MOD_TEST=test_klp_shadow_vars 8 9setup_config 10 11 12# TEST: basic shadow variable API 13# - load a module that exercises the shadow variable API 14 15echo -n "TEST: basic shadow variable API ... " 16dmesg -C 17 18load_mod $MOD_TEST 19unload_mod $MOD_TEST 20 21check_result "% modprobe $MOD_TEST 22$MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 23$MOD_TEST: got expected NULL result 24$MOD_TEST: shadow_ctor: PTR3 -> PTR2 25$MOD_TEST: klp_shadow_get_or_alloc(obj=PTR1, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR2 = PTR3 26$MOD_TEST: shadow_ctor: PTR6 -> PTR5 27$MOD_TEST: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 28$MOD_TEST: shadow_ctor: PTR8 -> PTR7 29$MOD_TEST: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 30$MOD_TEST: shadow_ctor: PTR11 -> PTR10 31$MOD_TEST: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 32$MOD_TEST: shadow_ctor: PTR13 -> PTR12 33$MOD_TEST: klp_shadow_get_or_alloc(obj=PTR14, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR12 = PTR13 34$MOD_TEST: shadow_ctor: PTR16 -> PTR15 35$MOD_TEST: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 36$MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 37$MOD_TEST: got expected PTR3 -> PTR2 result 38$MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 39$MOD_TEST: got expected PTR6 -> PTR5 result 40$MOD_TEST: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 41$MOD_TEST: got expected PTR8 -> PTR7 result 42$MOD_TEST: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 43$MOD_TEST: got expected PTR11 -> PTR10 result 44$MOD_TEST: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 45$MOD_TEST: got expected PTR13 -> PTR12 result 46$MOD_TEST: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 47$MOD_TEST: got expected PTR16 -> PTR15 result 48$MOD_TEST: klp_shadow_get_or_alloc(obj=PTR1, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR2 = PTR3 49$MOD_TEST: got expected PTR3 -> PTR2 result 50$MOD_TEST: klp_shadow_get_or_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 51$MOD_TEST: got expected PTR8 -> PTR7 result 52$MOD_TEST: klp_shadow_get_or_alloc(obj=PTR14, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR12 = PTR13 53$MOD_TEST: got expected PTR13 -> PTR12 result 54$MOD_TEST: shadow_dtor(obj=PTR1, shadow_data=PTR3) 55$MOD_TEST: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) 56$MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 57$MOD_TEST: got expected NULL result 58$MOD_TEST: shadow_dtor(obj=PTR9, shadow_data=PTR8) 59$MOD_TEST: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) 60$MOD_TEST: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 61$MOD_TEST: got expected NULL result 62$MOD_TEST: shadow_dtor(obj=PTR14, shadow_data=PTR13) 63$MOD_TEST: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) 64$MOD_TEST: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 65$MOD_TEST: got expected NULL result 66$MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 67$MOD_TEST: got expected PTR6 -> PTR5 result 68$MOD_TEST: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 69$MOD_TEST: got expected PTR11 -> PTR10 result 70$MOD_TEST: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 71$MOD_TEST: got expected PTR16 -> PTR15 result 72$MOD_TEST: klp_shadow_free_all(id=0x1235, dtor=PTR0) 73$MOD_TEST: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 74$MOD_TEST: got expected NULL result 75$MOD_TEST: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 76$MOD_TEST: got expected NULL result 77$MOD_TEST: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 78$MOD_TEST: got expected NULL result 79% rmmod $MOD_TEST" 80 81exit 0 82