On 09/03, Jiri Olsa wrote: > > On Wed, Sep 03, 2025 at 01:26:48PM +0200, Oleg Nesterov wrote: > > On 09/02, Jiri Olsa wrote: > > > > > > If user decided to take execution elsewhere, it makes little sense > > > to execute the original instruction, so let's skip it. > > > > Exactly. > > > > So why do we need all these "is_unique" complications? Only a single > > is_unique/exclusive consumer can change regs->ip, so I guess handle_swbp() > > can just do > > > > handler_chain(uprobe, regs); > > if (instruction_pointer(regs) != bp_vaddr) > > goto out; > > hum, that's what I did in rfc [1] but I thought you did not like that [2] > > [1] https://lore.kernel.org/bpf/20250801210238.2207429-2-jo...@kernel.org/ > [2] https://lore.kernel.org/bpf/20250802103426.gc31...@redhat.com/ > > I guess I misunderstood your reply [2], I'd be happy to drop the > unique/exclusive flag
Well, but that rfc didn't introduce the exclusive consumers, and I think we agree that even with these changes the non-exclusive consumers must never change regs->ip? > > But if a non-exclusive consumer changes regs->ip, we have a problem > > anyway, right? > > > > We can probably add something like > > > > rc = uc->handler(uc, regs, &cookie); > > + WARN_ON(!uc->is_unique && instruction_pointer(regs) != > > bp_vaddr); > > > > into handler_chain(), although I don't think this is needed. Oleg.