bnxt_en: Register devlink instance at the end devlink configuration
authorLeon Romanovsky <leonro@nvidia.com>
Sat, 25 Sep 2021 11:22:42 +0000 (14:22 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Sep 2021 15:31:58 +0000 (16:31 +0100)
Move devlink_register() to be last command in devlink configuration
sequence, so no user space access will be possible till devlink instance
is fully operable. As part of this change, the devlink_params_publish
call is removed as not needed.

This change fixes forgotten devlink_params_unpublish() too.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c

index ed95e28d60efd3688a97e22cdee79b101f7d3040..951c0c00cc9521f0ed8868e02ed90d3003fa91e5 100644 (file)
@@ -745,14 +745,10 @@ static int bnxt_dl_params_register(struct bnxt *bp)
 
        rc = devlink_params_register(bp->dl, bnxt_dl_params,
                                     ARRAY_SIZE(bnxt_dl_params));
-       if (rc) {
+       if (rc)
                netdev_warn(bp->dev, "devlink_params_register failed. rc=%d\n",
                            rc);
-               return rc;
-       }
-       devlink_params_publish(bp->dl);
-
-       return 0;
+       return rc;
 }
 
 static void bnxt_dl_params_unregister(struct bnxt *bp)
@@ -792,9 +788,8 @@ int bnxt_dl_register(struct bnxt *bp)
            bp->hwrm_spec_code > 0x10803)
                bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY;
 
-       devlink_register(dl);
        if (!BNXT_PF(bp))
-               return 0;
+               goto out;
 
        attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
        attrs.phys.port_number = bp->pf.port_id;
@@ -811,6 +806,8 @@ int bnxt_dl_register(struct bnxt *bp)
        if (rc)
                goto err_dl_port_unreg;
 
+out:
+       devlink_register(dl);
        return 0;
 
 err_dl_port_unreg:
@@ -824,10 +821,10 @@ void bnxt_dl_unregister(struct bnxt *bp)
 {
        struct devlink *dl = bp->dl;
 
+       devlink_unregister(dl);
        if (BNXT_PF(bp)) {
                bnxt_dl_params_unregister(bp);
                devlink_port_unregister(&bp->dl_port);
        }
-       devlink_unregister(dl);
        devlink_free(dl);
 }