]> www.infradead.org Git - linux.git/commitdiff
iio: adc: adi-axi-adc: don't allow concurrent enable/disable calls
authorNuno Sa <nuno.sa@analog.com>
Fri, 31 May 2024 09:41:54 +0000 (11:41 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 4 Jun 2024 18:53:07 +0000 (19:53 +0100)
Add proper mutex guards as we should not be able to disable
the core in the middle of enabling it.

Note there's no need to rush in backporting this as the only user of the
backend does not do anything crazy..

Fixes: 794ef0e57854 ("iio: adc: adi-axi-adc: move to backend framework")
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20240531-dev-axi-adc-drp-v3-1-e3fa79447c67@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/adi-axi-adc.c

index 0cf0d81358fd58986561477159a0982858500312..bf51d619ebbc9fc916758af0142d5cf3c94a2b93 100644 (file)
@@ -85,6 +85,7 @@ static int axi_adc_enable(struct iio_backend *back)
        struct adi_axi_adc_state *st = iio_backend_get_priv(back);
        int ret;
 
+       guard(mutex)(&st->lock);
        ret = regmap_set_bits(st->regmap, ADI_AXI_REG_RSTN,
                              ADI_AXI_REG_RSTN_MMCM_RSTN);
        if (ret)
@@ -99,6 +100,7 @@ static void axi_adc_disable(struct iio_backend *back)
 {
        struct adi_axi_adc_state *st = iio_backend_get_priv(back);
 
+       guard(mutex)(&st->lock);
        regmap_write(st->regmap, ADI_AXI_REG_RSTN, 0);
 }