summaryrefslogtreecommitdiff
path: root/sound/core
diff options
context:
space:
mode:
authorVegard Nossum <vegard.nossum@oracle.com>2016-08-29 00:33:51 +0200
committerTakashi Iwai <tiwai@suse.de>2016-08-29 09:06:15 +0200
commit8ddc05638ee42b18ba4fe99b5fb647fa3ad20456 (patch)
treef5c5745959579d0418386caf57870454079cc0fe /sound/core
parent6b760bb2c63a9e322c0e4a0b5daf335ad93d5a33 (diff)
downloadlinux-8ddc05638ee42b18ba4fe99b5fb647fa3ad20456.tar.gz
linux-8ddc05638ee42b18ba4fe99b5fb647fa3ad20456.tar.bz2
linux-8ddc05638ee42b18ba4fe99b5fb647fa3ad20456.zip
ALSA: timer: fix NULL pointer dereference on memory allocation failure
I hit this with syzkaller: kasan: CONFIG_KASAN_INLINE enabled kasan: GPF could be caused by NULL-ptr deref or user memory access general protection fault: 0000 [#1] PREEMPT SMP KASAN CPU: 0 PID: 1327 Comm: a.out Not tainted 4.8.0-rc2+ #190 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014 task: ffff88011278d600 task.stack: ffff8801120c0000 RIP: 0010:[<ffffffff82c8ba07>] [<ffffffff82c8ba07>] snd_hrtimer_start+0x77/0x100 RSP: 0018:ffff8801120c7a60 EFLAGS: 00010006 RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000007 RDX: 0000000000000009 RSI: 1ffff10023483091 RDI: 0000000000000048 RBP: ffff8801120c7a78 R08: ffff88011a5cf768 R09: ffff88011a5ba790 R10: 0000000000000002 R11: ffffed00234b9ef1 R12: ffff880114843980 R13: ffffffff84213c00 R14: ffff880114843ab0 R15: 0000000000000286 FS: 00007f72958f3700(0000) GS:ffff88011aa00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000603001 CR3: 00000001126ab000 CR4: 00000000000006f0 Stack: ffff880114843980 ffff880111eb2dc0 ffff880114843a34 ffff8801120c7ad0 ffffffff82c81ab1 0000000000000000 ffffffff842138e0 0000000100000000 ffff880111eb2dd0 ffff880111eb2dc0 0000000000000001 ffff880111eb2dc0 Call Trace: [<ffffffff82c81ab1>] snd_timer_start1+0x331/0x670 [<ffffffff82c85bfd>] snd_timer_start+0x5d/0xa0 [<ffffffff82c8795e>] snd_timer_user_ioctl+0x88e/0x2830 [<ffffffff8159f3a0>] ? __follow_pte.isra.49+0x430/0x430 [<ffffffff82c870d0>] ? snd_timer_pause+0x80/0x80 [<ffffffff815a26fa>] ? do_wp_page+0x3aa/0x1c90 [<ffffffff8132762f>] ? put_prev_entity+0x108f/0x21a0 [<ffffffff82c870d0>] ? snd_timer_pause+0x80/0x80 [<ffffffff816b0733>] do_vfs_ioctl+0x193/0x1050 [<ffffffff813510af>] ? cpuacct_account_field+0x12f/0x1a0 [<ffffffff816b05a0>] ? ioctl_preallocate+0x200/0x200 [<ffffffff81002f2f>] ? syscall_trace_enter+0x3cf/0xdb0 [<ffffffff815045ba>] ? __context_tracking_exit.part.4+0x9a/0x1e0 [<ffffffff81002b60>] ? exit_to_usermode_loop+0x190/0x190 [<ffffffff82001a97>] ? check_preemption_disabled+0x37/0x1e0 [<ffffffff81d93889>] ? security_file_ioctl+0x89/0xb0 [<ffffffff816b167f>] SyS_ioctl+0x8f/0xc0 [<ffffffff816b15f0>] ? do_vfs_ioctl+0x1050/0x1050 [<ffffffff81005524>] do_syscall_64+0x1c4/0x4e0 [<ffffffff83c32b2a>] entry_SYSCALL64_slow_path+0x25/0x25 Code: c7 c7 c4 b9 c8 82 48 89 d9 4c 89 ee e8 63 88 7f fe e8 7e 46 7b fe 48 8d 7b 48 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 04 84 c0 7e 65 80 7b 48 00 74 0e e8 52 46 RIP [<ffffffff82c8ba07>] snd_hrtimer_start+0x77/0x100 RSP <ffff8801120c7a60> ---[ end trace 5955b08db7f2b029 ]--- This can happen if snd_hrtimer_open() fails to allocate memory and returns an error, which is currently not checked by snd_timer_open(): ioctl(SNDRV_TIMER_IOCTL_SELECT) - snd_timer_user_tselect() - snd_timer_close() - snd_hrtimer_close() - (struct snd_timer *) t->private_data = NULL - snd_timer_open() - snd_hrtimer_open() - kzalloc() fails; t->private_data is still NULL ioctl(SNDRV_TIMER_IOCTL_START) - snd_timer_user_start() - snd_timer_start() - snd_timer_start1() - snd_hrtimer_start() - t->private_data == NULL // boom Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core')
-rw-r--r--sound/core/timer.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/sound/core/timer.c b/sound/core/timer.c
index 00618703c58f..2d6e3e76ddf5 100644
--- a/sound/core/timer.c
+++ b/sound/core/timer.c
@@ -294,8 +294,21 @@ int snd_timer_open(struct snd_timer_instance **ti,
get_device(&timer->card->card_dev);
timeri->slave_class = tid->dev_sclass;
timeri->slave_id = slave_id;
- if (list_empty(&timer->open_list_head) && timer->hw.open)
- timer->hw.open(timer);
+
+ if (list_empty(&timer->open_list_head) && timer->hw.open) {
+ int err = timer->hw.open(timer);
+ if (err) {
+ kfree(timeri->owner);
+ kfree(timeri);
+
+ if (timer->card)
+ put_device(&timer->card->card_dev);
+ module_put(timer->module);
+ mutex_unlock(&register_mutex);
+ return err;
+ }
+ }
+
list_add_tail(&timeri->open_list, &timer->open_list_head);
snd_timer_check_master(timeri);
mutex_unlock(&register_mutex);
'My ytu;fi_'EzPo0_vYFjO8@C&cAqtc."Ppn$3/c/@^UJ(0vXvKhLű͜{T"CyCD H!5\xi,"l!+\vߦGB"_2YY)҇޻Hw;REʻ˦٤4f=YyGujjLkf=5~`Nm˕ZӪ5j.b _{J"t ֋s_f f*{Z$*SCOxeE4uU,ж4m $my&OIcˉa|)ԩJb'QkjK{guz:nwlO]xj֞Ck?M@Fbj>M1N2ӑ1ENv.x>@= NсtK>zѭ1MOWNwȕaTlf{4bNA{8ӾM.'a !yb6v6DDBJ(׾64j$ (hh(H:뒕{{O5SspkFUj׊ _ƹ'E$Q/kk+tҙms7}|_*:aU1Va~H7T#C-U+"T4rAe*Dž?\ageBvakժQ{"k/vǎ"Rq5rv,V˒H b?9]>u=A&"eX+vج.wU/|4Y rhl2=v<{hN C{RT{21X𻭗;R?;9Q_ 7=UTևJWjP8uYTF޺gӳRO耂ޝtGGs8;?7ܴlB-@v"pO] EH d{?kHq Xs6 .Z1c, ɕIji}I'l+]oV{-^j7KGޏ^ CUM۪_Z!maG3ו$8ٵ{J mn.?1<4t7LgB:=XfsX;Ze/:L0no 8!4 rMlDQBnl~zt4CVA2U ]-bt;XW)9<˿NxFG)G..\Rf@+&8+P]GKY~l JƏLA69r]#JޑzLB"q't h6NHU&1G@F+z }Tsckt.IYWzDH vI=O2}Ë$(x]xMĿ'I+nǐPSK:rױ'9_"%fLeGQn\hŸ SD7wwtH׃E.eHHMMlf&ME;i-6F U~h6h~ #;Ȟr.H8j!5땺MRJ")JR!CvWP8h4RZl&YŁ7g 3t0>_2&I8xtouwpM{Qq8"a lDީTR3Kb$q뒘Z!ܺ Ew7{@$z km5) }U!I {"cB>D^hHF=P:"hqԱ5l\MAQG[xAA{Y$~B _I~츾lH ߉ o-xM/$hw]~T/xtekG-|w27P$}^8O^TŁgP NEB^ajj [NN񡋂H3inJKH@8~ fq븞3(7UIv$ i" esN{J#>4(֞K/ RG3\J$Eto wﹿ?##C?̎=;]:,\\$!D%sA_ju$3PSi)zIk^1L.(;dKIj+L'wͰڣ3"@ȕ=T\ցٵ?&Q<icn.*í!vJ/55J%M< d@} ;C F֔1bmpxh. Z#:l;8k[\؁TQLJN$+YK&6TZ_%nDzEG-FC5R:1u (2 lߦq8ء]j/< W_@89 5FdDc7޺(j$a&eժHl*^bW;eSt?E4yT- Yϟ~O4Agd36d@tz7hً,+0m޽@a9W5ąZZtW {y+m6C(4vENDlkQig6XVP~Gt3z|AO#75UO;v N,[@S/VH0ը6@PQL~/ފ3/]}rԶU! GPyVE0@6Ix8tR-r6r`n~)W y$ ++|"4&XkǛ%{L:` ?Q) `?r>/~waj&҃W8<&ԽlamL=, mz,. ӆ67ל%5ݪ*WP0FhO|VT<,61 y[SC΄&I`A 6uu eucvrGݎT&2VVg{ŀzg,s`i0M&AGVsw "[`~xԈtJ4rAk1g<-`}1=G0e,]@P+dB:lb fDbާXըkê#}$E4[I:qFqgt}H ,o$DHIuQ=* 2R!uf 4cڇiG=jUrP)(vMS;;'}vkGjh E3q4JcF\'zڐ,zdCl+-E.]Fճw@w㼐%Yq/;137Gnhh7S4*0mR/!iH!xtfkoS}bM> @E|P9ߍ#7"n/!ei 9eyԗϖq p.'͙əٚSTZfm<ԠNQ6LӧQFA2kx?$ HOrv nJ{|4a-aͣx6DXz0ٍ_ DЍw}A,/gN䣻0<:@~OKj$,Nux?'xӬ3ٰ;hag)"+w7rs+ʜ _5ưєeYż?C,}=qOlᠰ XJ)RjjCn@eD&TUmHe2HW2Ioȋ.5ۑ8+u)LAB.Ӡ؋fsW|%'ٯ˝[+3gxclxѸۍ*T:0 {4-¯ȮFR +C~>q((v} :\GpQF]̍H.$s^ڒoz ?~ڰ>ņ΍ʀ{'\.%S_mg]2_!~bLӏa.z 2q~:$rmz-6=lXzkwヱYEiI/L̪g요6OD*+4v2z"4`{xg<OK$hl躁M7cnL!/!gbݏt+VQfg> !F6DLU?v]KF I=o4lUƠ2jxWlTsu5q[bP LAxEEIZqoM_lm." 9nT<)3lpYLN惶s]{d=Y*R''&c% Moz0,]TJhq/) v,qS!@dE1D[S iewd6<1:pJ, P8`[286 glXvei7'GqSzVzfy8`)?OeĻh#|:R?'K,kj DXݰAnM >Lo׆qnk-^ Z4*S==WbmѼhGXEzt{|+% wHo+U<Ϳ(B= "_Xg,%ٕ^YEO7pR$<Jr4 7W,^X|TlWO%@~ >dg{-&^`țNKxT/sg/K.j%#94euB9O$PA^)z9#}T8Z =|Q5JCca+}s {O>˂T>́l-Yq~n{7SMֆ@W9ި+gBxY#}v..hh-9p @{ ~xtIZdgRJgR')QBZRe$>93kb WPDmN}3YRNB{@`ȇu9v9tc?XI_-Z8Rj%2Zoӕn}5r0R|l.6.H;-h&5l h]ȃ yL?j~pU6G7h;_Ixhڲbv'qߖR=F[xm?{ PD'KJW!L@P$cEc|f,z}t;%_\gjVT<(2o@&nո6 7,g΄xFsN FE|tČ%}}s<,LgЌvi$c 5EL#S%5W6d8A tLm+~6>s##l+:!Yp7sI|[}+(;?ʡA2^c EU +qjG9TmEGA§0x%kk)8u3S/"-F $KQߑmg&}ڞZ {po@h+kj]G-4G8]8ݡƳI!~I]Dn;9 4/$9Q7FyLjQ^v_aǸ4*d5)e#l*MN8УeDZbg[Z22)V,dm{cxXK#ӦYB*A}%Z,΢ ^O9MnN0f6}ʥU22qIrȳIy7 㝫 Bj+~uTQ귐DZ B^pL:cM`Nn"m_W/[8ZrRcR:J)9MXk |&3m=8[͜:\r~@=J MJ>i-=qS!*]Fq*o6^OfA \؍^aA"Qb7w!CϘfs792" O;~z}rxv ғN[őkݿdIC@:*ٛعTP6nHcm,L`RSo .}8핑ݙ!ۭfEjH+IR \=5jS oUj2H+uM!Z(Ú5dx?;LxByhg@ :z {{G.f$ >@^uhĭd-ucյ1|SM6%Е*?GI_{K6h)<aAhg6#9\1|hAæ~9~eqjf 뽥|avL*$hd>cXܦS_K~>;;PmݚjZM|vsQU"]ş4`H T"V p}F  A o?3퇈8`)9t &F_]]/?5̰AW0}thۚ}7uA2֯ !# jHxTC~b p~:ʠZ?N&%(].`N8"t4;CzMos42sY,k ˆS yUSٓnwh$Жd+?X0UDžR'IoA>zi=0&l[#[O's^bq\Cu"NXV=CJDq]DU.Fo=wx]=m^2wO`+t1aJ}Ԇ:QcP1Ֆ*ۤ\ꤐTD3P5F-0t: d=}`h0*3&w+N?%ؓ$Ei6ҿ}N0H bT%!1-Xͺ|ɝ`'t"Iԑu@3[Vt{3[o֝^fAs 0Mk db_x@JY+6vQ˗䏴A2gF*4폥Q6+dK*ךU4 )UZ2i3N9*Ý 0[lP{P{c-G.o"ꭻakվ[2̢x&H I5> - +:&QzRQEB_Xo2%ޮ|oE;#טN6еrzgl8IRkotn|<ݾ;'jhi׭ϒ$tR)2yc1V\u.Wq D>)&,nuw'Rj9-f'AE0$r}{ ^g.a4cw5}fEp6@cvrRp 8ԯ.Pׇ_g&x4 -KJ|b ],@}\;+k 9f}ziL Tz(i|u?us*ZX:dž)X>Pyh{%Rcoy#:k 2}$S6fpS xsIĂ;}rPlp5`V%W[z2 &[ژ-]QNEpH I[:p层u<ь,9>i%ctJ$07quBPA6 nF|Fg>< 4E'UVO j&cゑCzG~ӗ3fY:jW;5ʪcpSSqTU NkZKUkJ>uWӦU-*&˞:͘I~m#>v1ЪXE ETh4F :0A8ap;C 6 7p,8BXr1̉aόq5nAh$*p#*.PyC20сLVһܓx"]ٮlSwgW*fĐ|UY!w`sv>Bq)DRRA[:&)ԩW[eu'*O ɒw<$eMva83kCITXG¾n0QWmԚe$t l%=P+jH.(Ѡi)e n( I5JM#KDui {O )~rI7@+?b%L3Y ٨TCDO!şh_XG69}gֶҽ)CITMUp{kSR?3h)7̔K\^tb!(vxܒ|]'3ޫJD=jTCΘCU^`,7Ts!l AON*jYUd GU-^!R= p /\xq:#$B헄PKby n#(9HTL+JP=<7 l0K~Z"5 3LLc,SN8(j@O/0K( `L?KrXSMyXU6)쐆"1i6YZw U%Sr1 )ȨH(z 9s[@WN*D81[7TZ}g~єkzap0b9ANEpwOJI+i+LK)`;,*$*%&Z.,p[xn)L7KtRrnrϊm\Q$SyV" KOf>r1-H{=l &;n\5%}Ӌ ;^=zHL9z^@џ l3KN_oF;ېO]~ay#~ڢETy]ANlc{Z1d/0l.=S1g3=8RD>\^EvL.2!KW+CDuwt ]]E]q(**tvnœ*FOV#7鶊[ L~o|vv?FUrp$tx6R%Na37u˛9u#hq:m?%[tCᗢ]2{UkGg|U赑@)J#{JRgKh̏O6֍KV7IpT?"]d$lMx u#^BsQ>lhR?몺bs^I<1|蚚_J2 :Y.0*{_˯1jineYi+'id[+дʕVQoװ9 6 F^_Y9t'& d}h6`hq=&8zGincU ŃMJO:NQ1,*h,ObA:[΁'e0(9&CV$}Եr/ ܼhl0q`a`&VgT;*Hv&C\+V#-xHxXkSЃ;5L잔,gR|JLZIA|} t$.Li'S6,!u(\fc`ݑC 'k4\KLoFY\X x p[ܝK|x{KAoz.Λж[zS=1͠ g!?pl\k}8=?Oy#^#-?Ylu~%Gz習IG}L:if]e6բ!{ -7twi~R/ _UՂV,m!-8&%CK}~ 5v6?!eu\f2F^.p*/lp;X > !47BxjI`O =~v^tv1_5U1FMO6c'1F˝& >51A-"I㢔cjUVAJFRrni 8c-9!u 4!GL\4AvX%Պ] utx?@\Z.rYݥOayvt1uWMR0`R!_ȷl : Z=sV+kNPiqY QSj5V ];-+"V\oWڪ%پ&w[d xuThXw[9jMƙbcKu~52>DNWi׈TLyMOyz72:-V(˖GFkS#tV6ƴYmKR+UmVT`BagpW*usIXX:JKPa S'H^K U14Z}`>zޮk|' >t\$Il9s+G"gcǂH|aacgI{1JwP,1SK.J8pn7 \vpeGQ쭺^Qp IÌ֯V`4T/zM5J#D4C vH{7#ف]=rh#/6ǠwpW >u hPџexAZ>4 ԧxA.>?rQY r Rf|>x뎼;7,%X _ u..?k!TU)=ꨑ"oLΞJ5t$C)-Aɏۮ7x*uhJ \NLG2[5I@[4Wp)'/a0U@R{9,i?H/Nu&dCxO?6숱uz`ρv2(KG@o 1  \r1Yx\b5 j!qϠ87 tP :?"PגN(?$[k7ry/!Lt-i`|il1=bloM4+mtC N˱x`e(#􀇌Mw~m3=AkTU,w;5. ܪV#kT 4 E;KqRtV`p7{jpw?'aVV;4e5X2xpSzGrHb@dd|7-vxB`ʲ9.ѸOj ei9,#}6Yd:mSi磎ӨM}AGx(Q5$n~NJ??8B)\kgxZa7J)Eng~`Qqp.+CNJ闘JZn:cTa؂SbL6kTctJ?C2 ?ӽ"43wԗm/z4i ̘FYv{P*.;#Yom'yY[s$y}B nyksZ дl8ixyY+Y+ MB|BJ.4%=6}G@Zx*reOOR"#7@6'6r#}A nD$`kQhu`s~&LMJEVsE߬ܰ`"#(HFJ^>F/1c%rγ^q)! 4 o2"!f ^S:vR5We\sd.m$2IPJlK>d{5rHRajoBFn'e*Eٚ".d;`/c(t΀I&"tu]Ook; ~{3xuɭAÞN4fo:hvje`z(J>n$WJۛ"@4*[l5ز$3GfZbԝب8 ҄D84l}<`In{ӱqRSJŜ9z {'!w<E#|zs0~Oԕx-f5fAf07]g3ލ@|HO4Xqfj@O⏡n>Wf*w^jA/EWT. W2k^`IF$Ԝ`ʽ 9 E?(Z!BA,Qk8N$eЮHaZ.]U~76JY-dT#ߪ[`<9gju ~]n~;wezi[/IwK[IvDwP^.22Fv9[ ,.V6ʋmY J^_{F;J]V_Ȏ頷p-j;; ˶), G &`xfrTFBԄ7DfFl/nIv#\k+uYnKݑkD?q{]lT18U?+:Cqڟ Iٻvfkmo+$dEj#܈؆czv~J5A 2Uoz1$tP.!|r ]KN )sAr~vH! +Ե4%}Wx' w Mk[S|oGRW#0q8E>ŵs];?hw;-2h!]6ME"3d8ɕRUQO;c;r<\svaųfjh>=F$]*hgE{_Oza K73UMX"bאݪ2Z,kF5LMOyF.-╯s!x…Ozۭk7>`M\fzoxO]N=jpZU˙vC}ߢl3YXd`w&E;d͒w;orPBfĽAC)r\/3k2Nm'IޤIѫO] jgT|7j`ތD)pPd!NF7_PrҡOiq:bߨիu;̘.38k(LhSI8"'E쬳ҍ7mB xg4*HU~FZsMĈ~_<Е>IݏIdȣ=fK379Ӊ?:K֐Mwꎀ4) G̍t;Хpp.mR.1GjCV=<,jס⠾["- j#,0pWJ+7A`"EK JEfuLkt3BTjW?d&{ǹ?,:_BOcЇU6` K( u,7NF&ƈfLJʎ͂jօsIo{7us4aQ7 ' vԟEEAqQ!=WKjLc?Vu%t+[P\t9)J1T8-Ҝe=W/th9 *aI/A3gvdO43hw6s,}R^GQO݌v[MZи:>5VZx)f*qLsά SvΠHr8~_x7*ܞN- {Eg?AAw~7J:H,E:;raQaj0 6[re`li5udT9LV;^&p!CC$s$1$W$8Ր.x&~JRсL /˵jsQ{G\ӫd6 %fdɬ sՓn 3̮VIjfY#T7shyҧl &KE.Ĵxf[4^|u{2,`5"2Swi\#X^<;y&F+xgwgdv 0o>',LpgƁORh3/tyӌ?ui%9'E ~JbҬfUQZQYuƝ"I?w66Q86'lk?IIN/aEǃq٦ӷ΄Xa@ώb׷@diE6伞%(ŝiZ^xkߋ 5ӜyCowUEtILT_cTfzLчLsi!\JbL mӚڠlo uLl#g2^X뉅vU #).HG>"XP~M7I"٘|Hԭ Inp[)9{7^<uViM9"gx{ZN~zV+>HXI[ -,ovpJȍrv3ɬYrLE%wނ ]cPp4},ŵc~]g m$I9Cg'$cPqOpad/K;տNҰ\PWǷkB~A= z},HAׯ}RA;aĻ޺F Ɩ- dPw|@lqYЪwkkdK^4 B+HNO9VF[ldVHR} g{-H|z9DPj9P>eu~h6Pji7L3ɩUCTukڈq8l':C^Rs,g3IN#df鬗":&."qF5WQhں2m6ؿ[ve6Y+6^nO k3;9tIJgH[FjyFKo8D)" <(}b;N*EYF=-2χ6Ϟ{d}%IOq5!U{ujǯ2 hL.35HZ&&s~.+['4$r^t}}0 7U$2̥2a2@xlH$`XkwW1ū6o_OJchZ孁j{U:Ui*57ǪUP8~-iRDoӆxs(,hc#F@{#Pb2)#Pm!Fg9yO%)-dXcfGO4&JQ/QET+ƈ}Rm֐x sO)@ :ú4 h\sFq3m /7M?4ՔF z1I>`HJQLptvX9}GVWGI693,h@揜 ^,:,vZŵ&1 v${aHENoz0){#Ά=$`@lʢ\Rn=ǵ[fotI{{w#b||p 2tNַ Rxv$?57O*j9H FTZտ oP$F5Zɔ +me(B9aɄ~7^C ݝĻEw3~ew7FZ60/U4\';6:I f|?YK%Es p%-Y;:4%KRXʈN5l jTbxV}ivSfvE S-Eg(W~A>vU tϩ{`QěOYrv7G1\=!4ds\H^iSZLZ\3 b]oɦ_+u@ac8 %N&̶z]Qtc {{d l[ƙ^XjT&=k2*-|T0,LA[G{c}&@IkuuG$T'y|#ܤ1Y0)f@>}1"]iۮK$Go_4h F3XŽ\^9 RDyES?Djfme`VT|I7&ƦeE (1_\Tj-ߒqT23;ZkM"8aπP}.~VIkVfY OS|o-CW`Iv]롞 4;jdWTMAc^{.^_Arhg/BHKZk/lޯ;_֋ CC:עZ hrYOI6uKH^)2lL&,w89(f.FL{gš%YbH ڎ>ߛI{jof-:{^|cF'ӵNTBXHˏEZ'CKT:ؠ-Eڞ0ahTcA*~DtVEqL`*4۷os5h`I ";Z"^HV6%VnVbw96;}^ZAxlzN -N|`EoLX}I!_jd 葖RO7آ&@e#spX[*ל(x]MRkq~zuxo'}p_cxW2b se>ef 3t[}P\ r9C]/npZuS#dw2aJ}?!h)yFMCS^B2›HXhq[&lôJ*HuED<-o,j-ɥoX7\- z:8:$o ;3YX^Y"UqN _$j @[CaG'4<#~QiN|yE뛍ؗ\62y8ĚC'TCdfMzK݆6'(UпiZ`C:#h QN> U%1ejz-uoN=:eԏ3XFhSJ^(pTW{ @. xKOރCz< ;횪C:mUUo*uZ5ǪҧO8CԷ?i\J3>rBM HUsz>Aw9dG796-ecFRjT RX3vUyo~;/ 'Q~Wb,olxSz$Mf_֨V 4Y:pL8ǂ։ӸM$Y5)<+׳^j U4&ܝƳNe4ӼN+%JW\!uhJ@x/t׾:Z'b%龚=V { .F8'+&\rtrwzMنU"=r"~w pj_h4ȥ`&?x. {%.Fd绐x<(k%hئ;ֳ.oh$HHJjϧ- H:I3fŦXܮyhMM%>Hvr5uAh. 9!i w:q쓅}G6Ck.NW7 [bqP/pamϟ{gXCznl # 6[w?; Id.yof|ȮKFLDR]ɔ8 SFJ& I{;"+4_>oG $Ye銀JЇOD,&;afY*զƙKƝS;,;@;ΦH9^v]sǃjH(۠S\[8w#]?^ܝk!(F;$æ,Wvc2^C>̝6pXm5 X0|v8HEi)Ώ J E ?R>U>Tnc~5CvvKC֧'w9Ha;8{zAH3@󓽥y db3,}oJL$O{P*51=5r#RmooZ_m3!kq#Mú{7Нqo /J%\! K~}'Yq)OrC;6BUb͖I#UC,;[_I,`ҖAx0sC* (!ɬ P}55+D''Ҙ!lo(eȵ-M%h(iCpى VO6}K]ہFFVZ!A]ǃaTK7́OLh\~z0KDZj2-`FI)43`Vrrf%nn_7_$4Zfa3gCȥw܋[]ivvCo޾kRJ㾅 |k&ͅ^!HoMl=;W 6Umc"! b)q2YmCiޡ[W؁ 62  ]Iԛ9J$ݳh YJ[ !;ZU҄EsD̅^@!^sdd:AE ; ͷ;V>tkjmҰ#UUTWHږvM3y5WUb0,$S϶ uҎl)%&GA6^!bɲl*'(~e-wzVp쨆j;l#ms]8 mtɠ&i}e@o++~`V:Ay2FITdݕЇwf L%QqGS0=X -.zf7թ :/%[QIݢSyѾAqc{ؙ#ğ}MAwtfݙgns|q >^2^U(4:Vc&@+ 8 yDtjNUkڣE.yZ͡jUuj=.܈jz ♹Ӻ^B́/.ˆ^t;I/]E_c!tIew~'͑%U㫙rז&$^~ɾE.S;axHS#?M\Xeo$""^x0鉯g~狷l/OD6 _lFY8ziЯ㐮;pB;P2f -)cYY},8NTCQq LSv>L۽Y 1I-YhBNZ.eP1E6L}0 M{kja|{pg4aЍ6 3SK_<:g4-Pa? &Z&=i1Zu FӞ AJ$C PAl|e92+ɍFL $kS.tuNT/1W+A͖~0WGI4\f}N!\-2 y:`K3 k6Q}1J'GC5cm:<LM%}Ld~ @iU:jn7j&R!Ϝ`u>PYb1a$ґӊf軜so8Gp-h {%y =+4yLJ,}ֽeV{Wj~ϐWA)ś~|+F^?TlJG]tl6*Xx苯79{):u&ilRƒ$9IbJV>9u[{ G_ȚwINFvae:K:ɶ2&^3ᾲ3xդ}v֎brTO(~ɽOQM>[3n7oh@ɳ}O vއ>ժ] S?:^`BߓN}Eׇ:-7fѫv{DFUZfLZA}cX/jO S8,\ۭ4OG c\dy;>={vT/d'&gO=4++ )//F?AF#:g' LWNFrC?zĶ]zAuh\dxLHץ=\P4\X=o渓wLٓtN>mW9}C& Ti: {Ʀ3I­o8FXfSC$i CihpEU5sEVfATF J%lR`eRڒaKTR(snncq Ȟnht+=u0&Z\~} )K-/`dDᠻ#7jzõ[׎/[k_X+/u&wwd{xg,Dn+~|or[80}#2 5oY]bJ+૏>}!uB!W̗ʽ x<[ud5&m1a{jH(uHFWgfCt]{` Ǩ:Q|(cYR տtI3ɤ݆FޏlN4aF#7]fɢKz$$T@J'/:mWBKN(QQ1$yyGdL^_r$wS.Cr*rk^pOVl2+'}ALHC&a.Eyβjؓps\WN:d5-^؝5{.\FQ2f6U3pFe^LAs .vi|qh೼SQpUX;ɑի?Z9|E6Vy \yEEC/\huOO.X;4H\8wQBta%V>%405 8D'Zbwb\%4`y߅ N-lXa7 g&ie{XltƼ|*_5Vj44!fV^Ma?tw#.Pc+D&&g9I3QM/ݣcj4!aYMSj06 4uJ|t u5va8e6kyI[ Q'Dzuw %/{V%}R1Le,(G}C ,Q;L20u Аt)m]Аq`+M-b EaB'mЭ6K5XgV .{oZh@J:@1o$3MRnn}\:.EsL(QnI}xxa@AqƸl'LGY9sw6 `I1WOjq\^$!]A~SJ`ZGSlaeS vOdn:8KwIp .:ot K{0;Xf|ؗxkC{AUuZбn\@"%}w45c(.?IsmjҶeԲեxw{HEz3K`IgU-ۥAc5@k&*3tTmUTH.4gw0ʖ,RSwɄwkRjV07Λ3IЬZX0Я+eF=zqc8eɒOr QI {ѱnr6>%CȖ)Jm C: h4|Sa"J?hx@u<-lojZ UO'Qb-$JB(K㇊uUX3L ?t{d+tufrg/B׷(1ut"9W v// $@,aדV!T.k1))y9Xs1\^Y-wM @ARPEw{ af-+{6Y'!Lʡӄunxԍh6wQ"x] }KX3cidó?)`35àLpPlH<7.KξTl Ҙ05?L\>#9 Q7O]$؈pq乺%\bt13D^N ,H㥋"<Pz=2L&HNCɍeoG/Z,X!hS3 bW;1ˏ؆Ǟ@zŀ\:.MYEbdNa#jiIRXʫ[.Đ^F! ٠+Ž FzQuoqoo:2loa!@\Z3RxfjjA S3ltD˧,7AVXzWr\L/SJtM ԻM@͍H̓:O(:8rUAؤ9>i- \`ӳ΁Nw#' ^_Bw"7CK]9xL&Ӂڅkve"碲C!ϓVEjވ ޭY,U%zO ]>viNPj`코ޠ2|ueNRyl7܎sG[ƸQY$/%OV^7ͯ(=ôDLcd8Û69Bp_? LILy9]s4؄'A=1] 9Ao<cO̧WIL 'QUT_Ksn Xz˘1A,Vēnnx%j`͙t Zy ." ȼ,9zQq|~[]䓝ӛKH ?>.{ACկ IYCհ=ծHU 7vA@!dYA80p8J 5q֓Dr61Vl>`4 $BWJޗ\\g"oFUZR+_kkMf E*IEͥwבc9ka˃%َ,k`údwjxCn*q%._8qL!z*_ta+aRQp;PUhU{!h^>k<~@y"ʤ9a8E`H.6uOҿT8T0=?j7}( ME)gdJk$nA mɄchwAiǓޱS D dV Q 'X,a>;:ka:B G)BÍ4\yāFǾZUfլWڌs`m%9H88ZўɁ 6Bn\[N#!L-$Vz) lOtPݣNEܻB.n{8[3%/E%:B^ 0c~‡4 %^IlIn}={'I}( -Ga nKN-==>Iq3#ӆnXNzM>L/G݇l|0=g#MZOoUTрVjrU&~(JgzC `kJPѝ.KQ ׇ/a??3фw6&LOr*KR1tjy{-K_r'r+B mOũBH=sKHQHJ;zERZٜ CӨbf/t%Z09GlV)HVܨUW*>iח kxuɳX7oLAzs1vL*?6rsԮ'@H!zqL34 i_PtnkI*d6!8fs$E$c_N y<d#礆8t!Ķ%$g `ޯ9Y oC X& 98=K}9lXce%hKL;v%ϣa4vGC*ΝG+};B2ʠ{ePp 6)RC4n%k$rݐzXX{5+}vLdKc)o![-a #dW.ȵ&!z0#C~4}S;a@i.@nٞužߍe iH%Qx;'{Z\d)= Pt3 tJ^Yi2ޖГJ1+5A=bqW6yNvNiL/G*y$[iL3XsiPݬ6[^S 5+U:e2[ 2jF4+ pD~۹ki0J{iN3兩qq˸?tNliC7?/7pȜHG /GmoƓ}|6ҹ[ra_} dxJ* 9xv _V=;$"h=)Vo;u7Dq)Nb!J]DTֱⰒ{$˙^u, * ҔۥU/&R|@ohݹ:ibKHO&R9w~{+dCְ:.7kjlkjIhA򛖃`jU5 { g("R5ebiPœgT- p:'@Q:0WPʰRԊF p kbDox͕n.m_' 78 U׽Qc-C_$jDO8Lґ} ?]N+!IW'xlhdů7~\$lUzr;k>M3h3@qY߹$|pw$@"w]z[#! 5 )kc3gIWPoWA~\w暁(ѝ=bO1{0-G)ڽ.krM5薫]seHF#"ڋl2 AܲVo0RqLZu5t^95"fM3N9Kѯt|&[8ǀz;*U6f+frϱ!fC)Q7 |-|_h;I(䎒+vrXD[^%KQ}V2stꂜYa_]>v[0aql`g/oˈmZ$FYvۛXb2y0ރE}M4Ô`9OC-ĦBl ul-˵+\Ҽ9U"5lIt\M*eIZy\oc5TݮUTGnd|r.CFC S2r!"=bl Gi)to hkqBx9ǂ n jHF-pԸd%"k2#gkӎgHx_zڔz֟k:d, {+vsu k+fN'YzhÍ[=$7XOr'DL ۶&M3VJ4\ HYK7>WTjW|G搿|9˂:2Dv+ycNVOnߘ}x̚t vERƆlXyv=;~۾zg1/2 HZѮl &4- I9C[k -lNuW9'78T{N׍5ZB\Vpc]2(م5#1jpreUgR|1> !ueӼ]*!%]7$)'9hܞ2͐#&7PɋL FOp&gڸ)%Sg ]c?q0s4%d!lO&?ϲ(#0+,[f0B'0\B[r`+ i -HW>v1ظH&G'} Rg7984sCvoIA* ~)I4%$AjFZV]jmH; mxp$a^g-^0%V<#۔tJrJ0KRRҴA3JdNHS2;E_iåByCw7GSml@쟧2>)m(K9L4pwNa&[1ȡ rSnסF?87_1M]8|r/?vcd/Ϧwe(N*/s=+-`D*'xG_ge` 4uIt--YO5ʝ3V\/. 'z<#ų 3^{E>%&pkɫIuWZPs}X|rYDX0#i7xo,7FHg`hQ1;80hOYo} -L&bKS%t*I&S߿[m.՛p0!P>؝ 2ϻI+];.L<_[a<ǰՑ>KAuZ6Hiˋf?'{;`ғ#f5Uӈ5Ė<z }HO:_QhIY'kؐF/3Yϲ%1w32vZ;؉"S-r%xs@6~ҘЈe2\ܵ v¬ nUQKո1Tn%m*[.WskW{.0#Ej ^Z4pɢMPÝ0rR-7'z;'M?kGV&.OoXvll28/}uAGO]v?UKR04ޱwpGG6kDMA[rxWk؀gJerrZSk6F4t +@+jmUo&;u3NaMpxu)FĦYP7 'ONi7QT>vASX-W-3-*.6t[#jѬt 'kTqemi~f,{27opCC1{v|&OfTffk~sGGt~\ﱡ Y3sz=fAYJgMvs;zHxLn@؍bgX~pP*vR ƒ="t̅z$?< )v4C5.96c55R *ɫP3+{Gbm}ykʓlx`=%]'q(V ͑A{z/irGSkj}һ&o@?!_ĵ,.助ܹ"o5/:wp?OU-z)[oks$ tnB+?4[&~?:?}GZ8Y_f'Z-:#3Ki_Chc.\98/ z+mⵃr" si/y$?Zrqr;}_FowfVs0=pɑQ >K)X;c\@n&+a"|Y4_s#i,ƥCn{$T"U71-=]eز.ry2#i%ԆFeg c]6~bQ*|..({f\m?&#Cڗ̷orq=qKqاq4N*#\@eOŅYTLyן&MbD aAe / Xr0K΃XDᖛ{4#-]ɬ391'gd|UoHktYD..y(>4+B}J|k]d3E zYSg2zItu1{ӉD4}'ܞΦ{mV.PVrETӁqW:a5(1Is>CRd no1if5<ABպHo1?G}z+t=u>Lg{Efhh7G": 7zOGh#AρM\1hƗB'H90N'`ӓs%p d +n#hq[\-7I;a4va5◆9w/43=nbX :I\xK}_X_M\^RF$$"$D*9H$I('0B3Y)jLINB;QengܜV `EodN̜#u{)krȂwyJSi?8xGV ,'ZPcܤ]4ؽ\GzVi5#P =~еn̖l'Wٍv4 .%~Y!I#@ɫ\un ˕rn~}OYVDa !H3ٚBINur.K~[: m@)Bz9HOWn<츀ؖN|?m]'wL ~ y3u9=G;};x=Eߋy1qX|r6ǰҐEJ+ )qFj"v|[zs'[E! 5\MqNc6 .vy1tgrlHX4<"aH?0'4;p}Ҿ3144NMYМ<}To6L؝(} bDMr_GzKZKwX{hIKp* J]^~ Ø;?4k8ynktv#rľKǗvL~9*>I/% wOK|!ɴ!24+.;Sq4 ȽVI.A _/p(%4SM6w?Yf' UɱK⬻%^t[z,:Ls?VŀMSttiha\4dל\s:3xe wCbf8=!.( ~YxvO{]~H{mc˺ ŧU򈤨^Zn˒lkek[r^Ϊ5X Hu?m_z㋈91$Rf.aI{̘1҉«{!5x0 c3zp  49Ěj NaJ:LI 79Z;?1H'wt@d&1dYx*dgx\K0n {'$R]mV;.Y2,t[W8#(/fW>tg;]*] :EGoL`³7:Z=rԟD95:~NW(2.:/LM99FC 4_󙓏;z.vXRlL3'O5q}ܛ'Uwhb로UKu ` #? \_ TsR8UYB;cgQ5b \ǘu~\ȸaxMI? Ga07qGqqE՟JrHV3A:ô,U+n s|ee8Ua tk5KGiջV'{b a*׳G1xQ# u/Hbi*޷DkmuWnWJUceRNh%@8Y0X p`tnjPSGA赦Ax[ $1w6\ Jf<+cDXM-ˉ8a=bQcNc %8T7RcTG C3߳[`ܝ"1a7;!o%h iscUP[\oغDQdݚ)"dD+a/%[8`s1s ڛgN 7Z%Hf!+`Jo"~$ƥs; Ouђ5!oֶ@;z}|tO}鞬| ,U[9xq2\Mj_K:AzaK1Lo|&$׃¯*aK3I|OD@S5{ѓp9fXBD{Mֵ{O ,=^yDNM\Ѣfiϑz#쏨+{ЛmE*'>Xl{s7UóV- 2Q|1ɸ =B$lpi.Tow ۱vݰn{ 0 xa<CfX%a&tWx,LDTA,]cLt0pO_Lj8 s؉~<9dS9n6P/x&OFa y7v҂ ;ӄ QS5? zu6Ej;4:W/9X<Jtg3T& SΎ"hm}nE T^:tN]<(!b5gIfVUVBP<>8dnϫv߯߂UձwJŨ3݇(b_D4\mV>`Q*:ջփ=j긨9 Thx6u5dt2K1Ա*0n]CYobBe=I*:Ӌ2Inj 5SD#5Jfn,)1;/!#Wx0}]j0V !>~~G"_/k 6SpTA[q:=9ZuGF \^\M9e-D pm#Z Y;Ră"GDuEz&dj,ԵV0>__؍6IE\`<3~T z?pðũHQ:.b՚}H~*'8*b+%OزщC0VO4D_~ F6lQTkx:D{n~*ηp%gӁ܇/\P|Z-7W:Ck_cX4fxT孼,2aOE, 0;4 TC?85ڸK}E/a_Ƃ?pO')=W}5(#Ҥ759f}4l, 368&jK+OUgp9aLNÞnԌv&]:s*!pCFm\<, rtVJCAk|NYffA%FUcy@إڒ%tWRW.]|CūD2Tw3N @UypFjKt }|bzuYuS%N7Q8L-0l=I44w\1v 'DdjK ُe+@mUV{_ޡ-cnۧdD߮^7VAq؈ݎipұzOU֖]d5 ^ XM3 c*ZqGtT!cژvW}2יw'FNTqUk@P}&mwhQYd/!fk9YDtBj`c^u?rmTOKPXd|tJVv@OoqKQ o/iy+AHP3&T1K]j$ Q+_¨vWph<ϗzZt[¬QcH#C$]9'LJ%P[Z  !߼D!Q'vx .) 켆U!Xg$ݹJc脡Q)u ʙBTgeZĉG)Qctv jaqɊUWd{hxI{VcW%%4 dɻ̏4AQ}Cpe@|Y$/"#wG3,OrҡzRk%Ꮌ9 9C S_I Hwa?ƣ̈XS- 9DA+6re&& թqjN|%8Գ|Hd?:=I)l$YOpf@L5Uw&AU$)4;{|n@$LXtom;;=<^a'N…BFgT1zm^AF+ך8 t9zIGC?9tЛ(hHf}ln NJ(|.AڣRNG ߇HeS׍+z`Io~!8 h<^/2sh@CqLBT, QY{dM8 K:Fubƀ_h!]=s =4˂vNY@@%/[X!vіYA?H(a ;君FA"cHd(̬B(r(<,w81׫L2"B葌e>f 5b/5D4"EeV0]9,!cyF&x t8sd!P h$:ϗ|LՔv++XV<ׇ2# ޕq\ i'U@6>tUbC&fzj{:0 []!gA&'? 5FM[B4 - b4[ VOoƢ}kg|/,W0KZzճNrO@|_ڱfnptMD% հ>C~^_:[#}_>+~,B;AN25PqGB@خ|J S*FiI>[[k|w}1鈼^zj7bc=r{ftHi{3?CϽ8z}zwv>݇q cG`0WVOW23s uzmT۽tebԧY}.448JORNvcڢ_񷥭dc"c(41Ć&+pPck+XWR!pB5jp(A TONBz ^=Dq e5m,8[tG}4vEC2M!!qA^4z:(=?Qy?ç]"onIdmCyH0̘/LWƱϲ$ Q8Z bAOZĿ5NtwZϞmؿV Q~Xf?2JnC7Jr#? AԧYonp{ wZǓ`@+Jط9?f?#W5ҫ1v{p0qn(Ss*Ys=ҖaJ +j{+H*I Pl./Qg~?&I l $^>M4X^myǁynv6`&=RBocZGѿ?hz~̕R 9+70 .m>3 p95JZ@,Y*rf=OQybAϸƮ V[bܔ3$OEs{om=]=өW⬐<ѕTQVjZ *RF\EIvcg ^,mE_a ƣaݶmoln>1aY<}!oytgh(UOδB] eT{Ҡo5dnj:%&9[ '\!\ǦD)4"6Al*!"9eUk䔝=(R>Bv6C"P^@ӅcЂfhR JfeیDY1&Вv׍'C)r{(:ư‰͋o1ñyῦZc2Oǒ,ħx=kd- +,,wMi8Pz'ʵ>r4#B gY[Mz,&9nRDQ=+yL+9F_liM0 GW7Z sVBJ6(3b=ݫHc_1_"0NGe/ X祉p{ٍ q8Z~.9k7DZzPو6 nPl~  YvO"ߋ۱hN-tZ)ڟ q녱0_yRc90+r@"){OV3W: `&|90#ճdž@O|9T9+3WCϿ|js{%-{g] 4!2FYh}-tH`DjP T^7cT,%S,@bp1֚wik*Zpr<ҢkId b1!5QCO!#7p%3<1$"j]ȱy1b?PjXok F|$KcfDa JTf1$]j2s"Xbk e .{ ],F[ XĄQ<)J"aaX"Պ5f¢ |w w_R:}4uffc8^柮Դm m8[alN< yhD;n@TI8pl|L-Ԝ:`Ab+$"9Hewq1 Z$m AdA@=83Z5|TÕD5=\Q>Oehù *WH{\ӻwktlDx0ly+AuMZwfCfiWP;Rvㇳ6@%9^!.:IYS^x}v}KV՟+a:Q N@5[?ޙ6S1kA`SH^B ƑB:BnJb5KY|u@@[{5 |x惡gu:TwmaLSVvFdп1Jҫ0%l~M9qՃGLЛnnpsH&g#Ոu;)٬߾ .qqƛ,Ba0hӝ-$90|﫨amᾈAFLsz:s()g J5 C=laeUu= &gHvyCbdT,513<z( A)?\D tc hi9GaBRNK*);3v%񨠞f t74 'b#)xNPpd`vrg_dx蝢w'qIPIZHivM $#vKTAOJ\%r9}EW xuumFA&dyp߈}w?gW1G{l/U]/; #'YѤ|HZ~Y9q4%[b*4l38m{VEVVem ї声8=7'7-ݥ\NKǭ|^0*. H󖆸a &+ia_6cw%O5KigCw w&&T֘dk4oܥF啯xVBVy 1FI؃Vr!xN00u?˒:ohܖSG1GBuw\h4w˃3I ՅK>NFUAmj8rt"w\ޞ3SJRIJ_eHyѿٯ$[Iއ\Ȫ7!Ңw |SUk{Xbbm?;tױG(n R+.1\==8O =EYO:݃Nh8`cY^~nvai,hXʷ?<`F`x:}6g[D?̢m?_4;6+ ߛ$h7#{XNtn2?^&js&G2`_3]sׯ__{C;; 8{ӿG;ǃ?VV}“3S E:+VٖNX$D{cy7J`HRL]lJS*!PHc 5BiحS+ojnK0SLꪝʕx%+qjfvtts^W\c*QK\w ܌NI-wBYcO ˼񯃗D0bfI- YZZ6,UKEn=$4 *k,e͏OX6/Ŭ;p+OF^O9v9B gMkA,C_W5ɍf)q:y⯉=jlW|O| oH-I: +EB(:$#)Cj^lYb NzTĨÖwbFQ&pB( Ϡ dK0o;Xy:qz=')l$E~9 9^QVL "dAo-h)FׅvO GjNBB(Iʫs9H_rܴ#5y+?]ُ o}rAi89{1@@Ut>D3jέ:f