fman = dev_get_drvdata(&fm_pdev->dev);
        if (!fman) {
                err = -EINVAL;
-               goto return_err;
+               goto put_device;
        }
 
        err = of_property_read_u32(port_node, "cell-index", &val);
                dev_err(port->dev, "%s: reading cell-index for %pOF failed\n",
                        __func__, port_node);
                err = -EINVAL;
-               goto return_err;
+               goto put_device;
        }
        port_id = (u8)val;
        port->dts_params.id = port_id;
        }  else {
                dev_err(port->dev, "%s: Illegal port type\n", __func__);
                err = -EINVAL;
-               goto return_err;
+               goto put_device;
        }
 
        port->dts_params.type = port_type;
                        dev_err(port->dev, "%s: incorrect qman-channel-id\n",
                                __func__);
                        err = -EINVAL;
-                       goto return_err;
+                       goto put_device;
                }
                port->dts_params.qman_channel_id = qman_channel_id;
        }
                dev_err(port->dev, "%s: of_address_to_resource() failed\n",
                        __func__);
                err = -ENOMEM;
-               goto return_err;
+               goto put_device;
        }
 
        port->dts_params.fman = fman;
 
        return 0;
 
+put_device:
+       put_device(&fm_pdev->dev);
 return_err:
        of_node_put(port_node);
 free_port: