From d9ab7abe1e135a71685f0eb21a423c9db12e9580 Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Mon, 9 Feb 2015 14:07:31 -0200 Subject: [PATCH] testsuite: port detect-loop test to module-playground --- testsuite/module-playground/Makefile | 9 ++++++++ testsuite/module-playground/mod-loop-a.c | 25 +++++++++++++++++++++ testsuite/module-playground/mod-loop-b.c | 25 +++++++++++++++++++++ testsuite/module-playground/mod-loop-c.c | 25 +++++++++++++++++++++ testsuite/module-playground/mod-loop-d.c | 25 +++++++++++++++++++++ testsuite/module-playground/mod-loop-e.c | 25 +++++++++++++++++++++ testsuite/module-playground/mod-loop.h | 7 ++++++ testsuite/populate-modules.sh | 13 +++++++++-- .../test-depmod/detect-loop/correct.txt | 4 ++-- .../lib/modules/4.4.4/kernel/moduleA.ko | Bin 4713 -> 0 bytes .../lib/modules/4.4.4/kernel/moduleB.ko | Bin 4713 -> 0 bytes .../lib/modules/4.4.4/kernel/moduleC.ko | Bin 4713 -> 0 bytes .../lib/modules/4.4.4/kernel/moduleD.ko | Bin 4713 -> 0 bytes .../lib/modules/4.4.4/kernel/moduleE.ko | Bin 4713 -> 0 bytes .../detect-loop/lib/modules/4.4.4/modules.order | 5 ----- 15 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 testsuite/module-playground/mod-loop-a.c create mode 100644 testsuite/module-playground/mod-loop-b.c create mode 100644 testsuite/module-playground/mod-loop-c.c create mode 100644 testsuite/module-playground/mod-loop-d.c create mode 100644 testsuite/module-playground/mod-loop-e.c create mode 100644 testsuite/module-playground/mod-loop.h delete mode 100644 testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleA.ko delete mode 100644 testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleB.ko delete mode 100644 testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleC.ko delete mode 100644 testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleD.ko delete mode 100644 testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleE.ko diff --git a/testsuite/module-playground/Makefile b/testsuite/module-playground/Makefile index 88367cf..65d668e 100644 --- a/testsuite/module-playground/Makefile +++ b/testsuite/module-playground/Makefile @@ -9,6 +9,15 @@ obj-m += mod-foo-b.o obj-m += mod-foo-c.o obj-m += mod-foo.o +# mod-loop: create loops in dependencies: +# 1) mod-loop-a -> mod-loop-b -> mod-loop-c -> mod-loop-a +# 2) mod-loop-d -> mod-loop-e -> mod-loop-d +obj-m += mod-loop-a.o +obj-m += mod-loop-b.o +obj-m += mod-loop-c.o +obj-m += mod-loop-d.o +obj-m += mod-loop-e.o + else # normal makefile KDIR ?= /lib/modules/`uname -r`/build diff --git a/testsuite/module-playground/mod-loop-a.c b/testsuite/module-playground/mod-loop-a.c new file mode 100644 index 0000000..e1fd0ce --- /dev/null +++ b/testsuite/module-playground/mod-loop-a.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printA(); + printB(); + + return 0; +} +module_init(test_module_init); + +void printA(void) +{ + pr_warn("Hello, world A\n"); +} +EXPORT_SYMBOL(printA); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-b.c b/testsuite/module-playground/mod-loop-b.c new file mode 100644 index 0000000..f4490b7 --- /dev/null +++ b/testsuite/module-playground/mod-loop-b.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printB(); + printC(); + + return 0; +} +module_init(test_module_init); + +void printB(void) +{ + pr_warn("Hello, world B\n"); +} +EXPORT_SYMBOL(printB); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-c.c b/testsuite/module-playground/mod-loop-c.c new file mode 100644 index 0000000..0b90f7f --- /dev/null +++ b/testsuite/module-playground/mod-loop-c.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printC(); + printA(); + + return 0; +} +module_init(test_module_init); + +void printC(void) +{ + pr_warn("Hello, world C\n"); +} +EXPORT_SYMBOL(printC); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-d.c b/testsuite/module-playground/mod-loop-d.c new file mode 100644 index 0000000..9b52305 --- /dev/null +++ b/testsuite/module-playground/mod-loop-d.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printD(); + printE(); + + return 0; +} +module_init(test_module_init); + +void printD(void) +{ + pr_warn("Hello, world D\n"); +} +EXPORT_SYMBOL(printD); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop-e.c b/testsuite/module-playground/mod-loop-e.c new file mode 100644 index 0000000..a65acb2 --- /dev/null +++ b/testsuite/module-playground/mod-loop-e.c @@ -0,0 +1,25 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "mod-loop.h" + +static int __init test_module_init(void) +{ + printE(); + printD(); + + return 0; +} +module_init(test_module_init); + +void printE(void) +{ + pr_warn("Hello, world E\n"); +} +EXPORT_SYMBOL(printE); + +MODULE_AUTHOR("Lucas De Marchi "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-loop.h b/testsuite/module-playground/mod-loop.h new file mode 100644 index 0000000..3244ad9 --- /dev/null +++ b/testsuite/module-playground/mod-loop.h @@ -0,0 +1,7 @@ +#pragma once + +void printA(void); +void printB(void); +void printC(void); +void printD(void); +void printE(void); diff --git a/testsuite/populate-modules.sh b/testsuite/populate-modules.sh index 8f3f9dd..f41501d 100755 --- a/testsuite/populate-modules.sh +++ b/testsuite/populate-modules.sh @@ -11,6 +11,11 @@ map=( ["test-depmod/search-order-simple/lib/modules/4.4.4/updates/"]="mod-simple.ko" ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foo/"]="mod-simple.ko" ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foobar/"]="mod-simple.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko" + ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko" ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko" ["test-dependencies/lib/modules/4.0.20-kmod/kernel/"]="mod-foo-c.ko" ["test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko" @@ -23,6 +28,10 @@ for k in ${!map[@]}; do dst=${ROOTFS}/$k src=${MODULE_PLAYGROUND}/${map[$k]} - install -d $dst - install -t $dst $src + if test "${dst: -1}" = "/"; then + install -d $dst + install -t $dst $src + else + install -D $src $dst + fi done diff --git a/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt b/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt index 753e7c5..4eb26df 100644 --- a/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt +++ b/testsuite/rootfs-pristine/test-depmod/detect-loop/correct.txt @@ -1,3 +1,3 @@ depmod: ERROR: Found 5 modules in dependency cycles! -depmod: ERROR: Cycle detected: moduleE -> moduleD -> moduleE -depmod: ERROR: Cycle detected: moduleB -> moduleC -> moduleA -> moduleB +depmod: ERROR: Cycle detected: mod_loop_d -> mod_loop_e -> mod_loop_d +depmod: ERROR: Cycle detected: mod_loop_b -> mod_loop_c -> mod_loop_a -> mod_loop_b diff --git a/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleA.ko b/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleA.ko deleted file mode 100644 index c48a4185302c6c33129b3cc92f528b8d399f077a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4713 zcmeHL&2QX96rYXDcR)0Jm5&Mol}H5{tS21di~e@q6=| z_vPoA@z`(7E<8U}sW74nn_|5lp^PpE~{hD^guuE+Su^KYJFr*O@>0qeNED3}SM?>#UqX)$37ZqLnt4Qz*R$Rh@_EEmeCHg6C!H`Yf(6PfO`{sV$2(xesN~reQ9yY-N=M!Z4@r3 z`t2l6g9eIVkVk2fyKEx^&(r~f3=QAWj=l!Y^CjD2VVZT;5~)vGMU3WFjT7b zQx~4>+OO~2{)^V1U!s-o9~ViHZTbGreb_9@di>k!+C2Y{{U<6gH#2j{9fd7zzdOMX z@~S&t^(Ly%jC<}VEbL6gBFM#l*z|5tkLO#hB3NZSFS3$1NlMZ}@U^7PSKCqC7>gQ= zga3dRVzXfK%3=SA)@u-cS? z4q+KpQgfn(FT}aC|T6bO1W|UejJPl>!XutkNMg1uijZ&>G|ITkeUAq zVCa+T?}Ci*gZ0DbY{riP)8mtV2XG|PFMEUiH5jnPKds_p zTqNYTK_h>Jp8yQwk3-Yxoa$Vy{`4H)0zEx{@^M)S?-8K5S-8 z2!hT2U8P9(OZsO26b#tv*Rj;^F3=@=s^6!8+2VI7QR1M7RFl`<1rG_Rg6B+~Iy515 z5M;w0!{>A@`(uWmn&A%*p|<<~)^h(Nplja$4+=B$--CUg{p9Z53cM%a^x4V4Zm*?1jJ$Y58(Km zcCjnl<^Wb;NUJBkXC48(qSb*a;whZ^^uC&vc&|P**I$-+ul_Xu0Ji3{b``uW{S31j za3p$vy$y1u+mjs}W*e>iiSnHvLOi!GDwZmF?f(`37HkJyIW}JYUx=)nu^)zQ6F^Id%t>L z{kp!oU!9zNrms|DL?t%PIufCbHLmaQRmoP_ee51~0QfuMD#JB(YJq+A&TGrRTzFyY z_y@xmPapbj^P^Wrr=_~OUB-4{dTR??w>^FC2Z=0h_F}TbZ7*)3>RwbDX(shnBqm0k zX%R)q8#T zVVsMI2T5}rT-C*zi0j!{5v|6~inQskgu&P`?vC)0A$REM)3s^mxw&~~Efu1&SvZ7AA4#u(cFCPjsiZZ|PV5;tU!U`FN4Pk+kxCc$qnW=}}ad$*k_fP^msK z{`t>4_O<=nf7<-xGqm!&WfAA;hUe|yhs~m>$G@$v&GY}*f1(0Ywc4n21eUa;&Imuj zE6#Am9jP22cAXBuf#3B)C!~eP*`Ui z{QEo?>p7Em4(ms_DxwY56UJe#x>3{fR>`{(gEWvq(xmR^KE`yp%Q(!6FkVhzwkZP- zdct@mEBtz1Ge}x-?nOxeI9ReX9+ z*xsc1Bm6927=IWpoxV`QZuO`4@H*(}`IC<;ig}9w)tdEt8*rQb%PIiYOecy<*n7a( z?B7(1d)4ne*xTyYw$$%7&?SFVzmIo`-=;*V1wEvyymxMRNI(@lXX@0Z0jYz)8}1ms zr@ym5WB92W{_qfLd;V`M&p!yd=JS8AFf;#yIN2;@=Kmw;AV%Y!Ovrwo0M(K`wK&d* z*Hs(W7=Hka%-qq>j=kaB5M^wm#4?R5s($OrIj+MG!e!PE=cF}0CI+N^!W6Q+cW#sq z=I{_)e{L6qevxj0OP@n`NVHh*9s!>8X$+Y9IOdVizpk(QaiEX<04oXeI;?nX=(!Q6 z+_Y|4$3r@xc+}VHJC6VmHV;c~?_1eALa^?-=Z>GUbw;4ReNdIVDy;jlJt_LZD)&;E zsZH1DDl;{hdT@F>-5uqgU90FXGc~BX)gd38*}YVjU%)o}u3iw3GP}D6$M@-Zapc{;%2ME1?U>k>QC$SCxBBd%>}y%!l0#YU+$v+^)C3g62H3r z+a>ogV0Y*z;0CnuOga1x_@FjlcFvXRgOmp>7g??j%^n`);iSEAYUbI6NpI$)r~Xg4 zU10H}q9Tv&^6SA<{|?|BU!3#_peWEnBskB@pCX?6YXN|Es@KEPZw!o~AL_Nwa!i%Z W`Z9ctej0clBtaQ;J}p#^s`(2-8k)WU diff --git a/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleC.ko b/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleC.ko deleted file mode 100644 index ded3201f8da1b7dc206c06f5348eda66234ced14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4713 zcmeHL&5ImG6tCHiAJH{r<5$$E9TiN_EoL?&5_OkZChN|^ZdjF-cvza=p2|!!J>6q> zPu#(S2k|2aUi=4g5%nfs6hs_|5W%BCyyRd&jN&046h$GvS6wetQ`5Vf(VO_7`@QV{NTw@b*^YUj=&FZFAuzn94R*-=b(l=|yuQFSLOl-p6g8;I%? zc1;99^r-z(6bE&?deg9F;CmuW#O&hgGIP6WGm2-IyPlia$ArD&#$MC6p9&D*b4rh%)=>n5#E-(nW}O&3SBKLZyY(}FaS4sGe4N1TMcs4^FH2{>dl=PaGOaNTmFlPM zKR-j!aZZXbjeCwWo{!(&`1&KXkn!iov)xWRtH-~s?sgIW@B2?zV6h5I$st(M4%=mZ zlo#!pVyRqwY^G!%f{7iAK)8uG42#}1>hYx4PTdX0lQhnFlcX?81#g61zR~rA`m|qX z9Q?aH6`LuOcMj`^-x5Jj_4uKms&3SDoECXkO)vIjkT|Nlsf#g7yu>)n3O_s{?oyoCUJ?}Nz)hdn zb!jqFsAY`p2aY-3sI^f%3RhnI(@M`|<{rGVgFV(qC(|DD%geubOJ=3#e;q(({_B9D zPpZESGSY_`V`ja~_6g9-i@&Mj7nL8ZAHHWZegK#rpY;2HBawdA8f`bABQO5@Dn7`ApT>Zxk7FJQ{p1fLQE~5ggys zF80e6vjZzIq1BW2nFD|qv^r2lN(!eo?N>VjiGFrEulxTL#tHTG-HKo;`*6WV}-wSnneD3p~G#Bg(iR(xv zf3*ev4dDB7>U>e+gPBF=#2>ftgX`>+HqNOI>I1#XJ(h|jRflE=5Atx*UOT?@%-Vvp zbj(rzCrU$L_M@UGkL~j7!BPJX;2fWw^a)U(y?D@vNN}E)KSdn%*8%|TRIi7n-xwG} fKh!%8_$TM;8(sU<$Mos^uTqk%B~z6jJY@VgDEpfW diff --git a/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleD.ko b/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/kernel/moduleD.ko deleted file mode 100644 index 2c7273ac572769fa64897c7616d8a3e81af6da58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4713 zcmeHLO>Ep$5Pln%zY-7$f92nTO0^-CWv{_!$z zY+m^7o9pkM`Te{3&tR(Gce|LgwK6_}l#K4Kq$CGDVH z=7)LFo-CHi#b+i<_5qmKu?U2lh=Z``-Jl&$)?2B&%6O8-8E=pjMycTSu)|k7eo&k6 zYm9?`m#1PaW%ABp{qUP2SXUZ9^i!oqOUG%Fch&S_PX>vjnwz>9v&2h`!>sVbQxVKo z)xiOcAJ&u1uj915s1v465P4ujOBLhjM1{sY13zp=p(l9S@DnGSYK*TY;0Bh-7Aype z%ZGyUO(d!7{ey+Y7+eoQ`xdz5Vxj3OO5U$wDB`}P(;;Z!zNT$sQr%WY4=7ITE)o>y zz)hd1x;&a0%w>%21CBY~su`zo`6R{qQ}T@dLp0_+;M&9Et3+)?m91ioEzA ztN0if3Hfbskw3yu1BUS@;nL}XYHU}3dJk`bot{7WxT1vj2vFRt-}`{)^*^HmV9j)* zxP*NKLSFxOlp#GY*_-WipvbFVH>ZAgf-Uu@`h5miUi>a4N*wHvD)QdD;UNP}@SLer zmjiI_tb^@ zFA<xXkPH$El? zqF}SX8W`ur`Zih>sLw8FwTkjqRne1r{nD#j4kFx9@tbtuC(_2gps(y3G2WR#mS@H`w55IR11jJ(Z z4dD2m_OPp)rUEN4qScf3nTG){Xmy~9loU>F+OMh-@70IK`U#2m>QCbj;M{!b+u$AP zXOvZdBhmi#HpqpomTaJ!eIUhAM(ftI63uRTb@&8SV_N-bz5W7lilw<=UvGn71bjTF zp5FpKrj1YX`SUh@ewFyu&Cj2Da|6UJ`V*vaZN6-sE7b=n_gE^DR2`ZfJjlaId->S> z@#U&BKjWzX6Qw>d`%zJp$9DPk;HZBGaE{MT`UFrE;1CJU^YW*NqyAa|pq=XVu=E=P gW9Wx^^;xcc-DAdd&36MobL+xg@YA3jx=%z1@TTZU zxfaH`hFrqhg}*e1MnyheQV&F9;A24uyFX?m`1bnY)uQ55irj+hhoY)@fD9(YK zK5^*sXrVA$Ft!gk=6ItfWA_MLw)kh1p2^I2@WM9sSRb8Cd(6+4fBBZeO3(i~fXw`t z0Yjfue;4{l9~F$5^)lrXpl6G}uHu)KAFLlfXES~Tm>!?>dw?U6ejyFZEf}!He_zGN zxJbxvf{XkSehM&*KM9vkUn^m&`qOiG9rX14$;TDdd6NLe&H9}M+-CoZ3V=1!iQ*FW z9&~K>rt)NTxRKJe_v&HXGqQpTDsV3WggNFoE!E>fgJ(`d@ z2z|pH!{_vO_9qNKHNzhsl5F??z2*MLLD#(hOA0gd--nCMLT3IyfevCc@5zMh7YR_D z?1|$%qrR@%zQ*`tU}WZwem3n5=Y}X_8zq)$Tv7E~SI%)C-Vc{qKU|a6_?Q@w_6bwS zvh6pN59Z*)_2<=s&@a->aOrF4c8M1I-Gk64eVPNNKF)b0^snpdeh$DG`9WPI%G-Fetl@JKQHlq{b~LIY|W>&1>Ti@Mp+Fw z61~6PfPQIHk^&C1cV%~!(Z2P#M2p5&hYw(A57a0BZMQzn*{6VyY0riB@h<@%*XAvq z@4k_KpfTt>kjE``z63bki*E8W2xHoOCY|56&{rSm4IZ#uWVt#tdw7tCllIc_xo4Id z-dx>N|0gN~VDY1(ERXH->%mk14&WSLob(A$pS^g{he&Xqmp?^3_16Lb?NqOarQaAB g13Z#D&(lx%n?W}})iHfK|EoU${Z9*}E?J%Z1!!=X+yDRo diff --git a/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/modules.order b/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/modules.order index 718a50e..e69de29 100644 --- a/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/modules.order +++ b/testsuite/rootfs-pristine/test-depmod/detect-loop/lib/modules/4.4.4/modules.order @@ -1,5 +0,0 @@ -kernel//home/lucas/p/kmod/testsuite/module-playground/moduleA.ko -kernel//home/lucas/p/kmod/testsuite/module-playground/moduleB.ko -kernel//home/lucas/p/kmod/testsuite/module-playground/moduleC.ko -kernel//home/lucas/p/kmod/testsuite/module-playground/moduleD.ko -kernel//home/lucas/p/kmod/testsuite/module-playground/moduleE.ko -- 2.7.4