]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fpga: dfl: drop unneeded get_device() and put_device() of feature device
authorPeter Colberg <peter.colberg@intel.com>
Wed, 20 Nov 2024 01:10:33 +0000 (20:10 -0500)
committerXu Yilun <yilun.xu@linux.intel.com>
Wed, 18 Dec 2024 14:28:48 +0000 (22:28 +0800)
The feature device data was originally stored as platform data, hence
the memory allocation was tied to the lifetime of the feature device.
Now that the feature device data is tied to the lifetime of the DFL PCIe
FPGA device instead, get_device() and put_device() are no longer needed.

Signed-off-by: Peter Colberg <peter.colberg@intel.com>
Reviewed-by: Matthew Gerlach <matthew.gerlach@linux.intel.com>
Reviewed-by: Basheer Ahmed Muddebihal <basheer.ahmed.muddebihal@linux.intel.com>
Acked-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20241120011035.230574-18-peter.colberg@intel.com
Signed-off-by: Xu Yilun <yilun.xu@linux.intel.com>
drivers/fpga/dfl-fme-br.c
drivers/fpga/dfl.c
drivers/fpga/dfl.h

index 7bd7389aad8fb34c3a2f7996d8b9cf63edf8de8d..28b0f9d062ac4d863eff484da2072bee11f03e0a 100644 (file)
@@ -85,8 +85,6 @@ static void fme_br_remove(struct platform_device *pdev)
 
        fpga_bridge_unregister(br);
 
-       if (priv->port_fdata)
-               put_device(&priv->port_fdata->dev->dev);
        if (priv->port_ops)
                dfl_fpga_port_ops_put(priv->port_ops);
 }
index b62507492a6962e2326b6d03b1e664957bf3c244..c20937ef2c9a6d3a512da4760e159044b3479c33 100644 (file)
@@ -734,7 +734,6 @@ static void dfl_fpga_cdev_add_port_data(struct dfl_fpga_cdev *cdev,
 {
        mutex_lock(&cdev->lock);
        list_add(&fdata->node, &cdev->port_dev_list);
-       get_device(&fdata->dev->dev);
        mutex_unlock(&cdev->lock);
 }
 
@@ -1645,7 +1644,6 @@ void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev)
                        platform_device_put(port_dev);
 
                list_del(&fdata->node);
-               put_device(&port_dev->dev);
        }
        mutex_unlock(&cdev->lock);
 
@@ -1677,7 +1675,7 @@ __dfl_fpga_cdev_find_port_data(struct dfl_fpga_cdev *cdev, void *data,
        struct dfl_feature_dev_data *fdata;
 
        list_for_each_entry(fdata, &cdev->port_dev_list, node) {
-               if (match(fdata, data) && get_device(&fdata->dev->dev))
+               if (match(fdata, data))
                        return fdata;
        }
 
@@ -1728,19 +1726,17 @@ int dfl_fpga_cdev_release_port(struct dfl_fpga_cdev *cdev, int port_id)
 
        if (!device_is_registered(&fdata->dev->dev)) {
                ret = -EBUSY;
-               goto put_dev_exit;
+               goto unlock_exit;
        }
 
        mutex_lock(&fdata->lock);
        ret = dfl_feature_dev_use_begin(fdata, true);
        mutex_unlock(&fdata->lock);
        if (ret)
-               goto put_dev_exit;
+               goto unlock_exit;
 
        platform_device_del(fdata->dev);
        cdev->released_port_num++;
-put_dev_exit:
-       put_device(&fdata->dev->dev);
 unlock_exit:
        mutex_unlock(&cdev->lock);
        return ret;
@@ -1771,20 +1767,18 @@ int dfl_fpga_cdev_assign_port(struct dfl_fpga_cdev *cdev, int port_id)
 
        if (device_is_registered(&fdata->dev->dev)) {
                ret = -EBUSY;
-               goto put_dev_exit;
+               goto unlock_exit;
        }
 
        ret = platform_device_add(fdata->dev);
        if (ret)
-               goto put_dev_exit;
+               goto unlock_exit;
 
        mutex_lock(&fdata->lock);
        dfl_feature_dev_use_end(fdata);
        mutex_unlock(&fdata->lock);
 
        cdev->released_port_num--;
-put_dev_exit:
-       put_device(&fdata->dev->dev);
 unlock_exit:
        mutex_unlock(&cdev->lock);
        return ret;
index 2e38c42b3920696ce3f7d2f280d84b7f5e40bf39..95539f1213cb86b532e967d43fd7e08254c6136c 100644 (file)
@@ -551,11 +551,6 @@ struct dfl_fpga_cdev *
 dfl_fpga_feature_devs_enumerate(struct dfl_fpga_enum_info *info);
 void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev);
 
-/*
- * need to drop the device reference with put_device() after use port platform
- * device returned by __dfl_fpga_cdev_find_port and dfl_fpga_cdev_find_port
- * functions.
- */
 struct dfl_feature_dev_data *
 __dfl_fpga_cdev_find_port_data(struct dfl_fpga_cdev *cdev, void *data,
                               int (*match)(struct dfl_feature_dev_data *, void *));