summaryrefslogtreecommitdiff
path: root/drivers/block/xen-blkback
diff options
context:
space:
mode:
authorPaul Durrant <pdurrant@amazon.com>2019-12-10 14:53:05 +0000
committerJuergen Gross <jgross@suse.com>2019-12-13 08:34:06 +0100
commitfa2ac657f9783f0891b2935490afe9a7fd29d3fa (patch)
tree0aa8c9c49904c2b31db2d5e05f5e29cdb2b80779 /drivers/block/xen-blkback
parent14855954f63608c5622d5eaa964d3872ce5c5514 (diff)
downloadlinux-fa2ac657f9783f0891b2935490afe9a7fd29d3fa.tar.gz
linux-fa2ac657f9783f0891b2935490afe9a7fd29d3fa.tar.bz2
linux-fa2ac657f9783f0891b2935490afe9a7fd29d3fa.zip
xen-blkback: prevent premature module unload
Objects allocated by xen_blkif_alloc come from the 'blkif_cache' kmem cache. This cache is destoyed when xen-blkif is unloaded so it is necessary to wait for the deferred free routine used for such objects to complete. This necessity was missed in commit 14855954f636 "xen-blkback: allow module to be cleanly unloaded". This patch fixes the problem by taking/releasing extra module references in xen_blkif_alloc/free() respectively. Signed-off-by: Paul Durrant <pdurrant@amazon.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'drivers/block/xen-blkback')
-rw-r--r--drivers/block/xen-blkback/xenbus.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
index e8c5c54e1d26..d6a6adfd5159 100644
--- a/drivers/block/xen-blkback/xenbus.c
+++ b/drivers/block/xen-blkback/xenbus.c
@@ -171,6 +171,15 @@ static struct xen_blkif *xen_blkif_alloc(domid_t domid)
blkif->domid = domid;
atomic_set(&blkif->refcnt, 1);
init_completion(&blkif->drain_complete);
+
+ /*
+ * Because freeing back to the cache may be deferred, it is not
+ * safe to unload the module (and hence destroy the cache) until
+ * this has completed. To prevent premature unloading, take an
+ * extra module reference here and release only when the object
+ * has been freed back to the cache.
+ */
+ __module_get(THIS_MODULE);
INIT_WORK(&blkif->free_work, xen_blkif_deferred_free);
return blkif;
@@ -320,6 +329,7 @@ static void xen_blkif_free(struct xen_blkif *blkif)
/* Make sure everything is drained before shutting down */
kmem_cache_free(xen_blkif_cachep, blkif);
+ module_put(THIS_MODULE);
}
int __init xen_blkif_interface_init(void)
o9f0} 8:X![ngE}RBrLږEEŤp=uu/t? lsHcl5:d-Z4ž\WV3rBuhv>6,WZ6!:}M%y\f{_(Q]-[Xx4y"xZXXiZ:"mhYiie_g2FL䠲nt3I9dX6cE0{:Sq|'Ei쭑Y55 {HK.û2ϝ-K[=EV{ BQ;kL!jN;݅ _=w4gP!IA_S;[cO[i5:Q3XX5!Sϝ_\^^K'o k3 Zg\}EsK r.YarR%#c{`GKIQ #,H{ܼM5vr`hO,Q|6+;ғ*禫 z*/G.P^7z"2z=/uRAL7HD(dC)5t\d9#uU|a,$f5l{f9I-lDXVodt} ]&AN~uRmtFo.0&n8\25*[cܘhl~sCXc\LLJ'^qZV)z׌L,PH }Wkot+M.mu@Yf$-  3 *AP?s|3/7>3{3ۓ͢7&7թ\X A_#`a8,X͜'G+8dу5sل.hr@ /T{.C;nmL4fϸPfי4 rz5ltSuG5'{O/3Ï&mp)"*Gk\^ fnz.)̛Y;q/-鮬kq->W/r~+YŎbf×+(0@0 _*`p65j͖>M0l)ը5p ^iz>t9Ϛ;/s<К6F`:-) ,P>FSV Rֱnbc]0mQYl4u8<\eIɬ^wB ox!X~ꏲrs$B& F& gl%A &q>c5b?Y Ț3Ќb/~\h0xim&!4Yt '#qش@;|R41!D'G_pt%P0{lK`6ͭbiBALJ` vrOMx0LXe-`@xd7俰б眢39~(!NI콰!kOQ/)8”Ofsr3PfF 1+(R2I)X.'q,ԴʈUG?5 ~;'EPxJН[m7Fy;'G|`m6hji6Pz2|q+%trVla7N+դqYTVˆ0&I eK#'Nƒ p]c˜M6.N5W:i=e_}Equ|tk쏯 d&ؤo'Cj]a:[a#'*iVX!UjRmo!5k<^ތWަ0?{YޟEk̭~ȉ'Pܾ&A9wyY5D#C $ tFO.PSy @Mgdz/ouvؾHΙ0ܳsQX6jцy>J=} C\AV_66ww"0,d89l3H a# ș!Ä`  MΎcB=k`TNLB`eW뮽G “$rV"<;WeJ5;[XgGׯIĔ(@݅m۞yvtpmW=\1tug{VoIEj~@:zތD!ͯϺ=?[w_َyw@ht5nj W"`h7?ރmkK7ߕ-u7]{B glʫ5ϖE{ ,{+AvZ`qcgFyh:Zm\a_Ն>ZXy1^s^_w]yDvo2xa{*rkJ˹2c;yK81v{k &&.1!lv\ד!'W}Hw*XtEG+w?L&3=]= /YKsS EK {FVuX°m v;gxG]|_ Q1l.5^`d}]ɲggi,ل w'36Vm#ZAU{V%[7Yf0e/~d{,~Kb;oa_%)*Y ˢoW';zr~5XmSj(ׂ8uE[+b8pC}mopuNV\p74k۸^.6kz͌)5trӔZS]/Wq[qlazq=Lsy#UKkf>e(f|WV>zO;w:ކ7u 9y>Ve*ܰ 9 {:ց!u|h÷ {&Ve˻IlDt CM[kj2!AL ,ڒ'ل[|R߮򽜚Ӫ׽;*%…*Q̽01"DJ!xU>|9`N^5g]"p,n=s#q7o V{yOŐ3N]TUK[UVmlݶ6cDnգ[jPUR)UDU μpTlR>vYp+J>rO*wSQ[/ g2zHEX>vxG5Ύwu(HNp*i=0jVj1Pc;=h$I$;AmݣX02@1 DԮQ:(mq*a⎫ܿM܆f#yB3qwݺ-<Q }(`Hp8a?810bHI!'"Hr`{!QWz NFS@Gt;ҷfA$Q`E!\>ȩTZPL:\$7?LK230?'cd ߓO se܃ 5a4D*L?^O(d;6鮃89 't8j:+p-vz~'{1;=EXDx+;S \eϷB?YϪs- ۻϲyc?DhdF}&Oo߻Dr#hTaNHu$e*Clܿe֯yˆ&|97jܡ!O J,.t?o5W @.7nm;N)Y f=)"M8l0Oǣ)PJ=JJU\?V 7-^sө 70|AGOgDO]ǞA'- :zLecH [h=JQB!Kc'lvZ,U=Ȃrf &˰#PXYu>p}sBg䗵}~Z"U栞nnzt}U$uS\8.ޞ:dHIx@gyT[$Պ}r3|.Π* a61Fw9;۬l>%fT3b\D#%:/npi l_> @cFDuSX &È#Ͻ vnW6}uuF:gXh, 쓕f +t6,ʨ_:|Toi;1>M+N  Gs"g{ېۯ >foz8J`>Q~nU?qǴIs"TOG6j.v5!olHuw٫_>60:6,fSp7i!Ø^DTNMzGjV|wgV us.|UJWlO0$?޶.u"$H""66kwKZ&GtÈNi&j><_ӳ`m~ "d'o'Lw:fm!a sWnM+k6(c6g|.!S9tTqVF\٥j}W?ȩWDO['<Xf :}a9KPzu0(vfd~ַMoa[PݧZxei,$\%9|Q$,`QCW7(_zD&on5ֶޤc8kMοkQG&',=p7P@5ٲJ‡+^SV*)A~u@C/one~ 'TkF`&ȈҰ#KaAݝ6绵Q8re%c9J]b͕G?=,ˉخ@Ȁ`䴧[{*8!ڃ3~>{l~uTKyu?Q u7ݝ )˶{̂da}sŪGNO]-Bv\mUy;0V +`se!|{_CȞ1.8ڬX9JG-"nV$EݞVPA3$&mنiu7+dov}|6"jqTo>}H qd_W + nxO0֫z;\ek^JD1c.'N^UP)_(cu?AR_αj'Tm.o 03c30g-SA֖lUwUVX/MS=u ܝG¨x 3d:t=rqvhaϱ) O+ávM0Kڞ[z7 (2c eCH!2H?DZ)ojkV4vgWyΗJ˜m[ROUZ#YlbDKchm(> :.;Do 7p;1H%ӆalr#s<q27ODD:ƾ,銬1ӹH\ͧޣ6)kn$<@a0w3:5ѰHlm9MQ)+yd8b Vh:sh1عY)ђ3PIy>fN7b{b940rݶ 7(_`gMO'Ͼ#υUTcΈvyYmf_g쵭g8&/^sy=VX(q>uk҃+ɻzw( )UB=GPP؊_d_uɷj([{}n,(FVMH!eXGxTA(%;5qּ\%b0X#ǻ:c!1QxW ~ 1Rߣ%$Xhk1eyHMDh3eD2pyj#TK6ޡJG{G7/EH8C9#"'QNbP eu=4~ʑ+v4 /BBxVo0ӷ|gj P}?O^} /MxK)g7'"M(6rQFa FXպ ɆO^o@y:m5tB*3R^TQ>~|]!ceCB='Ty@_'kƠ*DC>4ނ|ú'y~[06l 8R"^@ >J8At!r<ֺv%qB o~j4WrߋG~Fo/#1xt .\ol<;`e6 4m 56*>NDhS炂‘wYrdD:׮x+_+]Dwݏb=ǡ C[tv} mʹ~}HW{6 &DQ(xՓ rhh*>N(X1,*xIsIv[ 낞{[tDT4zc};@Ρ%eGl,ӉE8(Ǫ9:˪'!sNP\ٛv@gc?رbq)6:r'؁?g \1"=]$&I'T%L)-xlt_rGi ϻ#^|Qlֺpxx7tri徚vYs33ZS*'dgn~iFXM:` 6+99=+'e#HXSnhn~L$#:$?KwoT@1$F># GOȷ'ͭ!>=bvn| ֨Y!1VK EuFnz4hy':G\!7xߟVW]gVvu;#jT-1&lOGokiɭ]gN4sshfշrNifփN_#B1o'Lꍤ:>:>;mSEP٘qkab:%{|,}}oJj&/nSx&N:.y= d>ж-oU79֞0#M6zp(:ler,R1)=z~ʻC^:,OgyJ'ĠYنCS@_LjT"smU&{Q+o{zp|2Gvj%|5%C{^&S1|97PfsY%Da:tlBGu ) :}"yW\V1h @q\vvFk6F$Fk\sPCL`r~c ;, zca n(J@5E%&Ov<~R?&ͼ/U$_\&/ 6~j2 9brz$X'FtBk|H'gkrlh̡/^%i̠}`^>k)ŒUE~I)0i:R[4&hmJ@"Ft ޤt.0`Sy͸N"!Bh2uѹ+l?pK4`ɿ 󝻟q% eAe/lp0ԘTUU鴿'3>,,k\5kҟ<e}R{`lݬ6.^n" xsy:Kݭ-4{laslQ[$j)ksZdU}, E@+{ Xu]a5pΫl lmmjqDAUܙAFһzW%PJnCq#o:߂D^_3Y)k䒽hG6Joȇ6|!Yphl\oיɲA(@ko?T@C=VH!/(@9mr 0u%HlrY=|- rn ^}!}[h>-۵PKt=:$bP s[<6Q2!5NK(_#*B]'5D 7!A*:|dpے nͼr9;bHXzo޼l^u&ƶ (Ĩ#VN؂i}oDzT~ܞ9$@  E_6,9Etˀ|=ś FA-V m[, +`̶k_ME* vpgdkAid0W#@2m"U&I؀" fSျ#g`)-k"b,(,TE !=~UCe]*yZ{)TP,Y^*R:K`Y@I"p8'߹J$ᵯPHPsf ,ϲ$uS]]N`jaL>T9Y)c wI8[˶'H5@wxҏw4A }". ύ& ORsyx@珁S8C=͍WWV|7򏹣}Z>vM~Mƺgy7bLDlU.=1,-x<*(HL;~NaMn~5Oaap@:yf.D}D msxuּ >sy6mt1ǢPxQ 2R/u#C[;|!D1\~ x- ㍪_V84:Ò`M6rs|q,}>@M,Uauh4t4! Y SU{)gydnCs.j$_@o08/:6=*e0QIþiv%CwckahxG&zt7yAC!fIUjw`MOŏ h,©@ Yu>+~2Ppv^v-Ms;G68gtճ k=nP"`K?[q3ݨ= fQ6Uy iKI%UU'-" jGAT$K̐c$-sJ}:l9qpSR6\T&yK1,Sqkh;Q9YF\k]"cǢ-xChh6[AYcA:-;'%s ,\ȍDڣ[${YH:ao=F鸪mz&BQj8uJXwkJ=z֧˷lʀ/歹Z1_om2뒘տ54d q0/ gkYwΜO0ݲTD%+Ih79PmtȶenS4{u'87#I9*5DqXbslm.7u\muB]9s(kuOGmrPfma8~<WybM4b8-CqkѱjEW$mlF^b{ 9,[x.aebbbyʘϊY\qpmd':;uyP3Xsu %?Fߵt!58@Abݷ;ARڹ78wI)Z9;^*C6p%(/Ɯ}܄&K8%|+:<{dbs7fN߄h5t%}NΎ>u|j@^Tm&r\cLf!gl@ .ѨЂI pH; r]_`I\NG+ìykRmzjRQ)lK7y6_ prv>XQF]X0ڷQ`@ 18΂Eq$hFZjƳ%Gm#׷/ wJ:SǓeg-?\NK{D%?a&l|럚k9{O\zQpYqS+oy#;)y|Z&ao/Wu塵!bI^J"J8ˋ')Y*gۓyS0T )&.`Sjh?nKz?S?ǽ\w9зVDe;Yus:"!E=:B%Kn l)7CoAGG ZLĕ(r*qAhd/KA|roGsiz'r׍QïNk>)еݤ6qXy=zx7 B\5y~Ȅw|Є=7 _ rz jV^>})mǦsB]qw?˝}JQ})|Oƅh,_fUIhKVSJ45O5 v,̎w uǞ~123i(2xRlK:tyWߎiDJQ/ȮQR a[YAu&Zq/ڭwNV۝'HX|KW~{Ǻ]oVL2^P)00/j rFъ- ij I?k&,6{]|2dMM*F`YmpЖchHY 1s xo|`,)G䛕Uz埲>r߬X&vg_yzKˎfcߗR~;;׍g5'\FSߙѯDD-U]_Q1/YSW>g F#<:Vr,R"$$vn{9Ar˛wbWkr_~:\Y?y!ĭl( ~>^GX<֨$+ !3b9Lc,NSg>UÖo/7!?@_ԹڔCC&n<&s34˸ɀwqDl:(XX:{95hFfH'[z5O豶?VSy@0[ݬ {q JKG[q}:AnR}`.dj0g D!A2! jnNe,}y?83]wJ c0#5/exA!K!j2"zǹm4$3 cAܼ]oշ\2{'=E 4Y8  5 f[ VڢIKv[yۄ1nUeѮYiBd.;m7ȭWZY\6MA|#ap~"S";Ԇ8{_gQt}$rd˻|5H3[~t>N.ǎ@/@ߘ#`KYcf\ږlɃu,H[5Te,&ȦB49iߋ*횹2Z^j$H][nJNz[PbIdB+x+}t~} q @^}{/d4L=3yf?z`\ f缍7+a(;\4|HOH\" -P:JR4UE])a Sf_IT .Tn>B{ Ndk£86uHhz>2j׉8-7jpch]ҁˊ`zV7ѓ]XZ\甐]!GsĢ8Tvn-Eꅐe `x١r%~גgӨk%jht}Xqj;A-x!`]\Q}Vܩ=[}F yWG0hO׬őBd ؔ%Ksvry+1-"#ZX\?ֽ9\㙖cWoNY$].\ćg~jH<wsq 6M@>Sre\FW~kTH[6h}h.%6F`#v0a(I¶cUޑNׇӎnrآR#J'.?&;ЧŮsK,;дݘ>w0#._dToEXWDnUg0]-WA:_ލg\l/S?7h753[֠ <("d~<>jtz4s5,+1;̵޿p)/xuRE"AlUWdz?F} _yN]랩y>svݟqsݪlAbDo L@{cʹ.{VE.&=V@<El :Rkg$ۣ5)=F $}aa p FG _,+OQ.wK'qGZ 6sN`ufz9p` Md:cٿvX7\4) d-N~bzj/n.WES\#yWyd,[ Yz6K!E?r( )|QO%B & IQ~W"_NWQvxt(K:mQk\A"wہ`3kžKX0sP<$XD2 &OzU~KgbSrTVC#bRІ0V^]mKN%Qhw*G-((.0| \\  NBU1_ATy8lHg T嫦LaA(&GVD1**a10 0y1V6N D;[7Bs"ҁҴr$Tl+X) TA[Mqg2wz_a`h=.GjՃV{\ލ]/lAœ9JbDf"&J`\$+ 78GT18O@&5~ rYDu~=>^[#z ky뷣E?$?|2*QZ3/&oKɞ,@TDg0;3hFU c,{UDP=m_SSnحo$II1DK[ ZâN@oYeAC֣DGKc]{[PO5P+tRwYi>3ɻ?+|.'t_l="[L"!]0* =CW(q;lo卸 4ʊfUP\NE ?t0RL7* 2 5g4zg\n䅛o] Q!qz2UUqLlO_β\0NT7{_T9m&__9eq2 #qF;ͻ8J"Ho zR-Q` НW$ p&TkآZDJ>*]4Xn2't)<-#A_o%+wK RU1ʍu^/9BX!ìZAA Vq5gXh55yFp UE&q)xs񩴂q\%|{X d@,}" W o ;}/tjjjثl'G![=l4W)5g 3dnx}׹S?z'55_>k'[sbT?lg֡~yܕ˯-&|?kmLƓ њ)7iC7oz+VSOuXfTL3|0 @VQ/,1bQDH5$%7 Y#մO\; 뵁J:܎TZzL2`1]aQb^Ir EDA?/|3綾Ns`KǍMTP; GK8H]Vx|7gt4,Hg`k ! 0:9~i( >kg 4%j0;j>NovxizU$(W_S$ʖvNm W~%m뻾 ϝn4OrB &}7!| 8{%(A69 pm}1aml<2`O Ӓ .GM %N%ey VwojL?g4~A$>UY}M#_>G l3tm`D|5Зrp#G,ilEaL~P1qײ۫"\ WF gù&,s{\Lu&'$:C6Ofpˆ41KφC|,Wd: Al$VQ2^a`O To|W)VA&{#rM)G;-Gm T7ˣ٬ D$"'!*Gۃ}~?~\J[eʛ偛B?`6=3v}81lsh#>S  77鬆E8DJ^(975"prF6t>fHw&t#@U+\Cp2QQ+P[h쿒@)'u]Gˎ!W\keN:y+gzs;'ol3 sn$v\7?o\w ]y[|GQ NDbBbGVZYR ]5s5,"ɶ}!$ْ5Yͩ8x/.1KMlgW1v*crbwn!HxJrHSk4^;ʋa'#i@wQpS"Yt⣞fvQT%/-K@bOؚ~~Wi8nٽd Fc_b3ԗՍ[As4&rۥMdq+z’f*ԛ.8M(=ao.iJK$>|#pP'sK!:#4.눧V.7'{D{>X4;ԡ܈eXUt=3 xaͼʳ1{H ZP6xfg+đ:H@8Dp=ta1a3 ~%'4TKH@exF:W[ q`p.LgwNE&gHw:ؓxiKtUrXm*d(CJ#3#܍>( r0;Y87hooC@2s3Xz~eԽ\z'~*9 ]1u,KڮxQs8G0OŃFb˦Ale16P>]NwMo![L0 b-~,7'Jq 5(ڑ$ rڶN]cc&FxZ%S4]yuWw8=4tKD=TIs?.n ۮI{ύuK9]3!@ h 3p53j=VJq[N?agR_2T5]\ |Hj8hs'= Mնq4Qg5Ō/Mg?Gمc/-xFO}x8uE-~a^VE8ƕsœFun$Cx+ >Dd 8g=QOwu{UvX2Q=P P{e=5۰᢮{ d~>cd_i~ܬt1TFԨR zR 0NblU@๔T>%vs]'bbbuD"bb5 t H*ܠcY쪰[xGB ba@;/G%[B[&k1÷$.vcTI]NLkn_db.[d*\ZG GR8[T J1DZO/(RLEY0S$<n0hg !K,B MGPUSsj 1s).GK& a61E Pr9< jr?*\| MrM bM"[Q1XK-Ex'iޣ`լ>99{yFp&_ׇsf5ȸyßk0*1jF@2((E/1>P\{5u%Ѧm!5oQ[s^Z(Y:&S~ȺgD^s{VpN1g'r_H:ϫw" QBjuܴ{O2s3OH߿,B0Y5Mo T1|u\@(gb6*$ںwҟ|Q"m9,N F|_e4s}v6SVE[g($C=koIa0Jw|mxJ:^sz $l7t$@`4qWMb)7 ,a0`gRY;+QAdxR7p ;űK=r:XRژB?oҷ@+6t?):äV`bP;=,wELV^"a}td<^s[%c(x\9lFt-g>Q@V\O0~U1PńRz7lរ!_iwvB~ORw$E0E}jḬMlL@u|=wM+ (hR;{vhrw!'qBw/F[@ai[-Gʧ> 7hvKjduߙs'mٲR Q{{ټ>@)پy 6=@=/A`.[;E{g}OSk0@ q5_c} 7u5g M~I6fJiǝ uu/ZM=Fy}blS<7;5vɖ~ޜ9.k;$$ঽ|_CE(l_&/^$lZp\? Ac(FWyq&t=n $ g)úvkCB]MiEeEaZ et'3L[kdhF)1uZodLX.$+o5vhڵ3[>r !][$;km`-o#NP=rg`K3?yqy_\H-a-yRѷcFLC`|7N:XWM@\!MSIR#ˌn!nu`a ;P % ERjV"ZxE2>28x?`h_ O5n{sLֈCg~{5$<ý"T̿}mo jl t_j3 ^{H6RWMBd,^{yɽ g%1XռJaiEMc`5&(kQٞpwr҅kefB>|)K ~yT7qiB߹I.ɨ ܭ[čCs#yR4m7e"㚪gB_ dugM(L'QRJ*tqx\ZtG׽ t,sg*YDF%de,"oz$9#EMS)#Dy>Ci0Q3 ƹ^6{Iy2\¾X`"܊"&zԒG&zF\PLO?T=|ӭ\ˎ(ƭq .bVpUѸ6|{Md 5i3_y_]zG""~s׋#qX%J W`l,!N?]# j⣔pVDqE~ oRX+?$Lj$S 6H`Bel]\$`w]͒}! *_+ ǥb4Lwu,,r̢qRsz>w 1bUa?gCyq[8n@ P+_X c9kףIezF(/*\I>m$ ::7!/dO&A |Nj锂CN!ێ˟TX_P..WAe\. 党&Ⱦڭ{=Ce65z-k-˕㳑J',.V[V^lp:[r~0֯ΩsB/!NiA 1Wp͇'G߃rj7!m/DS և=?zp8AթϞK;5r唬8+O$mzJQS {&{v[Ji;TGLRP q Ջ2A-y_ܐ~ӬvMFi &Sკ?@ 3 rx6//Wr$gmUE!C}_+׳j)+&3٬x͹" !2dPMo2y1Rkןm|׊SHNvߘYw9 !ew:~g'قy F$eTþEz$wo aa0.x. T(sZڠ\/ԸQ;A ~p bV! &CEFsECC21(xrf3"!>"]mJA&PxI]QhYm1MNwXM`"cCOnA?Xԣ&F ;|!эB88Y T'{)B`?D[; KKɍăR?Zz`dg/ 4RBT*ݲIn!{UA<ObwNv9l1}E#uY$¯c5F>ZE! 1Ŧjc7y6t>,&mdϒ{LnPe z.[L}NCuۡ  e~Q2*}ɇV,b16sUCXD"d|zC Bi&:n`q`$tԞ'S-vX#\sAaL u9Pv#x{Y*zpv*C p)5/\˫!CvLB"}QIj #]~SvϨ Ɨ9FpO5*\0WŜ~b9˖7 O Р5` <Rd4wM>J [2R}hܠlBo!'N|ۜ  X?’ 켜/z3]nP/o֒qq0d@Vϫuy϶Nl:ofQx6`܉>\|pvcgǃ'J]( igަ] }'Q=:i}CBP6?m)t`^H<+F=7TC\8 \i ZLbzeC{"G) ?. {|0Є-k3i x VpuG9 o!TjmIHuB09Guu_q3L! Wjll<}1ps=obySl^Š8Bp젨xlO~wV;WŘDb(Ot)MH$:XOԅ1>W^=O<Ҝc! b1hbu X@ 3>R5!~F6DZz$ ~۷$u9#iQCD \`ɍuµ\(ju~FX=㝕N~FAaAcx<vX8eƟ"Mq5q0t3橑JyRէ)W鹚Zm^pL9P@ qX·v'gnhۧS)&wmvZ9q)LRMs2km6c/&F8ҡR삒[C#g6%jtW/P0XlS=Vb1/+"znxVi4W7;8h”Ƅv:A"LoQΜk <)H~-ͥS8@ÜNͺIX{GӼ]E*j%;RqTBqMs`Lcn"j:w]wU %nTE90+q f ^0W9Q8}۪Zk)83̳,x9z}R}uJiNpnRQIz1U񈜎ZD6nFc9pӤ츼 zJ-o 7qYp~4A,] DRg4LЪe)7)8:1iL=^܌#n :7g pwb ]Gh9y'|K:}vx'*ZW%ͶW>`gvd>k̜9q qSIRGu0I"n2iÂrB=\mJeK"G$ZM%Ms7Ys7bs3G~M]5gOZj\tB#}_gnj3bîݞr7<r(Ӊ*S6 ‡}'g7Ac8 dstߛsg^q.:9ec7fĜ4[1fOrvй&l1]q ^/rBueZc8ގؚsׇG? 4as3NB]$Mdk虹(%égWlq`ɓ1\ymRcS zXzG&H0pNs͢Y|Aȑ65PA ^~kj̎52ƭQNTh}9mJw"]2#<Ʋ\Rpri=aؘ? k&2kI8}uO]Xh{KCX8ÇrnkD y500Mdт\N,߬.[7ޟ٩$2xFt 7$v>+5h8a~Em[yA` ż eKÜɅ?uў'J~(.vvN9jO=9}#Tκ29lpxɴCaQ53%~/٤`-UzXg\~&2^ YJrJLn^ WG}_ء FyBp ſNp~f𙨫!&?s ry?ވǞ6vRg Ȧ?\j$LQ1G bx{2o(h?׉+{K~ľ7Nq_ xdұ׸)DP"ND%3 {Sݕ¾}+8vHq9T: 0OڪixP>+B(ui`mxȊ b;֩d&t 5]h\CxBhh"S~} ֿv _)2To7D)G ΑDn:v=AE B dA.V+BWr c LGuv0TK-0D +pvYu\$$za;?8X]pcAȋsڂeا<ė5XKe_ C =o )0Q6#]%=u8N._5;dv&D|ia2! ajʩݡMq$0 s#2':!=/zC39$v <|Z%!eo5mVV?j0r%/~J3fРeY5xί+_`ÞGn>u\%J7QDq#ճ?ߣy^Pr .jÔZu4!b?FC| 9WjsC*y{vi˜ŕ%("*&9FbVS;["&}DC2Ge%u&0^*[y󑐇PGʁ^F9]`xZu380DIfDEdpUȤEl u 39f,^C dvk6 c:ʜliFXй $d A0tAMQC+MPOJK^xֲ8/%D A;t\YQ&ۻ+/(Tt~=^.01(JܓՉe_<7ףGsF{S 3^M} (QL77-ߺTx'r[Lr N$* +A`p:Pqb:]qjFO SK5 ^BeuInv5X wO ֝"!B7iwX" soCТ^h':SWQ `!27ǪIA*WXhUB,H @E#P!{*ԸH^oQ]"Y8/ (xrq0AM!,[/#bC^ ЄY]%oY\#Lj/\H`O%74Gf]2i2(`u5J/D=[IgrߣQN^&Bl|'S:L` l\&nt~.{ބ9#iNqgކ_\7г)0vJ1.Xe+M%fI_B%ܫ> lLhT2ްO]*^Β:ALn10KPr}"剃D:g(m6i)̬c,sXHlEPbbXR{#\=KT(x?2M ъ9Dq}Cz75\0}J!cW9%)㮻6FT@p61~ cXFpYr(ēCcc$ [Z6^ԑp}ȌI lͧNUbi88[Fw%z_l-ģbµ&O7D63-.2E |5lʼ E;~;kaA_G~pVV9Dj/r]7̚8\>$w^H=WH@3{gwԃ <뮡ھk]1B5Yx[l D_ 2kؽմȫZEL =>[a.WG WM#B>0|<Mgt--끈#G-ɐFXk73;eQ!"W'/#݇b`R뀢du~j e'Gau?X,_ħJk"%4 }0Ⱥ7 0 ME~9E̠Z!UKܸ@\k)قK `Ya`gpld#[i?. T3qb JG^odaw+<6"@xNWfta 4gҞ{˱ϋxT`ٯ(XЗa/BO˶" ۔[zj}8}?lrrI]yA$^A:ù-_{ 2׊aFk㮜F2^۹('UJVvm~Bް;xK`P~o8RZx])xGP%;M3O{=`Q 9RY![ǐlr{/z}ݚ;knu칱]9K/^ta˥5J?1?IZN8SER" `h:/SZn]pýi&P( t)I؉D?h0XđAE:O,T?cg>E"ꫤUZo(YHF/믟.y65iSJ#اf}ڎņ;r{H|Q9q(*]cz4N|YDt;B.U~CrN7b7rywO X/!ߣ44A1P/<ZRuxOtrִݻ>}2*>I7([`3w˓,E{"Y_滛~λ+?Luq-{1oOz.uH zg w_O(~+m^:pRs԰z+P[=cu8(h޹T|ls%:O'x]{_'d XK^okm |lLqpł7:Qюhn] D_Vw`t]eQnQ*'ƴh(8ajݓN``_2 \Nn6y\?>En ~;ֵ8>#5st>clfVTvkggGdL9!Hqdrt_OBXُ넴|t5}aTJ>KFeU\{B9z5 c$l>Ł2GWanY8#WTj7!nS j5qV;=Ͱu 53A6g;Ê 2K9+2(%E|D!Ki'"1D{^Ya9Sg]zuD$4~%;F־?ު:{T:]My/(-iU{~CQFyMEK,~g=`UJ(Qj?T78MXK!Wc*?Wߝ$?oA=+.eS|>Ϗ_ҽ^2h|,}SgSKW@m )>WvU-#ԣ1߰cޣڈ-o&Y{7Np9yjyGNHN}9EWbBPuzG&,Jn%#0xx10No/eoHAVfڅ'rj4K$O?PX?- ^!b _^/x[IBoY}>Q?˃B@5AaP~$-/ZB(Q*N6y[H6w.D@JT{;~Y+MYҜ#g0nd'1)ȜQMRʉB3>S Qq[/g8X_Ąt5ό5@m79|uOݠg靝?ID:8d.s@GHp't|C٭}Xzvfc|F=R^hׯs"VzY#NU.Oԟ_?:(l36ŋv#/۟4lI5f?1tBI cI{G)xZ ֲ@HnaZ11 IO+/ 7=ₓ9 \cv Rw=YsϽ~cs$K,vy_؊ 1OqR[*w +z&0@ID4`+-hQ/ҊXm4헅mΧCn t5ao>뚰1!{ñN2Lff-%q5dиk'Z=k^ah'P쮘 h2j ۋyFNROok؉ v@7܉9spvp2"X#glALl7mRFDK0ڨK%^GlFƒ/Vb>X m99 kМ#%('h-rQAld3ᝒ-nk[LE ۊ A[i)Z s{2 ezNX7fÅ QmQKNAW"M7AfI:}z]R04_G[[Le|_uGzz#U B>;Y٤iڵkf>@[XDt7VB_MF!h{wB9#d_c[2),,]U^ŶV;><ܦӷu~'W)i5P#V00w{}40Rr^NxI\Ovw+].W8k-&V"641r+QC[@|:A2"I FEB*$Ɯ"%gpzǷ n}tQF-!~ +G߻s lw3KGH2CrT6LU_{gYm\9!Zœ`15N8\϶ f0J[~mw(u bk Ji\(JR5 (j>_K磬ېg2,=}Bbe~::Xr=EKQ'ͱݐ2U ;[lwkV:!K%v6ʃbWnBv"[kkG\]$@|t$;/týYjT޶j49Q%~H~'Ŀ⛿'#o9p;`v974MGvNVF*gVw9Kݿ!‚-yع\ThVB=VQq$97|{=<+ E&E2Y3ce d5~\r\['M( ~;CmxZ*'A(DmlM>+;l&;sT}\"HN E›]śYj@ ZzYXdz|$2g.V<#b7@˒MɚQ_XOtX(y0VJgthܑCh'&OvW],x5q>7=dBĆp/_ґ|Tak3" " }aE{N/͓)it =wqԫ}.F:P{Ga]ȄS;]}V(`P13syßǞ̯$T@Wgt ^aR?fCĂj{ Z>5yiG?,;.7~=[,@NQ7 {-/rWDP@'GE<ឧu>']"!ǜ57 /%۞{vyj?ޣS;Q QXa]X#\.pdeJ0lz"6ND&ǨTIvT2XNyIt@ &k]Եt)s;]:J'E{-ν퍙VX{?T ejSBleiRDmN&cݪzs`.6jhέ\#`.s&>VU).c6yh.Dֱ4tTYw;!ȈNrXFiQ[[hmZS*+zp;NP2ÿ\,zu8'V3j9)NIs_;BX o*OHΈ\tOkKJzSkXV,cmfA oljzsXIêqzyǯ>e\8] w~3JyMs9|b%[vHR=+rfkm8>6TMx93 Ltcr[G J##mi|o湜NrQ1n0 j _x׸龚lw \'AN)A = 5|׼_S;YˌjyWG亼 WUOȞҼSc6OkN᧟\᜗ Iol5uwQm8pnntH8 S1&umۖPf#QF2ɚmH F-'Jq!~u .Kߐƺ,#4ae3Ԓmn]D E.iYUP]x@ k8ۀ^^Z,N{$xawPIL.sE9ȎPT[HbyG;00m8]xU7oM5Fm˦VɀuI&|u}nvMV8qu-ĂLt~j" j$0ȕ  l0wy*qkպh2 d361 Lmd\Ԇ'}s,]vk3"goev&gYW lWK \a#:6곋$L5 m[r _Y VR[hjGcdq6BˠotKuFxgL_=&"f|E]G5'ðzR\\ VN] x"_@ZL4 P/&nS8ݘ"b2e&)؆*[lanR+536CxD˲t&9ە˳liDm݃:qCv60&#&xag|y&qt˾0&1&Dbb!D7 _[ykD}jѱJix"'VɇV"y.wrnI/'nC{ D wߦҨGe󯞣^eGh3c%YR՝ͪlHw.ZΜmNF c΂ξ[é&_a_MHbod:+Mc ȐRml܄dT-,v/.pwJGԝK;,5D b̦_ s˪uPXYJV .`C6L^=/1q^$k r8̻Gl0g?/orL0D@)T (Zyp^Q4ݛ9]1hR*JZjW@}&1PCs1uw=⏞i/~Ԕ:PN_Ұ|?^!C}'NJE=Ç>>ij>+rR\'{ɺF:.|:lŬՌ?D=$ $g O$!$[$I$KX˓sOq DT<] )=?`6H RNJDr^.?#^cn#'ϩj `+K}7DTO\2׭%pO8*z34trw J ae_O,taymn9[QK.N^%,:#g^R!!\!>C]QXv혟eyߡõ~4,Rsǖ^M@LGHtv("{goxGa`b6p˩7I~j٘f:A# 6 jvלC\$R]I #8N I(IV(vl'N7q\{c8 Dv ྇{y} p8Wa6iD&pT_ Pnv0WCjj$2E:sȡa6 Z@D]<`*7C+eǜstNww`dմ$95 \H'a xm" 6%R{z1 Oy7E\ЕD[FKD7#vo ^par7.D*螡WnjtKH[px0z޼&|>(]}Q֠H泹qe|$^·_F"̫I$Mac5i$o=}N$&L/nMu۠޺ݞqoExjM@8kiݵwwrn4b$$ȇ B,i ZR ..}eUD|ƃǯәo|G4&o[ v&_FDžCxga5 u1^^MBw0ΥgۗuUq.X:거3#kgQZm^ms )P-K/"\Eg 2GDŽ6\#ig=$7] v}xDsWj NL@TLhqn#"rBu6?7%wwQBUVaZgiV$H0NgN7l)l3 ΃sptMnMDA[^7Jp"Q2uDJ$ܘ0H"D24vFbQ] YzYWqKHmr ,*Z E:apn6c,1T 4b pw,j3.b9s m~1>3Ĕ3ؖa2ah*qҾ=ۍOEX Oa|UMmQ>"6e0̡&MAa>"S"؀3IYQNz `)f,m_=nL ?FMA` 7^q66Ο0A ZM]o̝wyW~L w>qyyU͚<{ 4! EO ]0yvܪu==7"kgDE3ax(8 Ckվa"{(mUh$o`WDW?bPד[ë];^_J}!!BRށ AKE.Dr(ZJ(#5iLD@ Ǜ^)?B1P%b@ܴ5UP*pqZiR&ʉ(lkRPIAzc8Piiu@@TL' |HuG箠@=%{I4 fݿ 9` 0>iV&f!A<*<=jۯ0N}|t⾈8BA^QӰ<.z"sƴf!8o(cV 7 hm |U˗jvq0@XKFjSՈ屾 ٞgGc Ǒw8ϣ9::myD;w)k!杁 R$6T\z ΍=ќ iw{.i&g$`=~O[vX)rygv5ާ$r@6A?o0=__/AP|r]G+O~J创Ko*Mg '$ERM(P'D%Dli7c j:ܨh (A&c6IX Ť)YD@$ t'?(+}rnlxJZڱR(~Es[2 J33Ӱ-r{.8Q6quVZkϞʾHQiuҋPRPa['~93m(Klzb1݋R# T7z^|Hbq"ݚ#v oho?VoiTp׈v7kyEm0l&"[yĘt>8%d Lt"8W3B,|V2QGQ|lBz%݈ 9nbVAr43u'ەQJ}uR,d'ǩ7$y8;V:d6at4hu+zP6і(&]>?S>jzA?y4xoM &%L0MwJ~+j- Q:l+<@>:-01hsjX7U^0ں~>_qKQX8X=>)m3_go=NxC2՛f5|ǧ`!x[Y$P._ZJ4IR?bٚS[gwBw䈰^ ! }sf2Kll{~m"i+ t?YťG;`V\y?ގ8l2}uʶbنo|~P[u#[90evrp>8gӽҽzg ;E 9oˣ_UU$ dv?"}0:Ȃr( "f&DNdBiy\*#hRs]ψX ,gG %.|8)whgkOճgLml#a"2! u3Zu5cG,G쥫oϟR`u!!- ,ȼ@\=oi“Bu}Qt&5ZKǀ 4[O! )6=\m9zmQ^ԟ y)"$ml\1\uV o;ΤHf"|=#2@2ѫ<+*}@>P*w(^$@#:}y(~˃NGGC ![!l8Xؙa+^ '|d0pwk@4Lߣ=۶k/?3]i)wEKOQ*}Yۺ' u*6?^ּ{|K3FOw=ٱ'\f}YV)}%n n06MH /4qQfN_k_0apC3=6>0Ϯi|ekۜn0;Ӿ_׹p4v"8>?="Å{Dh2RG*K `Y% ,(7ka%/3K}€D9POzCv;Óh %:HF?]|1_35 ~?2Nf­5Pw5 t7 IL.>K"9@QBr`q)g i]%@U-D[uq<|N7\ZxyO&$`jJ?ھxz,b*U_,4B@:9ˆ""{>H叻4z&pX2"0.,`uFsW.Jy}]wZ/l4p{Q ).e }=-[J]Ì#rii9kZC[)UJ.shܡ05u|phc|ԱD8{g.Qϵx׶ȟbX+ JPH\XP`ϯsc~tS&ӝSekrʍR2= FGyg t\"I>#}~sy{n1zH$?>e>QsQ_[b :.l B٠h \4kJ0,LCE+V)ifl⭮{ߏ}[}M{iFM mԷn`/ v8jNb/ӓr$QnnbR@