Re: [PATCH v2 7/9] trace_uprobe/sdt: Fix multiple update of same reference counter
From: Ravi Bangoria
Date: Tue Apr 10 2018 - 04:21:30 EST
Hi Oleg,
On 04/09/2018 06:59 PM, Oleg Nesterov wrote:
> 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,
Yes. I should have added checks for failure cases.
Will fix them in v3.
Thanks for the review,
Ravi
> but let me repeat that
> I didn't read this version yet.
>
> Oleg.
>