On 03/20/2012 04:31 PM, Tim Bird wrote:
> On 03/20/2012 11:32 AM, Jason Wessel wrote:
>> On 09/21/2011 03:07 PM, Tim Bird wrote:
>>> On x86, if CONFIG_DEBUG_RODATA is set, one cannot set breakpoints
>>> via KDB.  Apparently this is a well-known problem, as at least one 
>>> distribution
>>> now ships with both KDB enabled and CONFIG_DEBUG_RODATA=y for security 
>>> reasons.
>>>
>>> This patch just adds an extra printk message to the breakpoint failure case,
>>> in order to provide some useful diagnostics to the user.
>>>
>> The patch is definitely the right idea.  I believe we should try and tell 
>> the whole story and only print the message for the type of breakpoint that 
>> fails.  It is absolutely the case that you can still use kdb/kdb without 
>> recompiling the kernel.
>>
>> I propose a slightly different implementation below.
> The new patch looks fine.

Thanks.  Because you posed the question a while back about potentially changing 
this such that it works, I thought I might re-open the discussion around 
further integration with kgdb/kdb and kprobes.   Back in 2008 I explained you 
can "hack it" so as to use copy on write patches, just for the debugger in 
order to use software breakpoints.

Something horrible like:

@@ -42,11 +43,24 @@ EXPORT_SYMBOL_GPL(probe_kernel_read);
 long probe_kernel_write(void *dst, void *src, size_t size)
 {
        long ret;
+#ifdef CONFIG_X86
+       unsigned int level;
+       pte_t *pte = lookup_address((unsigned long)dst, &level);
+       int unprotect = !pte_write(*pte);
+#endif
        mm_segment_t old_fs = get_fs();

[...clipped rest of original hack...]

Obviously we are not going to go down the horrible hack route, so I thought I 
might look at how the kprobe implementation works, because they do deal with 
read-only pages.   They created a function called text_poke() that is called 
from arch_arm_probe().

It might be possible to take a short cut and use the arch_arm_probe() directly. 
 Ultimately I would like to consider just using kprobes instead for things like 
single stepping etc..., but it still has a few problems with atomic 
reservations.  This work had been shelved in back 2010, in favor of merging 
kdb.  I am not sure if anyone wants to take a look at it, but I do think it 
might warrant some experimentation.

Jason.

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Kgdb-bugreport mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to