On 08/06, Jiri Olsa wrote:
>
> We need to change the breakpoint even if the attr with
> new fields has disabled set to true.

Agreed... The patch looks fine to me, but I have a question

>  int modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr 
> *attr)
>  {
> +     int err;
> +
>       /*
>        * modify_user_hw_breakpoint can be invoked with IRQs disabled and 
> hence it
>        * will not be possible to raise IPIs that invoke __perf_event_disable.
> @@ -520,11 +522,11 @@ int modify_user_hw_breakpoint(struct perf_event *bp, 
> struct perf_event_attr *att
>       else
>               perf_event_disable(bp);
>  
> -     if (!attr->disabled) {
> -             int err = modify_user_hw_breakpoint_check(bp, attr, false);
> +     err = modify_user_hw_breakpoint_check(bp, attr, false);
> +     if (err)
> +             return err;
>  
> -             if (err)
> -                     return err;
> +     if (!attr->disabled) {
>               perf_event_enable(bp);
>               bp->attr.disabled = 0;

Afaics you do not need to clear attr.disabled, modify_user_hw_breakpoint_check()
updates it if err = 0. So I think

        if (!bp->attr.disabled)
                perf_event_enable(bp);

will look a bit better.


But, with or without this fix, shouldn't we set .disabled = 1 if modify_() 
fails?
IIUC this doesn't matter, bp->attr.disabled is not really used anyway, but 
looks a
bit confusing.

Oleg.

Reply via email to