coresight-etm: unlock on error paths in mode_store()
PATCH 1/1 coresight-etm: unlock on error paths in mode_store()
There are some missing unlocks on the error paths.
Fixes a939fc5a71ad ('coresight-etm: add CoreSight ETM/PTM driver')
Signed-off-by Dan Carpenter <[email protected]>
---
I don't have a cross compiler set up so I haven't compiled this. But I think it doesn't have any typos. :)
drivers/coresight/coresight-etm3x.c +8 -2
@@ -573,7 +573,8 @@ static ssize_t mode_store(struct device *dev,if (drvdata->mode &ETM_MODE_STALL ) {if (!(drvdata->etmccr &ETMCCR_FIFOFULL )) {dev_warn (drvdata->dev,"stall mode not supported\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto err_unlock; } drvdata->ctrl |=ETMCR_STALL_MODE ; }else
@@ -582,7 +583,8 @@ static ssize_t mode_store(struct device *dev,if (drvdata->mode &ETM_MODE_TIMESTAMP ) {if (!(drvdata->etmccer &ETMCCER_TIMESTAMP )) {dev_warn (drvdata->dev,"timestamp not supported\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto err_unlock; } drvdata->ctrl |=ETMCR_TIMESTAMP_EN ; }else
@@ -595,6 +597,10 @@ static ssize_t mode_store(struct device *dev,spin_unlock (&drvdata->spinlock);return size; + +err_unlock: +spin_unlock (&drvdata->spinlock); +return ret; }static DEVICE_ATTR_RW (mode);
Quoted 33 lines · Dan Carpenter
There are some missing unlocks on the error paths.
Fixes a939fc5a71ad ('coresight-etm: add CoreSight ETM/PTM driver')Signed-off-by Dan Carpenter <[email protected]>---
I don't have a cross compiler set up so I haven't compiled this. But I think it doesn't have any typos. :)drivers/coresight/coresight-etm3x.c +4
-2@@ -573,7 +573,8 @@ static ssize_t mode_store(struct device *dev,if (drvdata->mode &ETM_MODE_STALL ) {if (!(drvdata->etmccr &ETMCCR_FIFOFULL )) {dev_warn (drvdata->dev,"stall mode not supported\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto err_unlock; } drvdata->ctrl |=ETMCR_STALL_MODE ; }else @@ -582,7 +583,8 @@ static ssize_t mode_store(struct device *dev,if (drvdata->mode &ETM_MODE_TIMESTAMP ) {if (!(drvdata->etmccer &ETMCCER_TIMESTAMP )) {dev_warn (drvdata->dev,"timestamp not supported\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto err_unlock; } drvdata->ctrl |=ETMCR_TIMESTAMP_EN ; }else
drivers/coresight/coresight-etm3x.c static ssize_t mode_store(struct device *dev, · line 606
Quoted 10 lines
drivers/coresight/coresight-etm3x.c +4
-0@@ -595,6 +597,10 @@ static ssize_t mode_store(struct device *dev,spin_unlock (&drvdata->spinlock);return size; + +err_unlock: +spin_unlock (&drvdata->spinlock); +return ret; }static DEVICE_ATTR_RW (mode);
Applied - thanks