From: Jason Wessel <jason.wessel@windriver.com>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org,
kgdb-bugreport@lists.sourceforge.net,
Jason Wessel <jason.wessel@windriver.com>,
Sonic Zhang <sonic.zhang@analog.com>,
Mike Frysinger <vapier@gentoo.org>
Subject: [PATCH 4/8] kgdb: have ebin2mem call probe_kernel_write once
Date: Mon, 22 Mar 2010 14:17:25 -0500 [thread overview]
Message-ID: <1269285449-1424-5-git-send-email-jason.wessel@windriver.com> (raw)
In-Reply-To: <1269285449-1424-4-git-send-email-jason.wessel@windriver.com>
Rather than call probe_kernel_write() one byte at a time, process the
whole buffer locally and pass the entire result in one go. This way,
architectures that need to do special handling based on the length can
do so, or we only end up calling memcpy() once.
[sonic.zhang@analog.com: Reported original problem and preliminary patch]
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
kernel/debug/gdbstub.c | 23 +++++++++--------------
1 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/kernel/debug/gdbstub.c b/kernel/debug/gdbstub.c
index ab29bce..ccdf092 100644
--- a/kernel/debug/gdbstub.c
+++ b/kernel/debug/gdbstub.c
@@ -293,27 +293,22 @@ int kgdb_hex2long(char **ptr, unsigned long *long_val)
/*
* Copy the binary array pointed to by buf into mem. Fix $, #, and
- * 0x7d escaped with 0x7d. Return a pointer to the character after
- * the last byte written.
+ * 0x7d escaped with 0x7d. Return -EFAULT on failure or 0 on success.
+ * The input buf is overwitten with the result to write to mem.
*/
static int kgdb_ebin2mem(char *buf, char *mem, int count)
{
- int err = 0;
- char c;
+ int size = 0;
+ char *c = buf;
while (count-- > 0) {
- c = *buf++;
- if (c == 0x7d)
- c = *buf++ ^ 0x20;
-
- err = probe_kernel_write(mem, &c, 1);
- if (err)
- break;
-
- mem++;
+ c[size] = *buf++;
+ if (c[size] == 0x7d)
+ c[size] = *buf++ ^ 0x20;
+ size++;
}
- return err;
+ return probe_kernel_write(mem, c, size);
}
/* Write memory due to an 'M' or 'X' packet. */
--
1.6.4.rc1
next prev parent reply other threads:[~2010-03-22 19:18 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-22 19:17 [GIT PULL] kgdb fixes for 2.6.34-rc2 Jason Wessel
2010-03-22 19:17 ` [PATCH 1/8] Move kernel/kgdb.c to kernel/debug/debug_core.c Jason Wessel
2010-03-22 19:17 ` [PATCH 2/8] Separate the gdbstub from the debug core Jason Wessel
2010-03-22 19:17 ` [PATCH 3/8] kgdb: eliminate kgdb_wait(), all cpus enter the same way Jason Wessel
2010-03-22 19:17 ` Jason Wessel [this message]
2010-03-22 19:17 ` [PATCH 5/8] kgdb,debug_core: Use atomic operators which use barriers Jason Wessel
2010-03-22 19:17 ` [PATCH 6/8] kgdbts,sh: Add in breakpoint pc offset for superh Jason Wessel
2010-03-22 19:17 ` [PATCH 7/8] debug_core: Turn off tracing while in the debugger Jason Wessel
2010-03-22 19:17 ` [PATCH 8/8] MAINTAINERS: update kgdb, and debug_core info Jason Wessel
2010-03-29 14:01 ` [GIT PULL] kgdb fixes for 2.6.34-rc2 Jason Wessel
2010-04-01 16:04 ` Linus Torvalds
2010-04-02 18:38 ` Jason Wessel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1269285449-1424-5-git-send-email-jason.wessel@windriver.com \
--to=jason.wessel@windriver.com \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=sonic.zhang@analog.com \
--cc=torvalds@linux-foundation.org \
--cc=vapier@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome