On Thu, 22 Aug 2019 15:43:44 +0300, Vlad Buslov wrote:
> @@ -2987,19 +3007,26 @@ int tc_setup_cb_call(struct tcf_block *block, enum 
> tc_setup_type type,
>       int ok_count = 0;
>       int err;
>  
> +     down_read(&block->cb_lock);
>       /* Make sure all netdevs sharing this block are offload-capable. */
> -     if (block->nooffloaddevcnt && err_stop)
> -             return -EOPNOTSUPP;
> +     if (block->nooffloaddevcnt && err_stop) {
> +             ok_count = -EOPNOTSUPP;
> +             goto errout;
> +     }
>  
>       list_for_each_entry(block_cb, &block->flow_block.cb_list, list) {
>               err = block_cb->cb(type, type_data, block_cb->cb_priv);
>               if (err) {
> -                     if (err_stop)
> -                             return err;
> +                     if (err_stop) {
> +                             ok_count = err;
> +                             goto errout;
> +                     }
>               } else {
>                       ok_count++;
>               }
>       }
> +errout:

Please name the labels with the first action they perform. Here:

err_unlock:

> +     up_read(&block->cb_lock);
>       return ok_count;

Reply via email to