[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <54ACFFB6.3040102@huawei.com>
Date: Wed, 7 Jan 2015 17:43:18 +0800
From: Wang Nan <wangnan0@...wei.com>
To: Hillf Danton <hillf.zj@...baba-inc.com>
CC: <linux@....linux.org.uk>, Ingo Molnar <mingo@...hat.com>,
<masami.hiramatsu.pt@...achi.com>,
<anil.s.keshavamurthy@...el.com>, <davem@...emloft.net>,
<ananth@...ibm.com>, <dave.long@...aro.org>, <tixy@...aro.org>,
<lizefan@...wei.com>, linux-kernel <linux-kernel@...r.kernel.org>
Subject: Re: [RFC PATCH 09/11] kprobes: core logic of eraly kprobes
On 2015/1/7 17:21, Hillf Danton wrote:
>>
>> +struct early_kprobe_slot {
>> + struct optimized_kprobe op;
>> +};
>> +
> [...]
>>
>> /* Free optimized instructions and optimized_kprobe */
>> +static int ek_free_early_kprobe(struct early_kprobe_slot *slot);
>
> [2] How is it implemented? In subsequent patches?
>
It is implemented using macro. Please see patch 7/11 and
DEFINE_EKPROBE_ALLOC_OPS(struct early_kprobe_slot, early_kprobe, static);
following.
>> static void free_aggr_kprobe(struct kprobe *p)
>> {
>> struct optimized_kprobe *op;
>> + struct early_kprobe_slot *ep;
>>
>> op = container_of(p, struct optimized_kprobe, kp);
>> arch_remove_optimized_kprobe(op);
>> arch_remove_kprobe(p);
>> - kfree(op);
>> + ep = container_of(op, struct early_kprobe_slot, op);
>> + if (likely(!ek_free_early_kprobe(ep)))
>> + kfree(op);
>
> [1] s/op/ep/ yes?
Which one? Do you mean kfree(op) --> kfree(ep)?
If ek_free_early_kprobe(ep) fail (not in early_kprobe area defined by
DEFINE_EKPROBE_ALLOC_OPS), then this is a normal aggr probe, allocated
using kzalloc() as struct optimized_kprobe, see alloc_aggr_kprobe().
So kfree corresponding op structure.
If ek_free_early_kprobe(ep) success, then this is an struct early_kprobe_slot
and allocated statically.
>> }
>>
> [...]
>> +#else
>> +static int register_early_kprobe(struct kprobe *p) { return -ENOSYS; }
>> +static int ek_free_early_kprobe(struct early_kprobe_slot *slot) { return 0; }
>
> [3] Compile-able with CONFIG_EARLY_KPROBES enabled?
These empty functions are for CONFIG_EARLY_KPROBES disabled. They won't be compiled
when CONFIG_EARLY_KPROBES=y. I have tested both cases on x86 and ARM.
>
>> +static void convert_early_kprobes(void) {};
>> +#endif
>> --
>> 1.8.4
>
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists