diff options
author | Dan Carpenter <error27@gmail.com> | 2010-11-13 12:05:32 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-11-16 12:31:49 -0800 |
commit | 59a126418b96e9f5337d431e6024a8d50bbd6e4e (patch) | |
tree | 3d03d540673aeeefd703e6ba777b5726c44ed919 /drivers/staging/iio/dds/ad9852.c | |
parent | a1a26e492c4a90466cb3e064ccf69db4dd66d63a (diff) | |
download | kernel_samsung_smdk4412-59a126418b96e9f5337d431e6024a8d50bbd6e4e.zip kernel_samsung_smdk4412-59a126418b96e9f5337d431e6024a8d50bbd6e4e.tar.gz kernel_samsung_smdk4412-59a126418b96e9f5337d431e6024a8d50bbd6e4e.tar.bz2 |
Staging: iio/dds: double locking bugs
This is a static checker patch and I don't have this hardware.
This code is unusual because while I've often seen a double lock, this
is the first time I've seen code that takes a lock 11 times in a row. I
feel like I must have missed something. But I've looked very carefully
I don't see any way the original code is correct. Does spi_sync()
somehow release the lock in a way that I can't see? Even if it does,
the locking would still be wrong.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Cliff Cai <cliff.cai@analog.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/dds/ad9852.c')
-rw-r--r-- | drivers/staging/iio/dds/ad9852.c | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/drivers/staging/iio/dds/ad9852.c b/drivers/staging/iio/dds/ad9852.c index 0a41d25..594fb6a 100644 --- a/drivers/staging/iio/dds/ad9852.c +++ b/drivers/staging/iio/dds/ad9852.c @@ -86,7 +86,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 3; xfer.tx_buf = &config->phajst1[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -96,7 +95,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 6; xfer.tx_buf = &config->fretun1[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -106,7 +104,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 6; xfer.tx_buf = &config->fretun2[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -116,7 +113,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 6; xfer.tx_buf = &config->dltafre[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -126,7 +122,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 5; xfer.tx_buf = &config->updtclk[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -136,7 +131,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 4; xfer.tx_buf = &config->ramprat[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -146,7 +140,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 5; xfer.tx_buf = &config->control[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -156,7 +149,6 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 3; xfer.tx_buf = &config->outpskm[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); @@ -166,16 +158,15 @@ static ssize_t ad9852_set_parameter(struct device *dev, xfer.len = 2; xfer.tx_buf = &config->outpskr[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); ret = spi_sync(st->sdev, &msg); if (ret) goto error_ret; + xfer.len = 3; xfer.tx_buf = &config->daccntl[0]; - mutex_lock(&st->lock); spi_message_init(&msg); spi_message_add_tail(&xfer, &msg); |