Re: [PATCH] kprobes for 2.5.47

From: Randy.Dunlap (rddunlap@osdl.org)
Date: Tue Nov 12 2002 - 22:08:12 EST


On Tue, 12 Nov 2002, Rusty Lynch wrote:

| When register_kprobe() is called with a bad addr, we crash the kernel.
| Should it be the reponsibility of the caller, or the kernel to make sure the
| addr is ok?
|
| The kernel could check by adding a
|
| +unsigned short tmp;
| ....
| +if(__get_user(tmp, (unsigned short *)p->addr)) {
| + ret = -EINVAL;
| + goto out;
| +}
|
| to register_kprobe()

This looks good to me. Kernel should check user addresses.

| > +int register_kprobe(struct kprobe *p)
| > +{
| > + int ret = 0;
| > +
| > + spin_lock_irq(&kprobe_lock);
| > + if (get_kprobe(p->addr)) {
| > + ret = -EEXIST;
| > + goto out;
| > + }
| > + list_add(&p->list, &kprobe_table[hash_ptr(p->addr, KPROBE_HASH_BITS)]);
| > +
| > + p->opcode = *p->addr;
| > + *p->addr = BREAKPOINT_INSTRUCTION;
| > + flush_icache_range(p->addr, p->addr + sizeof(kprobe_opcode_t));
| > + out:
| > + spin_unlock_irq(&kprobe_lock);
| > + return ret;
| > +}
|
| BTW, I have a stupid little sample char driver that reads in address/message
| pairs and then adds a probe that printk's the message at the address. This
| was just my way of learning how to use kprobes. Should I post it? I would
| love to get feedback on what I did wrong, but I hate to spam the list.

I'd like to see it, but from a learning POV instead of telling
you what you did wrong with it.

Thanks.

-- 
~Randy
  "I read part of it all the way through." -- Samuel Goldwyn

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Nov 15 2002 - 22:00:28 EST