@@ -159,17 +159,11 @@ static unsigned int dbg_rw_guest_mem(struct domain *dp, unsigned long addr,
* Returns: number of bytes remaining to be copied.
*/
unsigned int dbg_rw_mem(unsigned long gva, XEN_GUEST_HANDLE_PARAM(void) buf,
- unsigned int len, domid_t domid, bool toaddr,
+ unsigned int len, struct domain *d, bool toaddr,
uint64_t pgd3)
{
- struct domain *d = rcu_lock_domain_by_id(domid);
-
- if ( d )
- {
- if ( !d->is_dying )
- len = dbg_rw_guest_mem(d, gva, buf, len, toaddr, pgd3);
- rcu_unlock_domain(d);
- }
+ if ( d && !d->is_dying )
+ len = dbg_rw_guest_mem(d, gva, buf, len, toaddr, pgd3);
return len;
}
@@ -38,10 +38,10 @@
#include <asm/cpuid.h>
#ifdef CONFIG_GDBSX
-static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop)
+static int gdbsx_guest_mem_io(struct domain *d, struct xen_domctl_gdbsx_memio *iop)
{
iop->remain = dbg_rw_mem(iop->gva, guest_handle_from_ptr(iop->uva, void),
- iop->len, domid, iop->gwr, iop->pgd3val);
+ iop->len, d, iop->gwr, iop->pgd3val);
return iop->remain ? -EFAULT : 0;
}
@@ -828,7 +828,7 @@ long arch_do_domctl(
#ifdef CONFIG_GDBSX
case XEN_DOMCTL_gdbsx_guestmemio:
domctl->u.gdbsx_guest_memio.remain = domctl->u.gdbsx_guest_memio.len;
- ret = gdbsx_guest_mem_io(domctl->domain, &domctl->u.gdbsx_guest_memio);
+ ret = gdbsx_guest_mem_io(d, &domctl->u.gdbsx_guest_memio);
if ( !ret )
copyback = true;
break;
@@ -94,7 +94,7 @@ static inline bool debugger_trap_entry(
#ifdef CONFIG_GDBSX
unsigned int dbg_rw_mem(unsigned long gva, XEN_GUEST_HANDLE_PARAM(void) buf,
- unsigned int len, domid_t domid, bool toaddr,
+ unsigned int len, struct domain *d, bool toaddr,
uint64_t pgd3);
#endif
Modify the gdbsx_guest_mem_io() interface to take the already known domain pointer as parameter instead of the domid. This enables to remove some more code further down the call tree. Suggested-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Juergen Gross <jgross@suse.com> --- V2: - split off from previous patch (Andrew Cooper) --- xen/arch/x86/debug.c | 12 +++--------- xen/arch/x86/domctl.c | 6 +++--- xen/arch/x86/include/asm/debugger.h | 2 +- 3 files changed, 7 insertions(+), 13 deletions(-)