On Sun, 20 Sep 2026 10:28:10 +0800
"Peng Fan (OSS)" <[email protected]> wrote:

> From: Peng Fan <[email protected]>
> 
> Convert open-coded if/else with set_bit/clear_bit the assign_bit API.
> 
> Done with Coccinelle semantic patch:
>     // set_bit -> clear_bit => assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        set_bit(bit, addr);
>     -else
>     -        clear_bit(bit, addr);
>     +assign_bit(bit, addr, cond);
> 
>     // clear_bit -> set_bit => assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        clear_bit(bit, addr);
>     -else
>     -        set_bit(bit, addr);
>     +assign_bit(bit, addr, !cond);
> 
>     // __set_bit -> __clear_bit => __assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        __set_bit(bit, addr);
>     -else
>     -        __clear_bit(bit, addr);
>     +__assign_bit(bit, addr, cond);
> 
>     // __clear_bit -> __set_bit => __assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        __clear_bit(bit, addr);
>     -else
>     -        __set_bit(bit, addr);
>     +__assign_bit(bit, addr, !cond);
> 
> Signed-off-by: Peng Fan <[email protected]>
> ---
>  kernel/trace/trace_events.c         | 12 ++++--------
>  kernel/trace/trace_events_trigger.c | 11 +++--------
>  kernel/trace/trace_events_user.c    |  5 +----
>  3 files changed, 8 insertions(+), 20 deletions(-)
> 
> diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
> index 30c0ddf90887..72a210da67d6 100644
> --- a/kernel/trace/trace_events.c
> +++ b/kernel/trace/trace_events.c
> @@ -859,10 +859,8 @@ static int __ftrace_event_enable_disable(struct 
> trace_event_file *file,
>                       WARN_ON_ONCE(ret);
>               }
>               /* If in soft mode, just set the SOFT_DISABLE_BIT, else clear 
> it */
> -             if (soft_mode)
> -                     set_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags);
> -             else
> -                     clear_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, 
> &file->flags);
> +             assign_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags,
> +                        soft_mode);

Please make it a single line. tracing is not strict about the 80 line
limit if it makes it look worse.

>               break;
>       case 1:
>               /*
> @@ -4273,10 +4271,8 @@ struct event_probe_data {
>  
>  static void update_event_probe(struct event_probe_data *data)
>  {
> -     if (data->enable)
> -             clear_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &data->file->flags);
> -     else
> -             set_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &data->file->flags);
> +     assign_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &data->file->flags,
> +                !data->enable);

Ditto.

>  }
>  
>  static void
> diff --git a/kernel/trace/trace_events_trigger.c 
> b/kernel/trace/trace_events_trigger.c
> index 4d2fde996c0f..3b5e14fd0dd9 100644
> --- a/kernel/trace/trace_events_trigger.c
> +++ b/kernel/trace/trace_events_trigger.c
> @@ -674,10 +674,7 @@ void update_cond_flag(struct trace_event_file *file)
>               }
>       }
>  
> -     if (set_cond)
> -             set_bit(EVENT_FILE_FL_TRIGGER_COND_BIT, &file->flags);
> -     else
> -             clear_bit(EVENT_FILE_FL_TRIGGER_COND_BIT, &file->flags);
> +     assign_bit(EVENT_FILE_FL_TRIGGER_COND_BIT, &file->flags, set_cond);
>  }
>  
>  /**
> @@ -1673,10 +1670,8 @@ event_enable_trigger(struct event_trigger_data *data,
>  {
>       struct enable_trigger_data *enable_data = data->private_data;
>  
> -     if (enable_data->enable)
> -             clear_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, 
> &enable_data->file->flags);
> -     else
> -             set_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, 
> &enable_data->file->flags);
> +     assign_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &enable_data->file->flags,
> +                !enable_data->enable);

Ditto.

Thanks,

-- Steve
 
>  }
>  
>  static bool
> diff --git a/kernel/trace/trace_events_user.c 
> b/kernel/trace/trace_events_user.c
> index f658c3a77aa7..055894cb999c 100644
> --- a/kernel/trace/trace_events_user.c
> +++ b/kernel/trace/trace_events_user.c
> @@ -590,10 +590,7 @@ static int user_event_enabler_write(struct user_event_mm 
> *mm,
>       ptr = kaddr + (uaddr & ~PAGE_MASK);
>  
>       /* Update bit atomically, user tracers must be atomic as well */
> -     if (enabler->event && enabler->event->status)
> -             set_bit(bit, ptr);
> -     else
> -             clear_bit(bit, ptr);
> +     assign_bit(bit, ptr, enabler->event && enabler->event->status);
>  
>       kunmap_local(kaddr);
>       unpin_user_pages_dirty_lock(&page, 1, true);


Reply via email to