On 04/04, Ravi Bangoria wrote:
>
> +static void sdt_add_mm_list(struct trace_uprobe *tu, struct mm_struct *mm)
> +{
> +     struct mmu_notifier *mn;
> +     struct sdt_mm_list *sml = kzalloc(sizeof(*sml), GFP_KERNEL);
> +
> +     if (!sml)
> +             return;
> +     sml->mm = mm;
> +     list_add(&(sml->list), &(tu->sml.list));
> +
> +     /* Register mmu_notifier for this mm. */
> +     mn = kzalloc(sizeof(*mn), GFP_KERNEL);
> +     if (!mn)
> +             return;
> +
> +     mn->ops = &sdt_mmu_notifier_ops;
> +     __mmu_notifier_register(mn, mm);
> +}

and what if __mmu_notifier_register() fails simply because signal_pending() == 
T?
see mm_take_all_locks().

at first glance this all look suspicious and sub-optimal, but let me repeat that
I didn't read this version yet.

Oleg.

Reply via email to