On 09/02, Jiri Olsa wrote: > > +static bool consumer_can_add(struct list_head *head, struct uprobe_consumer *uc) > +{ > + /* Uprobe has no consumer, we can add any. */ > + if (list_empty(head)) > + return true; > + /* Uprobe has consumer/s, we can't add unique one. */ > + if (uc->is_unique) > + return false; > + /* > + * Uprobe has consumer/s, we can add nother consumer only if the > + * current consumer is not unique. > + **/ > + return !list_first_entry(head, struct uprobe_consumer, cons_node)->is_unique; > +} Since you are going to send V2 anyway... purely cosmetic and subjective nit, but somehow I can't resist, bool consumer_can_add(struct list_head *head, struct uprobe_consumer *new) { struct uprobe_consumer *old = list_first_entry_or_null(...); return !old || (!old->exclusive && !new->exclusive); } looks a bit more readable to me. Please ignore if you like your version more. Oleg.