* Masami Hiramatsu <[email protected]> wrote:

> Instead of calling BUG_ON, if we find a kprobe in use on free kprobe
> list, just remove it from the list and keep it on kprobe hash list
> as same as other in-use kprobes.
> 
> Signed-off-by: Masami Hiramatsu <[email protected]>
> ---
>  kernel/kprobes.c |    8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/kprobes.c b/kernel/kprobes.c
> index 63c342e5e6c3..e3420364b415 100644
> --- a/kernel/kprobes.c
> +++ b/kernel/kprobes.c
> @@ -546,8 +546,14 @@ static void do_free_cleaned_kprobes(void)
>       struct optimized_kprobe *op, *tmp;
>  
>       list_for_each_entry_safe(op, tmp, &freeing_list, list) {
> -             BUG_ON(!kprobe_unused(&op->kp));
>               list_del_init(&op->list);
> +             if (!kprobe_unused(&op->kp)) {
> +                     /*
> +                      * This must not happen, but if there is a kprobe
> +                      * still in use, keep it on kprobes hash list.
> +                      */
> +                     continue;

If this is an 'impossible' code path then I think it would make sense to add a 
WARN_ON_ONCE() 
here.

Thanks,

        Ingo

Reply via email to