diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-04 15:30:11 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-04 15:30:11 -0400 |
| commit | 1f89b8fc41b66e5761bb8c3af5517fd42bf2067d (patch) | |
| tree | 49a2f359902d09b4b4eb0816bf325362dbad7ad6 | |
| parent | 60bba385c5e86ee6a654e3345093eb48e258eb1d (diff) | |
| parent | 6c5d4c96f979611f0165dc825af9e1cea8dd35b9 (diff) | |
Merge tag 'iio-fixes-for-3.10b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus
Jonathan writes:
Second round of IIO fixes for the 3.10 cycle.
A couple of little bits and pieces, some delayed due to traveling.
1) A memory leak fix in the callback buffer.
2) Wrong exit path due to a return when it should have been a goto.
3) Bug in a mask value in ad4350
4) Reading the wrong value in raw to processed utility function.
| -rw-r--r-- | drivers/iio/buffer_cb.c | 5 | ||||
| -rw-r--r-- | drivers/iio/frequency/adf4350.c | 2 | ||||
| -rw-r--r-- | drivers/iio/inkern.c | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/drivers/iio/buffer_cb.c b/drivers/iio/buffer_cb.c index 9201022945e9..9d19ba74f22b 100644 --- a/drivers/iio/buffer_cb.c +++ b/drivers/iio/buffer_cb.c | |||
| @@ -64,7 +64,7 @@ struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev, | |||
| 64 | while (chan->indio_dev) { | 64 | while (chan->indio_dev) { |
| 65 | if (chan->indio_dev != indio_dev) { | 65 | if (chan->indio_dev != indio_dev) { |
| 66 | ret = -EINVAL; | 66 | ret = -EINVAL; |
| 67 | goto error_release_channels; | 67 | goto error_free_scan_mask; |
| 68 | } | 68 | } |
| 69 | set_bit(chan->channel->scan_index, | 69 | set_bit(chan->channel->scan_index, |
| 70 | cb_buff->buffer.scan_mask); | 70 | cb_buff->buffer.scan_mask); |
| @@ -73,6 +73,8 @@ struct iio_cb_buffer *iio_channel_get_all_cb(struct device *dev, | |||
| 73 | 73 | ||
| 74 | return cb_buff; | 74 | return cb_buff; |
| 75 | 75 | ||
| 76 | error_free_scan_mask: | ||
| 77 | kfree(cb_buff->buffer.scan_mask); | ||
| 76 | error_release_channels: | 78 | error_release_channels: |
| 77 | iio_channel_release_all(cb_buff->channels); | 79 | iio_channel_release_all(cb_buff->channels); |
| 78 | error_free_cb_buff: | 80 | error_free_cb_buff: |
| @@ -100,6 +102,7 @@ EXPORT_SYMBOL_GPL(iio_channel_stop_all_cb); | |||
| 100 | 102 | ||
| 101 | void iio_channel_release_all_cb(struct iio_cb_buffer *cb_buff) | 103 | void iio_channel_release_all_cb(struct iio_cb_buffer *cb_buff) |
| 102 | { | 104 | { |
| 105 | kfree(cb_buff->buffer.scan_mask); | ||
| 103 | iio_channel_release_all(cb_buff->channels); | 106 | iio_channel_release_all(cb_buff->channels); |
| 104 | kfree(cb_buff); | 107 | kfree(cb_buff); |
| 105 | } | 108 | } |
diff --git a/drivers/iio/frequency/adf4350.c b/drivers/iio/frequency/adf4350.c index a884252ac66b..e76d4ace53ff 100644 --- a/drivers/iio/frequency/adf4350.c +++ b/drivers/iio/frequency/adf4350.c | |||
| @@ -212,7 +212,7 @@ static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq) | |||
| 212 | (pdata->r2_user_settings & (ADF4350_REG2_PD_POLARITY_POS | | 212 | (pdata->r2_user_settings & (ADF4350_REG2_PD_POLARITY_POS | |
| 213 | ADF4350_REG2_LDP_6ns | ADF4350_REG2_LDF_INT_N | | 213 | ADF4350_REG2_LDP_6ns | ADF4350_REG2_LDF_INT_N | |
| 214 | ADF4350_REG2_CHARGE_PUMP_CURR_uA(5000) | | 214 | ADF4350_REG2_CHARGE_PUMP_CURR_uA(5000) | |
| 215 | ADF4350_REG2_MUXOUT(0x7) | ADF4350_REG2_NOISE_MODE(0x9))); | 215 | ADF4350_REG2_MUXOUT(0x7) | ADF4350_REG2_NOISE_MODE(0x3))); |
| 216 | 216 | ||
| 217 | st->regs[ADF4350_REG3] = pdata->r3_user_settings & | 217 | st->regs[ADF4350_REG3] = pdata->r3_user_settings & |
| 218 | (ADF4350_REG3_12BIT_CLKDIV(0xFFF) | | 218 | (ADF4350_REG3_12BIT_CLKDIV(0xFFF) | |
diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 795d100b4c36..98ddc323add0 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c | |||
| @@ -124,7 +124,7 @@ static int __of_iio_channel_get(struct iio_channel *channel, | |||
| 124 | channel->indio_dev = indio_dev; | 124 | channel->indio_dev = indio_dev; |
| 125 | index = iiospec.args_count ? iiospec.args[0] : 0; | 125 | index = iiospec.args_count ? iiospec.args[0] : 0; |
| 126 | if (index >= indio_dev->num_channels) { | 126 | if (index >= indio_dev->num_channels) { |
| 127 | return -EINVAL; | 127 | err = -EINVAL; |
| 128 | goto err_put; | 128 | goto err_put; |
| 129 | } | 129 | } |
| 130 | channel->channel = &indio_dev->channels[index]; | 130 | channel->channel = &indio_dev->channels[index]; |
| @@ -450,7 +450,7 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, | |||
| 450 | s64 raw64 = raw; | 450 | s64 raw64 = raw; |
| 451 | int ret; | 451 | int ret; |
| 452 | 452 | ||
| 453 | ret = iio_channel_read(chan, &offset, NULL, IIO_CHAN_INFO_SCALE); | 453 | ret = iio_channel_read(chan, &offset, NULL, IIO_CHAN_INFO_OFFSET); |
| 454 | if (ret == 0) | 454 | if (ret == 0) |
| 455 | raw64 += offset; | 455 | raw64 += offset; |
| 456 | 456 | ||
