On Thu, Dec 05, 2024 at 04:24:14PM -0800, Andrii Nakryiko wrote: SNIP > static struct return_instance *alloc_return_instance(void) > { > struct return_instance *ri; > > - ri = kzalloc(ri_size(DEF_CNT), GFP_KERNEL); > + ri = kzalloc(sizeof(*ri), GFP_KERNEL); > if (!ri) > return ZERO_SIZE_PTR; > > - ri->consumers_cnt = DEF_CNT; > return ri; > } > > static struct return_instance *dup_return_instance(struct return_instance *old) > { > - size_t size = ri_size(old->consumers_cnt); > + struct return_instance *ri; > + > + ri = kmemdup(old, sizeof(*ri), GFP_KERNEL); missing ri == NULL check jirka > + > + if (unlikely(old->cons_cnt > 1)) { > + ri->extra_consumers = kmemdup(old->extra_consumers, > + sizeof(ri->extra_consumers[0]) * (old->cons_cnt - 1), > + GFP_KERNEL); > + if (!ri->extra_consumers) { > + kfree(ri); > + return NULL; > + } > + } > > - return kmemdup(old, size, GFP_KERNEL); > + return ri; > } > > static int dup_utask(struct task_struct *t, struct uprobe_task *o_utask) > @@ -2369,25 +2372,28 @@ static struct uprobe *find_active_uprobe_rcu(unsigned long bp_vaddr, int *is_swb > return uprobe; > } > > -static struct return_instance* SNIP