Skip to content

Commit

Permalink
kgdb: fix optional arch functions and probe_kernel_*
Browse files Browse the repository at this point in the history
Fix two regressions dealing with the kgdb core.

1) kgdb_skipexception and kgdb_post_primary_code are optional
functions that are only required on archs that need special exception
fixups.

2) The kernel address space scope must be set on any probe_kernel_*
function or archs such as ARCH=arm will not allow access to the kernel
memory space.  As an example, it is required to allow the full kernel
address space is when you the kernel debugger to inspect a system
call.

Signed-off-by: Jason Wessel <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
  • Loading branch information
jwessel authored and Ingo Molnar committed Apr 17, 2008
1 parent 64e9ee3 commit b4b8ac5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
11 changes: 11 additions & 0 deletions kernel/kgdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,17 @@ int __weak kgdb_arch_init(void)
return 0;
}

int __weak kgdb_skipexception(int exception, struct pt_regs *regs)
{
return 0;
}

void __weak
kgdb_post_primary_code(struct pt_regs *regs, int e_vector, int err_code)
{
return;
}

/**
* kgdb_disable_hw_debug - Disable hardware debugging while we in kgdb.
* @regs: Current &struct pt_regs.
Expand Down
6 changes: 6 additions & 0 deletions mm/maccess.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@
long probe_kernel_read(void *dst, void *src, size_t size)
{
long ret;
mm_segment_t old_fs = get_fs();

set_fs(KERNEL_DS);
pagefault_disable();
ret = __copy_from_user_inatomic(dst,
(__force const void __user *)src, size);
pagefault_enable();
set_fs(old_fs);

return ret ? -EFAULT : 0;
}
Expand All @@ -39,10 +42,13 @@ EXPORT_SYMBOL_GPL(probe_kernel_read);
long probe_kernel_write(void *dst, void *src, size_t size)
{
long ret;
mm_segment_t old_fs = get_fs();

set_fs(KERNEL_DS);
pagefault_disable();
ret = __copy_to_user_inatomic((__force void __user *)dst, src, size);
pagefault_enable();
set_fs(old_fs);

return ret ? -EFAULT : 0;
}
Expand Down

0 comments on commit b4b8ac5

Please sign in to comment.