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