On Tue, Mar 27, 2018 at 12:05:23PM -0400, Mathieu Desnoyers wrote: > +#ifdef CONFIG_RSEQ > + struct rseq __user *rseq; > + u32 rseq_len; > + u32 rseq_sig; > + /* > + * RmW on rseq_event_mask must be performed atomically > + * with respect to preemption. > + */ > + unsigned long rseq_event_mask; > +#endif > +static inline void rseq_signal_deliver(struct pt_regs *regs) > +{ > + set_bit(RSEQ_EVENT_SIGNAL_BIT, ¤t->rseq_event_mask); > + rseq_handle_notify_resume(regs); > +} > + > +static inline void rseq_preempt(struct task_struct *t) > +{ > + set_bit(RSEQ_EVENT_PREEMPT_BIT, &t->rseq_event_mask); > + rseq_set_notify_resume(t); > +} > + > +static inline void rseq_migrate(struct task_struct *t) > +{ > + set_bit(RSEQ_EVENT_MIGRATE_BIT, &t->rseq_event_mask); > + rseq_set_notify_resume(t); > +} Given that comment above, do you really need the full atomic set bit? Isn't __set_bit() sufficient? -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html