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;