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.
>

Reply via email to