All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Denis Ciocca <denis.ciocca@st.com>,
	Linus Walleij <linus.walleij@linaro.org>
Cc: "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	Giuseppe BARBA <giuseppe.barba@st.com>
Subject: Re: [PATCH 1/4] iio: st_sensors: simplify buffer address handling
Date: Mon, 28 Mar 2016 08:52:54 +0100	[thread overview]
Message-ID: <56F8E2D6.2040908@kernel.org> (raw)
In-Reply-To: <20160328034233.GA5682@beicxl1122>

On 28/03/16 04:42, Denis Ciocca wrote:
> Hi Linus,
> 
> it makes sense to me. Thanks
> 
> Acked-by: Denis Ciocca <denis.ciocca@st.com>
Applied to the togreg branch of iio.git.

Denis, any comments on the rest of the series?
> 
> 
> On |24 Mar 16 @ 14:18|, Linus Walleij wrote:
>> The driver goes to some length to dynamically allocate an array
>> to hold the channel addresses. However no ST sensor has more than
>> three channels (x, y, z at most). Instead of kmalloc():ing and
>> kfree():in the address array, just use a fixed array of three
>> elements.
>>
>> Cc: Giuseppe Barba <giuseppe.barba@st.com>
>> Cc: Denis Ciocca <denis.ciocca@st.com>
>> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
>> ---
>>  drivers/iio/common/st_sensors/st_sensors_buffer.c | 28 ++++++-----------------
>>  1 file changed, 7 insertions(+), 21 deletions(-)
>>
>> diff --git a/drivers/iio/common/st_sensors/st_sensors_buffer.c b/drivers/iio/common/st_sensors/st_sensors_buffer.c
>> index e18bc6782256..73764961feac 100644
>> --- a/drivers/iio/common/st_sensors/st_sensors_buffer.c
>> +++ b/drivers/iio/common/st_sensors/st_sensors_buffer.c
>> @@ -24,19 +24,13 @@
>>  
>>  int st_sensors_get_buffer_element(struct iio_dev *indio_dev, u8 *buf)
>>  {
>> -	u8 *addr;
>> +	u8 addr[3]; /* no ST sensor has more than 3 channels */
>>  	int i, n = 0, len;
>>  	struct st_sensor_data *sdata = iio_priv(indio_dev);
>>  	unsigned int num_data_channels = sdata->num_data_channels;
>>  	unsigned int byte_for_channel =
>>  			indio_dev->channels[0].scan_type.storagebits >> 3;
>>  
>> -	addr = kmalloc(num_data_channels, GFP_KERNEL);
>> -	if (!addr) {
>> -		len = -ENOMEM;
>> -		goto st_sensors_get_buffer_element_error;
>> -	}
>> -
>>  	for (i = 0; i < num_data_channels; i++) {
>>  		if (test_bit(i, indio_dev->active_scan_mask)) {
>>  			addr[n] = indio_dev->channels[i].address;
>> @@ -57,10 +51,8 @@ int st_sensors_get_buffer_element(struct iio_dev *indio_dev, u8 *buf)
>>  			u8 *rx_array;
>>  			rx_array = kmalloc(byte_for_channel * num_data_channels,
>>  					   GFP_KERNEL);
>> -			if (!rx_array) {
>> -				len = -ENOMEM;
>> -				goto st_sensors_free_memory;
>> -			}
>> +			if (!rx_array)
>> +				return -ENOMEM;
>>  
>>  			len = sdata->tf->read_multiple_byte(&sdata->tb,
>>  				sdata->dev, addr[0],
>> @@ -68,7 +60,7 @@ int st_sensors_get_buffer_element(struct iio_dev *indio_dev, u8 *buf)
>>  				rx_array, sdata->multiread_bit);
>>  			if (len < 0) {
>>  				kfree(rx_array);
>> -				goto st_sensors_free_memory;
>> +				return len;
>>  			}
>>  
>>  			for (i = 0; i < n * byte_for_channel; i++) {
>> @@ -87,17 +79,11 @@ int st_sensors_get_buffer_element(struct iio_dev *indio_dev, u8 *buf)
>>  			buf, sdata->multiread_bit);
>>  		break;
>>  	default:
>> -		len = -EINVAL;
>> -		goto st_sensors_free_memory;
>> -	}
>> -	if (len != byte_for_channel * n) {
>> -		len = -EIO;
>> -		goto st_sensors_free_memory;
>> +		return -EINVAL;
>>  	}
>> +	if (len != byte_for_channel * n)
>> +		return -EIO;
>>  
>> -st_sensors_free_memory:
>> -	kfree(addr);
>> -st_sensors_get_buffer_element_error:
>>  	return len;
>>  }
>>  EXPORT_SYMBOL(st_sensors_get_buffer_element);
>> -- 
>> 2.4.3
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


  reply	other threads:[~2016-03-28  7:52 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-24 13:18 [PATCH 1/4] iio: st_sensors: simplify buffer address handling Linus Walleij
2016-03-24 13:18 ` [PATCH 2/4] iio: st_sensors: read each channel individually Linus Walleij
2016-03-28  8:03   ` Jonathan Cameron
2016-03-28  9:20     ` Linus Walleij
2016-03-28  9:37       ` Jonathan Cameron
2016-03-29  8:15       ` Linus Walleij
2016-04-10 14:29         ` Jonathan Cameron
2016-04-11  6:50           ` Linus Walleij
2016-04-17 11:22             ` Jonathan Cameron
2016-04-17 18:47               ` Linus Walleij
2016-03-24 13:18 ` [PATCH 3/4] iio: st_sensors: verify interrupt event to status Linus Walleij
2016-03-28  8:09   ` Jonathan Cameron
2016-04-12 12:34     ` Linus Walleij
2016-04-17 11:24       ` Jonathan Cameron
2016-05-03 17:58   ` Crestez Dan Leonard
2016-05-03 20:10     ` Linus Walleij
2016-05-04  7:35       ` Jonathan Cameron
2016-05-04 14:34         ` Linus Walleij
2016-05-04 18:14           ` Crestez Dan Leonard
2016-05-06  9:14             ` Linus Walleij
2016-03-24 13:18 ` [PATCH 4/4] iio: st_sensors: support open drain mode Linus Walleij
2016-03-24 13:18   ` Linus Walleij
2016-03-28  9:12   ` Jonathan Cameron
2016-03-28  9:12     ` Jonathan Cameron
2016-03-31  8:15     ` Linus Walleij
2016-03-31  8:15       ` Linus Walleij
2016-04-03  9:33       ` Jonathan Cameron
2016-04-03  9:33         ` Jonathan Cameron
2016-03-28  3:42 ` [PATCH 1/4] iio: st_sensors: simplify buffer address handling Denis Ciocca
2016-03-28  7:52   ` Jonathan Cameron [this message]
2016-03-28  8:16     ` Denis Ciocca
2016-03-28  8:27       ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56F8E2D6.2040908@kernel.org \
    --to=jic23@kernel.org \
    --cc=denis.ciocca@st.com \
    --cc=giuseppe.barba@st.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.