@@ -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);
}
@@ -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;
@@ -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 *));