nfp: flower: verify that block cb is not busy before binding
When processing FLOW_BLOCK_BIND command on indirect block, check that flow
block cb is not busy.
Fixes: 0d4fd02e71
("net: flow_offload: add flow_block_cb_is_busy() and use it")
Reported-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cd9d4ff9b7
commit
1edfb8ed6c
@ -1416,6 +1416,13 @@ nfp_flower_setup_indr_tc_block(struct net_device *netdev, struct nfp_app *app,
|
|||||||
|
|
||||||
switch (f->command) {
|
switch (f->command) {
|
||||||
case FLOW_BLOCK_BIND:
|
case FLOW_BLOCK_BIND:
|
||||||
|
cb_priv = nfp_flower_indr_block_cb_priv_lookup(app, netdev);
|
||||||
|
if (cb_priv &&
|
||||||
|
flow_block_cb_is_busy(nfp_flower_setup_indr_block_cb,
|
||||||
|
cb_priv,
|
||||||
|
&nfp_block_cb_list))
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
cb_priv = kmalloc(sizeof(*cb_priv), GFP_KERNEL);
|
cb_priv = kmalloc(sizeof(*cb_priv), GFP_KERNEL);
|
||||||
if (!cb_priv)
|
if (!cb_priv)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
Loading…
Reference in New Issue
Block a user