<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/kernel/debug, branch v5.10.258</title>
<subtitle>Clone of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git</subtitle>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/'/>
<entry>
<title>kdb: Do not assume write() callback available</title>
<updated>2025-03-13T11:47:22+00:00</updated>
<author>
<name>John Ogness</name>
<email>john.ogness@linutronix.de</email>
</author>
<published>2023-07-17T19:46:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=392d2826c5d7f4578619346a10a1f293ceea7827'/>
<id>392d2826c5d7f4578619346a10a1f293ceea7827</id>
<content type='text'>
commit 6d3e0d8cc63221dec670d0ee92ac57961581e975 upstream.

It is allowed for consoles to not provide a write() callback. For
example ttynull does this.

Check if a write() callback is available before using it.

Signed-off-by: John Ogness &lt;john.ogness@linutronix.de&gt;
Reviewed-by: Petr Mladek &lt;pmladek@suse.com&gt;
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Acked-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Reviewed-by: Sergey Senozhatsky &lt;senozhatsky@chromium.org&gt;
Signed-off-by: Petr Mladek &lt;pmladek@suse.com&gt;
Link: https://lore.kernel.org/r/20230717194607.145135-2-john.ogness@linutronix.de
Cc: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6d3e0d8cc63221dec670d0ee92ac57961581e975 upstream.

It is allowed for consoles to not provide a write() callback. For
example ttynull does this.

Check if a write() callback is available before using it.

Signed-off-by: John Ogness &lt;john.ogness@linutronix.de&gt;
Reviewed-by: Petr Mladek &lt;pmladek@suse.com&gt;
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Acked-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Reviewed-by: Sergey Senozhatsky &lt;senozhatsky@chromium.org&gt;
Signed-off-by: Petr Mladek &lt;pmladek@suse.com&gt;
Link: https://lore.kernel.org/r/20230717194607.145135-2-john.ogness@linutronix.de
Cc: Brian Norris &lt;briannorris@chromium.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Use the passed prompt in kdb_position_cursor()</title>
<updated>2024-08-19T03:41:03+00:00</updated>
<author>
<name>Douglas Anderson</name>
<email>dianders@chromium.org</email>
</author>
<published>2024-05-28T14:11:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=1c089efe763df98f54cb14e9410c5440f7db8443'/>
<id>1c089efe763df98f54cb14e9410c5440f7db8443</id>
<content type='text'>
[ Upstream commit e2e821095949cde46256034975a90f88626a2a73 ]

The function kdb_position_cursor() takes in a "prompt" parameter but
never uses it. This doesn't _really_ matter since all current callers
of the function pass the same value and it's a global variable, but
it's a bit ugly. Let's clean it up.

Found by code inspection. This patch is expected to functionally be a
no-op.

Fixes: 09b35989421d ("kdb: Use format-strings rather than '\0' injection in kdb_read()")
Signed-off-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20240528071144.1.I0feb49839c6b6f4f2c4bf34764f5e95de3f55a66@changeid
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit e2e821095949cde46256034975a90f88626a2a73 ]

The function kdb_position_cursor() takes in a "prompt" parameter but
never uses it. This doesn't _really_ matter since all current callers
of the function pass the same value and it's a global variable, but
it's a bit ugly. Let's clean it up.

Found by code inspection. This patch is expected to functionally be a
no-op.

Fixes: 09b35989421d ("kdb: Use format-strings rather than '\0' injection in kdb_read()")
Signed-off-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20240528071144.1.I0feb49839c6b6f4f2c4bf34764f5e95de3f55a66@changeid
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: address -Wformat-security warnings</title>
<updated>2024-08-19T03:41:03+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2024-05-28T12:11:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=f0ad62559f05e36d08309d80d0a86155193bb16e'/>
<id>f0ad62559f05e36d08309d80d0a86155193bb16e</id>
<content type='text'>
[ Upstream commit 70867efacf4370b6c7cdfc7a5b11300e9ef7de64 ]

When -Wformat-security is not disabled, using a string pointer
as a format causes a warning:

kernel/debug/kdb/kdb_io.c: In function 'kdb_read':
kernel/debug/kdb/kdb_io.c:365:36: error: format not a string literal and no format arguments [-Werror=format-security]
  365 |                         kdb_printf(kdb_prompt_str);
      |                                    ^~~~~~~~~~~~~~
kernel/debug/kdb/kdb_io.c: In function 'kdb_getstr':
kernel/debug/kdb/kdb_io.c:456:20: error: format not a string literal and no format arguments [-Werror=format-security]
  456 |         kdb_printf(kdb_prompt_str);
      |                    ^~~~~~~~~~~~~~

Use an explcit "%s" format instead.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Fixes: 5d5314d6795f ("kdb: core for kgdb back end (1 of 2)")
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20240528121154.3662553-1-arnd@kernel.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 70867efacf4370b6c7cdfc7a5b11300e9ef7de64 ]

When -Wformat-security is not disabled, using a string pointer
as a format causes a warning:

kernel/debug/kdb/kdb_io.c: In function 'kdb_read':
kernel/debug/kdb/kdb_io.c:365:36: error: format not a string literal and no format arguments [-Werror=format-security]
  365 |                         kdb_printf(kdb_prompt_str);
      |                                    ^~~~~~~~~~~~~~
kernel/debug/kdb/kdb_io.c: In function 'kdb_getstr':
kernel/debug/kdb/kdb_io.c:456:20: error: format not a string literal and no format arguments [-Werror=format-security]
  456 |         kdb_printf(kdb_prompt_str);
      |                    ^~~~~~~~~~~~~~

Use an explcit "%s" format instead.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Fixes: 5d5314d6795f ("kdb: core for kgdb back end (1 of 2)")
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20240528121154.3662553-1-arnd@kernel.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Use format-specifiers rather than memset() for padding in kdb_read()</title>
<updated>2024-06-16T11:32:35+00:00</updated>
<author>
<name>Daniel Thompson</name>
<email>daniel.thompson@linaro.org</email>
</author>
<published>2024-04-24T14:03:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=51664ef6ac84219d2606bdbfb065aa03e5a8bffa'/>
<id>51664ef6ac84219d2606bdbfb065aa03e5a8bffa</id>
<content type='text'>
commit c9b51ddb66b1d96e4d364c088da0f1dfb004c574 upstream.

Currently when the current line should be removed from the display
kdb_read() uses memset() to fill a temporary buffer with spaces.
The problem is not that this could be trivially implemented using a
format string rather than open coding it. The real problem is that
it is possible, on systems with a long kdb_prompt_str, to write past
the end of the tmpbuffer.

Happily, as mentioned above, this can be trivially implemented using a
format string. Make it so!

Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-5-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c9b51ddb66b1d96e4d364c088da0f1dfb004c574 upstream.

Currently when the current line should be removed from the display
kdb_read() uses memset() to fill a temporary buffer with spaces.
The problem is not that this could be trivially implemented using a
format string rather than open coding it. The real problem is that
it is possible, on systems with a long kdb_prompt_str, to write past
the end of the tmpbuffer.

Happily, as mentioned above, this can be trivially implemented using a
format string. Make it so!

Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-5-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Merge identical case statements in kdb_read()</title>
<updated>2024-06-16T11:32:35+00:00</updated>
<author>
<name>Daniel Thompson</name>
<email>daniel.thompson@linaro.org</email>
</author>
<published>2024-04-24T14:03:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=e3d11ff45fde8068777d1122dc424becfeb992fa'/>
<id>e3d11ff45fde8068777d1122dc424becfeb992fa</id>
<content type='text'>
commit 6244917f377bf64719551b58592a02a0336a7439 upstream.

The code that handles case 14 (down) and case 16 (up) has been copy and
pasted despite being byte-for-byte identical. Combine them.

Cc: stable@vger.kernel.org # Not a bug fix but it is needed for later bug fixes
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-4-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6244917f377bf64719551b58592a02a0336a7439 upstream.

The code that handles case 14 (down) and case 16 (up) has been copy and
pasted despite being byte-for-byte identical. Combine them.

Cc: stable@vger.kernel.org # Not a bug fix but it is needed for later bug fixes
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-4-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Fix console handling when editing and tab-completing commands</title>
<updated>2024-06-16T11:32:35+00:00</updated>
<author>
<name>Daniel Thompson</name>
<email>daniel.thompson@linaro.org</email>
</author>
<published>2024-04-24T14:03:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=2b5e1534dfc79ef68fa5fddb0a405dfa3fe8af89'/>
<id>2b5e1534dfc79ef68fa5fddb0a405dfa3fe8af89</id>
<content type='text'>
commit db2f9c7dc29114f531df4a425d0867d01e1f1e28 upstream.

Currently, if the cursor position is not at the end of the command buffer
and the user uses the Tab-complete functions, then the console does not
leave the cursor in the correct position.

For example consider the following buffer with the cursor positioned
at the ^:

md kdb_pro 10
          ^

Pressing tab should result in:

md kdb_prompt_str 10
                 ^

However this does not happen. Instead the cursor is placed at the end
(after then 10) and further cursor movement redraws incorrectly. The
same problem exists when we double-Tab but in a different part of the
code.

Fix this by sending a carriage return and then redisplaying the text to
the left of the cursor.

Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-3-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit db2f9c7dc29114f531df4a425d0867d01e1f1e28 upstream.

Currently, if the cursor position is not at the end of the command buffer
and the user uses the Tab-complete functions, then the console does not
leave the cursor in the correct position.

For example consider the following buffer with the cursor positioned
at the ^:

md kdb_pro 10
          ^

Pressing tab should result in:

md kdb_prompt_str 10
                 ^

However this does not happen. Instead the cursor is placed at the end
(after then 10) and further cursor movement redraws incorrectly. The
same problem exists when we double-Tab but in a different part of the
code.

Fix this by sending a carriage return and then redisplaying the text to
the left of the cursor.

Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-3-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Use format-strings rather than '\0' injection in kdb_read()</title>
<updated>2024-06-16T11:32:35+00:00</updated>
<author>
<name>Daniel Thompson</name>
<email>daniel.thompson@linaro.org</email>
</author>
<published>2024-04-24T14:03:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=7c19e28f3a8148a44f306a38e2768be494c8de57'/>
<id>7c19e28f3a8148a44f306a38e2768be494c8de57</id>
<content type='text'>
commit 09b35989421dfd5573f0b4683c7700a7483c71f9 upstream.

Currently when kdb_read() needs to reposition the cursor it uses copy and
paste code that works by injecting an '\0' at the cursor position before
delivering a carriage-return and reprinting the line (which stops at the
'\0').

Tidy up the code by hoisting the copy and paste code into an appropriately
named function. Additionally let's replace the '\0' injection with a
proper field width parameter so that the string will be abridged during
formatting instead.

Cc: stable@vger.kernel.org # Not a bug fix but it is needed for later bug fixes
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-2-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 09b35989421dfd5573f0b4683c7700a7483c71f9 upstream.

Currently when kdb_read() needs to reposition the cursor it uses copy and
paste code that works by injecting an '\0' at the cursor position before
delivering a carriage-return and reprinting the line (which stops at the
'\0').

Tidy up the code by hoisting the copy and paste code into an appropriately
named function. Additionally let's replace the '\0' injection with a
proper field width parameter so that the string will be abridged during
formatting instead.

Cc: stable@vger.kernel.org # Not a bug fix but it is needed for later bug fixes
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-2-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Fix buffer overflow during tab-complete</title>
<updated>2024-06-16T11:32:35+00:00</updated>
<author>
<name>Daniel Thompson</name>
<email>daniel.thompson@linaro.org</email>
</author>
<published>2024-04-24T14:03:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=cfdc2fa4db57503bc6d3817240547c8ddc55fa96'/>
<id>cfdc2fa4db57503bc6d3817240547c8ddc55fa96</id>
<content type='text'>
commit e9730744bf3af04cda23799029342aa3cddbc454 upstream.

Currently, when the user attempts symbol completion with the Tab key, kdb
will use strncpy() to insert the completed symbol into the command buffer.
Unfortunately it passes the size of the source buffer rather than the
destination to strncpy() with predictably horrible results. Most obviously
if the command buffer is already full but cp, the cursor position, is in
the middle of the buffer, then we will write past the end of the supplied
buffer.

Fix this by replacing the dubious strncpy() calls with memmove()/memcpy()
calls plus explicit boundary checks to make sure we have enough space
before we start moving characters around.

Reported-by: Justin Stitt &lt;justinstitt@google.com&gt;
Closes: https://lore.kernel.org/all/CAFhGd8qESuuifuHsNjFPR-Va3P80bxrw+LqvC8deA8GziUJLpw@mail.gmail.com/
Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Justin Stitt &lt;justinstitt@google.com&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-1-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e9730744bf3af04cda23799029342aa3cddbc454 upstream.

Currently, when the user attempts symbol completion with the Tab key, kdb
will use strncpy() to insert the completed symbol into the command buffer.
Unfortunately it passes the size of the source buffer rather than the
destination to strncpy() with predictably horrible results. Most obviously
if the command buffer is already full but cp, the cursor position, is in
the middle of the buffer, then we will write past the end of the supplied
buffer.

Fix this by replacing the dubious strncpy() calls with memmove()/memcpy()
calls plus explicit boundary checks to make sure we have enough space
before we start moving characters around.

Reported-by: Justin Stitt &lt;justinstitt@google.com&gt;
Closes: https://lore.kernel.org/all/CAFhGd8qESuuifuHsNjFPR-Va3P80bxrw+LqvC8deA8GziUJLpw@mail.gmail.com/
Cc: stable@vger.kernel.org
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Justin Stitt &lt;justinstitt@google.com&gt;
Tested-by: Justin Stitt &lt;justinstitt@google.com&gt;
Link: https://lore.kernel.org/r/20240424-kgdb_read_refactor-v3-1-f236dbe9828d@linaro.org
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kdb: Fix a potential buffer overflow in kdb_local()</title>
<updated>2024-01-25T22:37:56+00:00</updated>
<author>
<name>Christophe JAILLET</name>
<email>christophe.jaillet@wanadoo.fr</email>
</author>
<published>2023-11-25T12:05:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=b44e1aec8038d9007e988f7068f333fa0ad73943'/>
<id>b44e1aec8038d9007e988f7068f333fa0ad73943</id>
<content type='text'>
[ Upstream commit 4f41d30cd6dc865c3cbc1a852372321eba6d4e4c ]

When appending "[defcmd]" to 'kdb_prompt_str', the size of the string
already in the buffer should be taken into account.

An option could be to switch from strncat() to strlcat() which does the
correct test to avoid such an overflow.

However, this actually looks as dead code, because 'defcmd_in_progress'
can't be true here.
See a more detailed explanation at [1].

[1]: https://lore.kernel.org/all/CAD=FV=WSh7wKN7Yp-3wWiDgX4E3isQ8uh0LCzTmd1v9Cg9j+nQ@mail.gmail.com/

Fixes: 5d5314d6795f ("kdb: core for kgdb back end (1 of 2)")
Signed-off-by: Christophe JAILLET &lt;christophe.jaillet@wanadoo.fr&gt;
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 4f41d30cd6dc865c3cbc1a852372321eba6d4e4c ]

When appending "[defcmd]" to 'kdb_prompt_str', the size of the string
already in the buffer should be taken into account.

An option could be to switch from strncat() to strlcat() which does the
correct test to avoid such an overflow.

However, this actually looks as dead code, because 'defcmd_in_progress'
can't be true here.
See a more detailed explanation at [1].

[1]: https://lore.kernel.org/all/CAD=FV=WSh7wKN7Yp-3wWiDgX4E3isQ8uh0LCzTmd1v9Cg9j+nQ@mail.gmail.com/

Fixes: 5d5314d6795f ("kdb: core for kgdb back end (1 of 2)")
Signed-off-by: Christophe JAILLET &lt;christophe.jaillet@wanadoo.fr&gt;
Reviewed-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kgdb: Flush console before entering kgdb on panic</title>
<updated>2023-11-28T16:54:53+00:00</updated>
<author>
<name>Douglas Anderson</name>
<email>dianders@chromium.org</email>
</author>
<published>2023-08-22T20:19:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=3cfacacb9caa3c5ec332d06fc8106da84e47cd4b'/>
<id>3cfacacb9caa3c5ec332d06fc8106da84e47cd4b</id>
<content type='text'>
[ Upstream commit dd712d3d45807db9fcae28a522deee85c1f2fde6 ]

When entering kdb/kgdb on a kernel panic, it was be observed that the
console isn't flushed before the `kdb` prompt came up. Specifically,
when using the buddy lockup detector on arm64 and running:
  echo HARDLOCKUP &gt; /sys/kernel/debug/provoke-crash/DIRECT

I could see:
  [   26.161099] lkdtm: Performing direct entry HARDLOCKUP
  [   32.499881] watchdog: Watchdog detected hard LOCKUP on cpu 6
  [   32.552865] Sending NMI from CPU 5 to CPUs 6:
  [   32.557359] NMI backtrace for cpu 6
  ... [backtrace for cpu 6] ...
  [   32.558353] NMI backtrace for cpu 5
  ... [backtrace for cpu 5] ...
  [   32.867471] Sending NMI from CPU 5 to CPUs 0-4,7:
  [   32.872321] NMI backtrace forP cpuANC: Hard LOCKUP

  Entering kdb (current=..., pid 0) on processor 5 due to Keyboard Entry
  [5]kdb&gt;

As you can see, backtraces for the other CPUs start printing and get
interleaved with the kdb PANIC print.

Let's replicate the commands to flush the console in the kdb panic
entry point to avoid this.

Signed-off-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20230822131945.1.I5b460ae8f954e4c4f628a373d6e74713c06dd26f@changeid
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit dd712d3d45807db9fcae28a522deee85c1f2fde6 ]

When entering kdb/kgdb on a kernel panic, it was be observed that the
console isn't flushed before the `kdb` prompt came up. Specifically,
when using the buddy lockup detector on arm64 and running:
  echo HARDLOCKUP &gt; /sys/kernel/debug/provoke-crash/DIRECT

I could see:
  [   26.161099] lkdtm: Performing direct entry HARDLOCKUP
  [   32.499881] watchdog: Watchdog detected hard LOCKUP on cpu 6
  [   32.552865] Sending NMI from CPU 5 to CPUs 6:
  [   32.557359] NMI backtrace for cpu 6
  ... [backtrace for cpu 6] ...
  [   32.558353] NMI backtrace for cpu 5
  ... [backtrace for cpu 5] ...
  [   32.867471] Sending NMI from CPU 5 to CPUs 0-4,7:
  [   32.872321] NMI backtrace forP cpuANC: Hard LOCKUP

  Entering kdb (current=..., pid 0) on processor 5 due to Keyboard Entry
  [5]kdb&gt;

As you can see, backtraces for the other CPUs start printing and get
interleaved with the kdb PANIC print.

Let's replicate the commands to flush the console in the kdb panic
entry point to avoid this.

Signed-off-by: Douglas Anderson &lt;dianders@chromium.org&gt;
Link: https://lore.kernel.org/r/20230822131945.1.I5b460ae8f954e4c4f628a373d6e74713c06dd26f@changeid
Signed-off-by: Daniel Thompson &lt;daniel.thompson@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
1ԫ, FH.3dQM|4j8i$UqZY|pD,ՇxeHTҴvHJ
@P!/4 I+kğzCU!:CAak6Ok0$%,]Q#VgGU/%\c~dsOTQGqΕ4l	;D&]Row/{tt6T=n_wT\}j1әGcsڿumOͲgbgC6kaȽ2c0ϧ\mzr>6uA@zs硊j^5n1KcUOnݸZžm.-}cL	znK8IraO<oYEܴKY^]x3(Cy!K5KAa~V	&1.#GjЃDkkǚi\r˚&0@"l"Bj{=EAn^T	G}AĄTZɳ=P{x}B.dojCu@N8dC|@0;y A?^t JpP^iς*R&p#k$l]X>HX[0[ns7n~'T7yGQ8=|q.UT5.'C1j96rx׾))},'TbEU8tY<ŬҥȈz0aJ4vGMlYn7&&iK=7톷U.5jl?|;bIee,zfI:$66?fyxU|pVzJ+v{,wd<txNH21ݴ^v=Bdg{C^.httg%lJf#.bʲ2Q?x~hi\!AG^㮔(Q%n#j	~k@MЛlm
Add璘#٘1|<"J30|)7cd}n߁-pg{dIj:<]s9}/B}[&x"5OcI 9WHj  WGČyD$<"GLV;ra$8B&xÈ>CM%pvK%R ^! ;:Y93yԻtnwisy 6%!ʪ[FηZoq'gjl, 	wSDȰ{;H$ΐEa{Sw׳K_Ļ#Nu9 HyӛOR|?'OΔI0^'t
xYSdP5ن#)ۀk@o
R{>T(DĲjS%xkN]AZl!mܙ50`@5q,f0,pc7ݻ٤#F5a^3
ޡZoԺ֝nj74a7t"y7|3bҲ4P{KMGt1pw5ۥ6H %1;$q,  #?8b6nF(HLUA`6Ոq,
3X^j^
x)s#S|Ø3{]|>䂏63ǎ7Q,%Eo(Fwvc1Ԩ-%hBeɺBT }Q(Tg4bqfXU@R8n"blp\B /(m*9O_w;-C4(k~!*6ACVoz~J>	U<K+>?36<ken*vNYaWaFxrp\ɿAmsS}׺]{ǋ5B@	7JqA)MX*!+{ZA=Wʪ820z㊸m|ql0PT@[C̫z20o"
YG/(JKjxO˫]\]-Z(.mirj67DI='	EQ
ewtހP\(cjP!e`uIx!/ヺJ2mj2os>I5 b,N)ER?ܼey#&/..=3cS$2IvINIJ\hu@R@|zWx{ic]^~=镜
(UR\>f/~3!fc%s+6Hfs&ZF (83-ֲ-28wz`FE>1ewy]_hJJYqSG_?m9~\4po
QV%3gP7^PHAYS0,l<1a#TK`e)UC"Ms$G tQB*#!d*a  p?>8iL－ỵIbms־$|R6j(UC[%J!ĸn25t{[z_?Ȃjpg9+W17ϫuM[?p_>Y[oNy_09!̊4Y`7[OqB=\>c|nyc	|XVj\TAC+4wb
		`Ӆ'١+'M\Lg.(߲NtJvA9$7P!8O犨YaN/8*<dp!7亾O!?1(u	+}t@C;5
j/GQ'"	:\6oD-+G4v>;bm@`' }yeW\f;cw:1mפ+ ΛGhEY5J/奭4a'A#!S'Jegi#xti9k֧s.O9d[ip1}Ah@KdpB3ki+/ؑ[^̣`5ޮ>>>P_%+ݺWKh"SnuIXKWR.eP{ށW<`XIKQ {>K?Ȣx@2G]S*,Az=[0~ǰYUQEpgFJ%wpp{7M:HV?>$ȫsJ7 & M(u]qաM8ӟ0s@]ڣj{k[ Mc: E]b!Or[@?lG;0HhxL
8#&#piQ)楋g\&<nzvjxox\Zp]^h2lݣ~ʂS)42ͶL-1%
 7i퉹`]PUHTKgW7s#XẹU5Lyzu|^/+];<aw~)I!"/xhX[z'|1?f_W5?F3@E^9$A>v@0M a(;#wHl͋B؅H%< X{V/%V'79Ը709<.0?`+}׿ddVHrg2J&{s2}˙ڵOޙA>(#&d#07~vgH,G	pXiF0eк$[JB̺}LI<@6{߈Zl_@F.HOQdEC1%-.͢Y Rd5 /u+
'HWjSGjlG#^CTW^FUG:ڠzgۣ"wcl|ytp#`7c8C%	z\
#	ɑP	pG3c8g.ʽ]4"0D߾SŚ7렆r"qzٓzοv 3DqC:wyO&1RlY8il'D
7\9\_lT\6
JdR-phE9]% ˚\ɼK/3Okdtpb?O}uϥSM<vuA#ߵC Hv9ɐH[%ach +݉vHeҶ/&11 AMSuqr}PHw[xRc Ɓ#NnZFY9C솝d	z-n=B#/g+;]qf,Wk3ra3X7Rvn-ZDD{R1韩d#\e2ۙG}}UkuB-n1Letj@
JZluUb5=Q뇞H]I2}FvQE
tl5h^.cǩn(Yvrl1~p
4lYkw܃THGQpًAPs&Pq^y2r@ʮ>t",smĄ|ոDn2攖4/y㢳e|daAw_Gϑї{LR_ʹjqDefA)5[J}C1p~A%0lM 9?\>|XWCWpISOP-dE]Tv
_}ozFS*ZYMfĢ(𲫄l%s&f}Kx@ppz/ᣃ%N]Hʖ-]ij1dgU@|(5<R cR
|-{t-Ǎeܬy5NƎNv[,Wk޼mYא*OmҞZR}nCSM٦ˠqCxоK84#	iNͣKŵu`"eGp|[qF"rg9IdJ!5B0Zk
;Y?m
eC񖏮{Ys
529@J~1n6qn}v]=5(l^ܠGhm(
@4tojl9/#eM|Y_Yk}HԍJx64o>@gǺM](Lo,=efwI^70-̏"tz@*VZǯH\%Y\iSAM$OA;Η`$uC@%تH3ª#Up3Z#Y5@Rr7U@E0jqCQrT:L%VpZHB:Ei.J)xMsUP4[jPoc}pu>tqtP_ІddnBbj'HG(hy'%yWC !=A[6GIHul5Hv_eַnaჇ솟_*qaGheYB3ޥ"9gh|w;y<󈏜?qs⾸ФA;P<%2zrcx
A"]Yit3ta{ECYr8MKP:$`@r+YlVz0vD~:Jj/a@]-8y i[[JxCqO|Zb΃!\o)SYiz4T55׈G=Ϋu#;͠c~
ubQ@vp@vPHv'AA:m]P#rJq C?R';Be-@)!,2ۆBs:-	m&>nϛ`שXkMFKIѳ@>5j	?{ym2w旜<-oM#٭=hv(Aǿ	DGoT!E p'}\|t9njA`<\;ٻˍU u"E:omz^\T-M;U^M:fK,*lj@'6h<T;v>72j|߿ﶜ+PxD`"Vd#2IFދz"IOxq[ ez/X$A" )Qn۹cH4:mQ
6ЗqE<X5jʝF̺BZ5 uc_>KD
>gss>9(]ж|tEZ
foNң;A,8e JdlLqΚaF1hqV8\7[R 6!n.voN$HE@Eg1͌i~'elOTrL!Dģ$O|a +e^8v'ăέshPR#SeXV*C;n`缐W}\ffԑ*L RӴs{OgE:.6ѭ#7Ke$ex9OK)|nXgJZ`HҨ@ThHG_V.k&F:3o0	}ޖ #Iiɤ}/Z	N3|tvnzR*aP@	*A؍a~w[ibI~4{~G[xuJi.@ 櫜Q/@w CrX4~7
ql;:QjaQ>۬{zkz7v.18&z<Z=
{FwTzPl^@SU3mnݿl&5yx~Θkϛ	iuV='>10PP&DgD_o@xn_:pŪj$BP ~rG$r_!qS4Uݯl n\Zu3if|q#[[ m
C=3DdIKQ3x ʖ>.Z:|}Ll7C@8JmI
O_*yjHp=V?&{dçY$xpGR7*~5<|qV%A"\H~Wjw2o&Dϱo̫m)+446XL3p!a?'`^>HgR:їG}L(=U};8}'-!QzX&^w3SoIc)at?v<
<nr`-CVEdvߘ\u~->{۱熹O)P򚻥W!@-J*}Ml嚐Fn&GA_8r\?+E LLx"v(}|uE6ſ-qbMAC#U-	Dx(jJkxlV"ඪ+A4?"=" d|ֱ^zH;) $$C`-æ&cA=GΩRT"s@@f8$^~8SHd,Fr*DY!B/r	'2
[RUe`a
fNt[7g$;n>ĳRw`ꃅa'Oi8?eKu<zhc JJClg볻59  <G OֻKKsxI0$<\UŘb5"Y|#l(Ay2:XH+uAUXXî=+%>eo_M?5d2WvI.	{McPH±{XT(=XʏOC{UCzžvKFXcxnYeq\k2=[K	-poULz"",C{(6,t|Eu_g|V.Faz @q=GQXy"y~Є<ǺzMuPxnCi86!";W-(\.>[q rIJJSVFCGÉ|v{lZ`[g,(ion5X~6zhDFU0	YD5Ǒ](P;9 ,総|ss=l:m{Xpٗ]iVG="YUne&%
K2Ƀou*9U۴(MO(M]E*DC8wn[ b1B {&<9!rȳ0˪om˾ؗwO|bFa1?Eay6!ߞ1ws8`!!Hve@:Xũ09e*
C7-dd^j_(`
mWvyGMhXmr?0q6Gί-88{ҿqPLCK3wb#
5q7H8%t&oR˔?DEG@(22cg,;ݲ7 ¢@T+XRJ>Br`@R_x?<=H:KPm(E裡\Te}}{eoEJ/L|
0yT,9 DEaS.sNV,:<A!$܄;Z9יΰ|B%򇴊?˟]x&qMmdc0^{z$aGT%T5C1,tZήm=t0/PE;_/nWu(;=[PK-G`JfNTe5!m+pR=d㮕FosయJAB>RvIE\y%#۸_ |`TSqJݍF'_i PTG.<Q(TGD@wUBrcNjVdHNllpdSė\>,7i/Ӝ=m5OɚHpd=~W.Gq|) 4T!:*tiOVyndAs?{rMp6<DfXk0x#%qb>E,g+,Oq}3x[l9іZLGQH#ԒQȆ
|LrnV+rW=+pۈcjZz=`⸇;9gh`Jt#-Xo0lz",cᠾxq@r/IX3c#o[G$JoT#D?qM2S)}P-.jE=qcs9eZ״9..3:M rmIvV=VlXwv\k;/JFn[EO''Md˹2[cU䊛N*U%q*%UKpEmH3.%'T(8wI\e_ZZ5=hC6\e`X=B^Mmk$
0VX,\=c9
c#lDqbD-T΋gƮ}g@jH)	[f-?lDs3̀5*%2B+h8LLN<}vL.kkӞMhpV;-ne5B,2{E>h{5\j;.ə04nzj @*@GN*W'>nNz+"#İQBE$^'MH97mfb!u%KhRkhNwqh׉6x5˄) 8Qnq:F4=|,Lڳysa}!J"<##K`Snb}@Vʃc	{y|)wyw1 ߱9,H>@/p*7V%0RtF!@'f;~#- !RPrɈ܁M͸{92^[d&k 1h	 G`xLR$~Mg>A0IC]Âd~(}&DefHRƲ![~IAܤZuݦuq3GM4^,yOKQ?WAFK7\a>omY[)|kl08-5jamXsfmfP 3\*ws#cTs- t41H)4<ros.;h6Q۬%GuCÓH~=ZyީU6ǖ^|E3Ct&)ω \b*N?~_
,GMoo+eHgt޽昣qO+2hbZj/yd96H<Vm#!Yp("M=a,/8TLQhݳ!8gd~vUX!X0
/oxfLk2HAՒAz"Y7@zbgS΃ͫc(^Yi򶗇FZؑKƦ9QZ\FύޙO.*~M0`Yҫ[_;8ri[	+Bb'^j_Yt	c?m; T/*~"Ơ@<!}29ϑC8N6I9,{X+ZhA_R;}tތIUH_ٱٛގkEBO!`)7*Fomy͏$H)=~U ˳6r9(- Lv~"%;5Hj012!(ĈbgrůTcbYd~b-6C"fD )Yc0@X1p*h'qdh<ی,| dzP#D"NO+Dq3_|QZХh`?E)%E/5|\ īAV= x{p/.>H7Yw C?w(RXW8rpx<Thdd\|.c6_botn6KdҰ0g|,9$Ӻ5̄{ͻ'7Q)D^xn,kGZ
mv#Gˎ'p]0uBQpA>#ޡ9e $IZ+aodstmr(uF>A:aD&i,xgkuâs,?V2Cj36A3;SS?-Ec{^ezB<pG{Z᳗S9~j{ŕIfX}6.N38|Όo*ˤ8qZe)|2Q>s|HC,=톾A< s,KYZA*C/79H\$! srF5og10@wHh,t,XݼXB+DD]DlZ罟#<7ጄ5ɀ!ɼ]uyhPg\6Hcs5B
3p&J	nslE'Nb/xa}UAM\ƸO*H}]ke99*m|4#q%E(CڷN_8}rQ~L`GPf,*BBH"H#,گWgsv}ezA'lP<}ql.k]fq:Ini(UAJuߺbp*PNC^a!JV}]z/2B"Bs VZHZ{U0{:e!w"=Ƅ7FO
[bLXedK=ǡy$$_xW	d`lt[|0icb,쯇XXCg㑦o^\X;?K[n,=4FiQ ða_Ӛ"S`IMTY TZB~H?$C'l8ME
3_r\,Qz4R.sRw!ewԴM{:^uaBTJ]9|1IxPJ>@S +27I%/ Iǎ%,|j#>Ͼ|Z#F\{؆'٫v^ >Q+20ވP*,js^δtɡC|8dUV8'&}EzV0yaT!=*&RF``[MR|Im͗ΠvmEv(k\;#\Ù.32(ˈ5N[ND@֭LUWtŸ?gc}O	!Kh~́;	/ޠ7m{u>֔\P(pE&4=(("(	|n%©:+KRfQ6/Y489prk23ZەrO{Ad*s7QM3(nœ-VA%|BKTh~I53,G2!C9;$B5[?<}By*Di0}~L@9I>CxA	}c>.#FA[H@w(RD`];:x|~+(r=Z#e2E3UoBGt5`lhՊtEiAг#ōC|	 0Ɔ2*IOs
}oݙa7
ȉ$W; ï6ySqLbA*0
QQ-WUmn&+TfQ(!] s_tbA6gV
DdlM8."
>%w#-|>KjF-\h̽:!C%޼[`c7KI_9uQJ|~o## f3(5eT{b$R~uV8Aޤۀ=?<#sj-oCVaE]oTWPZ/4FyB Ŝ	?ÖYd\}|ޟu[9MC3ٞl+йSe|2[k-ފ!}rPlmm; J(,.ӘX"!$p] E/J⎁. N΍rw&UҒĶd
$AMW@}"n5=]do2܎[H.PX 85Gj~jER*@2%Pˈox8Mf,ȬD8M%kDgxʳjz_~&B
R+{@Yf"z+?˧`#t"N)5Z*wly@nUSZ:M%ڻw\ns;h ֓m1!Rx8^/pW;f3c)!\iB[-lKT.`\EhʄUNE@8u<e3z {YlZjٜ@%택OI'Ig~z`KeL2t8pWA0 MCۇ%3P?Byd+ 0gSn=ˤ꣧x2+`Q?	lU^|qj׷M2\{[x5jͯMʩԻbfd8zt:+3jGf(>ȋiѭCG{DLQϵVL(sPoy&GڝY~'50!^ٻ6̑}nz>yBscP2(%TڸZ^X>ǆ6	Nw9'p5Apз4l&j.M>f[dA3>c[1^SP'Аe*-'욇D*3@u
 PYHh~/5&4"[
H}v]$wUP*"\"-1PWzDG}uB<0a>SM1<n
 O)H,We EOO/gŘwk|zJ&[EuO7ej҃ZXPz%,#E9I	b"U<g@_ \Ӑ݂OxBuH(sڐBpgUUx.H=x=pusaxR`ζӺaG?dH*-w\gka)Ef͛vSeqBY
gU',`~LK1̠.v@$FWGUB8M"P4G;:Of4v&Q%!Ф"LĽ( F9 PQ'|9Ht`q2d@d	RƇYߔPC@xasҗ	֒R˭JUw>3aI hupŨu55ZpiBH}z䔽Yɾ(l$#=PzX"2/>VIK.>}ex[>{Pb7od=u; GS Nlv"m \e`@sl
-W?|(ď2PGٷ>*{2|DP8u{0uJ֥c.jDHU@=``vfx
"A=[bԫ$	1xyNj>|GiʷaFvAti5+B$.4SW6G: v[C$ =>Sv3cL" SׯւgsqǝoU?AD&uldfʁM666ڞ_6bXzhx"0IRB8qݚER#a3 fKIJC~9ssl%MNNKp]K~f>]`B&9e6̢+LPx=K]/;3ց1H
hzݧ)&nC՝תh@B'3YU::!@[˞O=f-Ը V!Y.DMc-`N/!Q)t7G3ot
P^ԣqV?|,4e{s!ҷ!|Q~N30OURk׃ zL~^wⲱղ.K-Պ
=p]	qf~8#EsvȓOkMw3NvB]7ܼ-wG	g?ik,MuciO#.6)xн:OOsxOTM'5.0؃A=!0$\I'W|^5	 cGȈ18[U>R;@-M8>~Έ{mx!)1Dl*lQCk[sINzT.ܼlH*3 P(qgI<d_qSaT&_u/>Ϸ?Pd{|Ћ0ǒuum!LNk'ԂvS39BlK4/F[Ϡ&<Y)\#gcSUxz_O.f7#3(-1<:m0d vo `)`6:=:^8s<.~>M9Ԭ_=3m`"C נ@=Ul+sh.GH̸IYׅDM$F|nh()|Rã*Z8Nq`NS
XYE1EES$f J"xY:M|i*}]~?/y,[站GSv͜9nW7TP&
6&(`nGd{t«\ef:5%GE
<5!_x/j

(1QA%+}B|wcGuA`u,^8k"ү \tK+jz` .=}WDO(wWl_Aw`;qg!2-f[=f4&cLwG  uÁ:1tUEUufjՎ>!ӊ4v\y	~Bg P;=پqj_7Ony89dqK($5N?_|8
Fg]ylpzt!mb0.:j,nVl\++B"pz9;1G ԏ&Q9:ہĦGN>ҭ1^=]$
seluL]"X-Wk|1z&uѬ
K .|$*+xg_rtx.XSDђ_7\Kވ81="s:]X?i(55;Z(h|aC(J=!{P}Q𓅖'~<Yo\2s߲xjX,]VFBxIʋ#-y
?VJr[Fq2ZkB@"}Z/K; ,|^[+,4;[c2MI{Fߧ³~⬓(N'b}Ai;QEkST:|t	y
2tSA+=-ݙ_y~p(Q608n.qL]kzB>JZb+̓Ȟٺ0ޮk;k/' @}%Pq$Jx֋*'P]sE{JLx(1HAAI.~6"B|!/S-i[h1͂D>`RLE+dQx`πFFcY|/;diJ/ L W -n+;&$uQ^樚( Y>bϭ8	7C^4׉B"l\y%R	C.z(]`pqS_#YĹu<sD'ɀ@l';O
);͎"L	u:E^M*x!	HmȤQSMP68ifn/iU:":Ȼf\T> c :Ť@r#K"a#cYA(^&±lÒ*4A)6^&Cn䃝gvپuzԈ{8v.T]h3#ZyZ:{z_9Q4&Q!0ywo@vVALn o`3=U}V>'[.`$[xdeP&ދz 1/퉀ks%O Ѐr>Aplbo4IRpTW7F'Y;#tc6ccd/}]s~F,q\8.(!A۸:OIUb	@t1o:sA'v H=f!jnRcTT.؊bXy$1
y=	rpy'K{&gߋT3w_5TIs-$ľjΝJfES>;c(bƌ'J5w}nl
oa y9V(A<keLrp6.(81^pה9"R6ȷVuoT45r^y)?oЋ.eO0U_njhvl69h@G;kx>PKs#XL H8Pw&P׭>n dUR/ ė!w$qPˬ?;
h;(Sऩlvtǆdj`WVEufox9<m<V9C_Ml02Bn='~iQ'#{l8e@/a@ |<P$<	`/@AܽinSؒRGGuliש9z݁u !-)gwgH`ހ]m+aeX̢|@|x)#d4"v37*P]k:͙`C3ԔN-]P~Lu|SrGDء;gw*CސTەk<@b6d`r֋bsr8ˁ,'41ņ:t(bD#C#īV]!%b900VCL:½[\-k;ߊpuƤM	֪:<po~zD&*GHz&oUtP j(޵֟	ƹ׉m@@.lCFR8Y0py>6㙂{J ꅡ@/f/vB{ȕYN\`ޫ,^@g0
}iH{+T]2+'x3bFL4m5n{Ci	xx	txG7Wl{"{hSA$PfT(M	E(fBRIhH?cLf4Ð@2y\M/ȽB'`73w8>Fpy{5`	TDÏ#C'$4E1k]e9ƆquhՔ(I3-n-d`sN][+j4b%@8-P*U	80Sajs$I@s%J)l`@[UY%=rT`jZ[*UTbʇqh4ҙ57=pu.;b}ۃ<fa
TCOn..,98F'nqߐ`.	jv,HƚYqgQR=5i#<aT^BVJ0-UzOOmٯ]c'J>`3!iUs_5D~1v*X)LP*D2fӹKۯxmgϿZ4a#oc|&ò5 =!`9Kc0;a3RX"ͦaI2>stZ%t8m&&`qEC}Fj%9>m8j1;!1waƆeW<ᢇ Ml)n2:vЇg ![ 8ʻqs@=OkZba2"|io?	1{h49!}P%Z
B_qh
GxϽ9qm	S=21G|@g	 i(};.sK͵zn~nG
v<oF!oS +ۄ0;jS6..7
^saGG@=`pܽ|G,tdڂïسpypGcA |.o\@U`!/S{>w
3A?|>j)vw.:Pq.o~)Y9.uZ"9YUDg̢0ňi$G&<a7I'v?:DFE.k3XDL[86G@hQ <~}l!I77~36p8G:'17!c,u"y^v0著5Ul;3<=N~b!/.r\a%et]쾗0|XRzÔ廄q}=trJ͗@Q|ID<0;Ks|m$-(<EU[J&f @M8YGOy3)>Nz*! m˴#^<Y((uAHM\7P$d
xзU׭.`$}1AY@i.4!PC%2X.ǓIf~;LteK(FIAiUʎNh;{ZxSv&Vš|i0C@+4z=7y'{n{n5:#Յ,ge{k}?]bSKSCD4tG0"a`/rQ*poG*t@
49*.qS7Y?=܋Qƥaa'e9Z9.eF6כW_Emb@maᣠ/ey2\>_5'`WAnݽV+%N_$DBR8iמοWzj!hjHVڢSAUf [uưԀ.
}^C^4W&,4/.L	E*uR[48/I OyD$lbcԵ.lҖg]׷l'Ƣ0蒝PBǎ3XytmF8"C()!@KPp]9a3dHo?:[6:ߊ /P&Tneqaa~$*>ZLjgdHEŐ,~x̖?\rV3k۟V&` ͅReUQA!5!xwL$>kLD* ˜F!Cx@Ä$> }҂@c>k/]8:Եy
p]X'k?g]a=wXy=XOĭF6zz:rO	Z^}Qk~n?di9iYXhLV_Ŵ9)6q07i\Gچ<Y;FZK`,;lQGԲ7)1cW&5yY9 `\l7ma yrzYmȽRT`"MvsUQ0h@Lnc;"Gc4[DCMM`8/MFXf#GQy Dp3zH638(E3a?@ְXM,' FQG@_-?Wa<K+G(O?NUIVMT<=.n
* }ʮѵzQJݥ%J^$pQނN!hB!-cFzvı޼1ՐeCUC>y5XljLmjˠW?-Z2P풹ԝR'`J/HEBjC&Tr1{YѾ]KDLHalAvxT^7<=vspO]A)[:d8xhi	)GyPwxXG"/t73b$=To!&En~%n-6:?i0*6Px({Ms}KP}CA԰@~ߩX݉;9t(zo0)a"a9̈?}MoUW~!!QФjT|
=~lb܂ u)sT2}/&zD3 j~~;WL5p&q	E<.GlYYq>x#!<j`N0B#ȷL@(ЁKwvgӐ򃃂s84{>xfMv~9Cgc$( Ҳn
afbOYЯzߏ ,UYӾnHQ2FD$6u83_d]MZ6uc[{_,݋#о _DNVS[Y.Z&ϓ)m\ubvQG&1@8:vHoM"0 WI'֢=
m|F@ȇ:Z(8@MVEP"hB	
&abG0ۉ0\~~Żۑۀ$ZL]YGG&o+}Vju©B+nkR#Ժņ8_b{O9쿤sCBBt!;bn:LpWf:a+>8-+@,7J<c<6]'@1PAq$#EJkQA&C+m̟Ӑ!ω|W
q,>f+ʣ-xrŏj}\̓Kp:?8r=X"#M4q}ه9q^hlGb peGLlRWi	6 h(ط=mPǉw=S=]u6G7.Г?OlQ|"Sbџ՚>o#4\9AKY *v4kggO\enT6_w^ɮ+B,\s6ä	z9MNnQg{//C2+J`b>^"'.l$uDǾlR[%ẗ">7i]7?wZRWm
hNun	9`y}/ml&oxb]	K~PP!'R"O	@B&Q*_6.+>w0  e r)J(HЕɬMQI0UbhB!)Қ9!`i?nb
bJiRl	;ÚA@$+0(6@1 enH쁺!G󹜲[nM'_@$'byχg|wgohwZ9Wkim@"㗭D{Q%|W3(=o9E呾vs~qHhM|o9Rj,oܲBX-9fI_ЛID<Q$rEӞ={j-X'g>0W{^0%23+ˊh΅D'J'x;bh%?Gc_-.މrK121>+>ROQ0zfo<۟L8@,7{Q~t@yv,Q_CK{yJZ߯H(P( I_n6'L1HpՒ} b_Y4`jwHRܠT$nG^<nQܨ]GxC}apf;X("UkQ'ۮ~.y
9460WIl"	@:]b<:GUGu_?H?WߠؚR"۱GO֨":_`3gXT8H/S"<@?$)A#%ر#d
р@ DH@)Π&rh((BC@0ЯPTej>HP:CJprAi>3 K_~u{Ww_ Ý;a 0t%~_/{!rZ0?1s>_zcюqȈUk5|;m}ֿgxs*SBc|k:5ڼp|K2:f3?G_
az>ٺC_ZS!#f*"p憰A c.00Za#<bX4.a!3:P_h˥OCAmꚴϡS~]۪б?SGFNClo=ȸ|ЯE.#ֺG*9Tr~9Ĺ<5K{|36a-5wVw.þ8u!iuv]
AQ<bߘ2;+a迡d<ߐ|m15Gݿَ!c#}J?5!ͅ>!}Kǫ9m%9O4g5|,`Rvt%z"w>yUJۖ,W7ש~<fC*k_僆Bo7`s*)ѩvt>o=}3Nf,vGP:ņ~8i>Ϗ72ݿt*K=%( Q }sۚ yK,iG*3'QPCL^Qҡ?Cm$sc/gHyf.:5)JR[|hooU̚'&q0`AGzOX}_?w?iR(֪ILbBԁ9Fg{"zw}q}j'\aФAO`  4j^1q"dJ~w+
}*
d
>D5▸K,)EA802 Qh2ضc껈JlHou_7ghc4	@%BX@^1\?zOgs,DtE`AOBQ?$]rgn~.`q[)S G? Q0	?Ԗm5y@?c19^|sΊEP5љ(?w_]GzNw7;>1%a~SMWT=.Wz?O211td:z>'8uf <jgGX=yasƴ㱽~iǋ4nmN^{~Nw|lpvumFu7VAv9KͥWO`jz;m6yգ[}y;_!p@s?jL}EWvzTVAցx+h_L:Nk#F2Ha[torZY8abp3	ښ*/y@au#S~l.j?-ts|G0${j4Q
2@CTBgv_̑\0TZmq}=,ڛ]~)\'ܡo堺EGJ=1?t~4h>N}!"9v9<PAR4Pc_}a\SG\i s+]M sІ2r^~X[AquٹoΜdh#n?{lKLՃE38L3`EZ+Ù<}a8sN囁;vwɇDdu- hzZ4fA˗/*3ue>rxd)?V&G7?Z'?Lb	9?ja	/?sV.=p]J
9
Tl֩S4?XH+ŌeX\)cOG[Fb9 R^ގJ(9f1qLI>*c[%{44SGs덼%5g"MH/QNZZ?<r#0ZsLAd爉!?G%;?ٟh|5
ud1 _Bc{gmu	tyj5jDD;40`8+0nkCåG ݌:=^ny嫪tǿX`dnXek.s:NP@XPdE?n?l.rg7ϫMnx~8YG J%颈US>lJPU1T3E'I RAKj\jC0wwL&>PH"(v_4$O
!L}܏y)!ʡӻ6!R}zmף?mt:cY	$?~$IgqE>_c>D-")bħWg7{{8wP~J/eVq_=zc7~qsmegf.Ö[AXclolce D ~Ɉk]_evnf*`P }0Pr@?'r>n8
`y3xuLj}iY$I췂B.gÞu0WAn 7uȨDX';]^_uFy]r~} , VWvvge6Kxu0c[<"{$MYxTW$fs?bRD)_]oF:H]{)/P (dY/x˛EG Q5\2?Lkހ"
g `d;9P}+
U7ĉNOjs#Tѿ\4j7z'3!#Зv|zx@3<WW(?97)id+Jw S`ؗP
02 5]ij2c#?/u=<'waZ$a*"'ߖB %"GCw#&j`4BmBL oN
(0Lz`Seͦ~rkAMa@d hUB@	~lʑ\8L\2:	o1u!wg^[c&.<Qut`ԈE-Z iXTq`	KattҪ&7iI ڂ7n!x4DA]GГs;yQ3|!wc\؏&@c\-p6Ӧ0Ud$(-(. IRAՖ%DDY `ɬ,lLRA4%ZpukZ`|öCiWXe P IOH§or|(m7h5Ѓ;\F*OтX^RJf3[岐K{Tn_8-R&"*\F }QGpG"W]Wtf}]} FK_7HZJ!5ل`
L Kxi+~'Sua6>u͒.m˝t]0^tLH*Yk=;sًQP=k0}STȆ-빟nzQ_D_ ;d1VmEbh5|SY2n6k%}@vmunP(Zt|G\uX5b @
 b\5Iu̐h"GC㷺)(aWyVˣ(RZuc޷Fd-El+)K<~1/w!*o2Ȳ3c KLmj>h2k{UU]

$C`wك_o`w]0C"<34gă'aWv<p2yv- 0#}o'ɺ ՕΥ1Z:V&q\nޱ$P5Y,F3`v-`;wڝ^b@L'fe,$ۜ;B&Eʭ;!cDekJN8HBD%[ _VZJC~FE  tZ}!m^<nۓ@6/olz9toddlw>ZE)pV=Ql7j]\խV{Zufw'?jg!:=H?<Nw4	Hh:na5YssE`r|ۥA%rHge|8Ws@Uf[ޱPs9rbk۪uJ4(݋>͘Ғj4m6"z%9U[ث_/]G4c4_}']g_I6B.s=I8Q,h$ql~cK$J8_)IU ^p	2祬y :ȱy}3X{ǣL3%,EvYB=[:21>뱎\(zJG:i 0IGq>#)䁙&rF3'>Q_o愑ePs|jjAy:;5ⲱ(~!S}J) Zr]/~~٦?}3<xKE递Z)@BlHI8h02Upoέ7r&׃G̹_|#7tG\M?ŹҀG+	{qmaIy8N3UM\MH{%K[p=wv.vz	"SDs(&9R&ڹO4${Q- XaڳŹz]#'TR>CrLsXo0KuQkʭsDQѫs[
i˺#k
I"rn|o_M([L&%`phSOn?n;<V¤dQVlY[$td֙pfM.kOd|Z1z̩SUl$:|躁=?H_!Gܒe=怖߀\]tZ`u_fg
Q,/qe[<ENLF\p<{м|s37:B^MtzlY?@ @WyչmhOT1(޳t5=bH~n&AgMoU	4Z<)h9\Z~+$`Fέ\>l! +v||#f,Hܳɺ32[?/Eֶ'	'۱'to%;+eA,[E.ȸaI4@/X"2yýxQl@i޶~/ׇ,ZEI[W!)//GҸD.";GXf[O!|A
a{e7.8a@엸ǭ>G6wswz{)I>xR1\,>Ec"	𑿩bKst(ww;D<iq\ [8Rz`q!ƈ%Wrds;7gU0LC"c%/V5,*193t:V Xߌ,;m8idr|10"$[(3
PQi݂mc记Z>qW
:Jt>M/0~wSC' v
J*wKe9۽9{+iz8Q^ߤ_
4| AYơOFAP9,=<F!sOg.8ծ>-YuAOg \O!1kK9HE@h3U?c2sm>.zdҋia|8^M/i5
*oq理 H7h8cGb OIR@ x/O@=j8Kn	bY(&b9w(A$ǨV=#Pt΄!tgqЏMN2砰04J3!rpu9ZAI\ #ӆ_.Q!n.8r#IXPRO*O篟J6ƔET3|rlԗlBlf
Paᦼ3	{eN	7l"hHA dpI/R
"2KÍB@MU1:ww/ U y)d f+!zgi OYTA	O|}n~pMJ
u79'拾|V?p	d	w D	}&w~C"XUS|$|+M<x1(\,Mq؃c$e5 [Ovi K6EL&xd 9.AH.] ۶nЧZE%s"q/eGm.RU=?	~|\ܭLHqx⹸[ sÏn۩xQg\}<y\?p
lО1 br\^ WvVsǌ/a>Q\5(tdۉ8H'}{{yGN|C<l`)hr|i`J|/~|Ēgjm4ǯ؇RM^:}0{{L3ƖdF5 9r4]M\98Ͳ3ӹ#;3m>b=]`kas(J{FGiH{s80G`5ԛKżg9I|=9@dXӆAYoՀUSN~pfw'G<y>.^mP'xJe7d~q[wxclW34.=瘎`>@@zxjfDn5>,
?֍ Ө#L?QIXvV[w|3F78͈ʀ'<ZC7ViAvSh߯!ެ·鵕XE$-O	
$"Uga*~v[gJwjm`qL$(~Ǿ<~1xuWuBbX0B☊" 5  QG녹 L뢌p֖Nm .D$H	[Ab6)] [/!8sC6C`s+d&چRJWV:v	M챃q\7Dw0q
]'iHqa/穮 2 uܷegZdZjKQY9ĿpzVutuQXC[0Lɦ#XkA8^3q@V`,}q#@:T0Gb볍wMeB0X)xnŶyrCjM҄J,DQ5TOl$[1CAT"4 dB!	۹v-¸'Y_0닶NBlEmc94t7ּ\uÂ9!Eg1uzƸOUWv_֞3q;	፷il[<L%2ef5Thaqm陙.t:YxkX0@a`$c&{n&ڣY Jĉ DanT̋cQZܜ|=2[arY-;~Zme}ۑ̟.)p |m7-BAD@$5!v7Cb&M6:/u"P,-H9 y7K]FNx5Զ\:X,)JV̸sV@}`|5uQf"n$9'ww='n[3̽0zb"w+q:]-%IWgזE)Ϗf5owFjg~gv	8_SSXKr/ޝ3u5R??"-SUhpf6vժ<v͔[ŋ,EA2@aR+gOe&3cc_w"/ylOU'Gĝ/'TFƴdrR^x[2?@O@N(U9}p:UY_C 2f/[co qo܃zoGi m$Q[
aA>zj`>Z!][>
| }'`7tYS5UM˹Oǃ  ۼ=kO#:\Ρ1%/YZ @,@հ$F=.Py_bWv|T":۳\m[`Ի'^zOR>6h<B}V^9_}iN]!:3iepǼjќH SP9Q9iSLCl|n?O.ɟwnA&xJPX/wC͍L_0P DX`Cfokݿcd7́H}	$ppjp$6eq^Aݞ`"0ц/ijd% o9vup-AliG3]r//>*2;Jc:"R#_(@1$-'24ӞɅ&^Ą!,^с>çtj}a;waYfedM 4F(xznm=,iȾϙǣ_IdbV#職1;N.J4B`܄d` ǢYLx}i A5NL]@E_LFMaD!VVps@6^ACU&eLdxw`C7r:䁹zp H!i \&Ap4ӏ>ç ̵D)\p݅nA*D~2GቔIlBHahQo[`x;wlVvÙ+,wm]q&=P0_y<z`pnFJ&J&J@*(j(j(Bh(h(*)jUTDRm\;N2upCywh_wsФ^fM.ػ$x\;veH\e-MB	pi	#mG2Dz
Xn71'/ ]9b2D296[0 }g4FCD3y޻:uC8ԫګSv⁝O]	ӎr4gI~̦fQI$ >¡PU %@TEUUM
#0DHCBPRP0Hzlu8j"B$d$hhhaŢb)XV"%eWJ`Eh%NH"
_YQPQ!@R!@RTHJDQ151@PDQ2׾L f:^F 'w ]sܸU"M0P>A@-Vl+0wc:;* c$ى`BV$Gt	Ӧ@Sdpa҃ۂi39:E$ Mz_Y`;S<FɆj{_aL'x7{$:|fQU܎b<U̶)+klԝ4DG""u5)iiީkY"=7F	}2@ 4@'FK~!bjohAD8Bvk=aRjYvqhBwh jBib~F|(\|ލT=puWʩݤ,D 5[ r	XJ	!Q_m%X% h5دOs,P^@˘LOa9(w@'8_i(uǴgOt&^_DnO2154~6zB}0n6 g\oѻ	H?Ш"@۵8؞ԏ( faw<օ*@
7(HKSyba
ծ-qo(:w{ r|		HCKܺ;]c :b,NS]9I o%$D<khgT\0t,GO4Bt }V~:GSG@<uktl'H	nNݗ_v;Z63iˮASꚹZ'wp]>(** rQT h"%I@i()Q&@ L 4!Ms hPRL/'AJJ*r%TU}"`U$EU&uY
}jSH.X$TkL3Rx.p/
o~̣JbA0RPЂT$=nx٬<0/hBf6U
r6ؐ-1g`Oo~R-9D6moߟ;h0
$J d	ϛӭ:`0~dDB"%"" 1%5.< t vtR9')t'*[~\(	; Բe b$[h8k!QdY;=Y66Hc&	D.ܔ{zS9F1/w9A$Щ89~ocW" ""8%Hr/n*QO`IrmKN.`9!>SAE.,'^W/M!Jg}`Hd=ؐ(
`
B`3wӓ?yB]Bk7e]y|-4R\k\Z!4Gj <O>QS1ϩƝ<1xK7e
֙_ߢD}mkek(<E[)(_J3ђ5rb1[cF	v>kÎsA<;	fVf@
!ݿy{yVT0o^@6z}.(OY!?sukɢ@cߙP}q:9v~PO¢E tD+bDmmXnw9;X3Nw!֞f=[JNܞ`rfoPg@(Gx
#{_ټSl2z	dbCVDݠkw
ر.9S7vE0NH)1Wj}*]-fXQ! Tl%'W؀4V
 D	{t_ÌeJPg{VC(+7y8_wc}qL';59;d5UO^q @zfQ@e}wnrx<*"*#<}3.uRF.I>4~wv?[_Ot;1'4Ξ4gheli>VWm9[v|cʜ͚6'l.[%g`6n.Fەkٍkw݄Ɤn4vѿoMl%u'>g%/o{SOwCylȿ~ןtA2PoBIZڹ'V,?O  wt	=HQj;0@g8~@i9I8g
ox=c
a1Ľ*_͕p$.H ͍Z 75FUd##Y1g⇆ a>(@tQӆ?+$!$D} 4$$e!`!@20mʜnn/#%ȣ _	*VwC!T^M$\}0 0!fdbe:Mux!KsNbX(yGȭن`L9b
,Mw1ۈg6H_bFe.PN 	# z\-vx3Ti׎	4<<ʜpIOzή2䔹ݘ3 5n5=Z0zr;#.D`#oz8&lZw`7qj lfleC.s1dI5T?~땗NƙIRM3L=o\VǤPq%EsɜaPij3p0o9t!<.aп@- U[s/GJǩ	 2ҽXUovlof_@j~Hc+I",9P~|Sg`ӪR%=3SHne\zXEky6|STdٽxY}Q97,`wZKjO{eڑa$wmYuBRWoҕ7TUu4g(P ٷ򗡱43wD7iƟmkc(n|8ʷaIB6e7;IND pu{3.]uSHNV=zb7?oDDS{z༼Դ@c~{?]HJfSɪl+M$1/jɠ~	n5af󪩰o,N?G	Ʀ|zD_VJE>m]?<mPoicr̘;P=L;.P,qŏ. "=E"v!9r͞4+0J~0ܚiKw8|W_Oط`P<\oZ9.ЈBωKjZ0Sb)|4
8C[(٨#׈G\>XGv*"}X>?
':rݻyXX>\PW"Sz!:]vEdֶh=Iv3Fǒ!<?kј#$H(wԒ˦^Ztߐz>p\8́~@d4+>?; {s(Ǜ 0ĠvGme?HKыa`NJ@ \`g1DdH	'I@aR?^,xd:˙kX1@ǋ8#|'+E${)bS(e&pA<e.uN΂:vvbb2DM	%\>r#}{xcIPw9ݑׄ1pDj}܂ ĊA+sX:rq2\TgGrtЈ L?\ VJ+`7H/"}* /LugZwVHD(]cdtɄܝN@>?_閩ݵ	o>~M &  &H$;xQtcn˺my.JݎC%T(&8p>9_ѥWf[YGcGuz^Pi@*@=bkl"p]>C(n{!'c;o\U%)qv1
'[*^}רlnW '+>wI*QNamTish0|7-8r5L4/".be<ͻQNCeRp?--M),4	
D(v16)@cǦjIOSܟf򲈒;c8J)w?ӭJc~'ZfimH,|J	y}SK-Aj
r;h=vrŷVTGl7=Pma"9R(@
Kje8_É]@26f4r	/2v,R?6vZ]8%0Puح|9w{Mt}6
[;zoxd @^JzHf
lmS;nŇ-[*~8;PNaZlJ&@b%HcLİ fyOxgC$.aaM˥\1 ?^[@z7-s2.ٯlG|0u \yv
((qTB
hܐ u)
 q߶&93io~㮦R

?eQI^ +vG㠭L0ALk@J@B.