Re: [PATCH 4/4] Input: zforce - reduce stack memory allocated to frames

From: Heiko Stübner
Date: Mon Jan 27 2014 - 20:23:12 EST


On Monday, 27. January 2014 19:46:13 Luis Ortega wrote:
> A frame is a u8 array with the following structure:
> [PAYLOAD_HEADER, PAYLOAD_LENGTH, ...PAYLOAD_BODY...]
>
> PAYLOAD_BODY can be at most 255 bytes long, as it's size is represented
> by PAYLOAD_LENGTH. Therefore we can reduce the stack memory allocated to
> payload_buffer[] roughly by half, from 512 to 257 bytes.

Nice catch, thanks

Acked-by: Heiko Stuebner <heiko@xxxxxxxxx>

on a bq Cervantes (imx6sl)
Tested-by: Heiko Stuebner <heiko@xxxxxxxxx>


As a side-note, this change conflicts with one of my patches adding devicetree
support to the driver [0], which Dmitry will hopefully also look at soon.

So one of us might need to respin his series depending on the ordering.



[0] http://permalink.gmane.org/gmane.linux.kernel.input/33587




>
> Signed-off-by: Luis Ortega <luiorpe1@xxxxxx>
> ---
> drivers/input/touchscreen/zforce_ts.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/touchscreen/zforce_ts.c
> b/drivers/input/touchscreen/zforce_ts.c index e082d5c..afb2492 100644
> --- a/drivers/input/touchscreen/zforce_ts.c
> +++ b/drivers/input/touchscreen/zforce_ts.c
> @@ -33,6 +33,7 @@
> #define WAIT_TIMEOUT msecs_to_jiffies(1000)
>
> #define FRAME_START 0xee
> +#define FRAME_MAXSIZE 257
>
> /* Offsets of the different parts of the payload the controller sends */
> #define PAYLOAD_HEADER 0
> @@ -475,7 +476,7 @@ static irqreturn_t zforce_irq_thread(int irq, void
> *dev_id) struct i2c_client *client = ts->client;
> const struct zforce_ts_platdata *pdata = dev_get_platdata(&client->dev);
> int ret;
> - u8 payload_buffer[512];
> + u8 payload_buffer[FRAME_MAXSIZE];
> u8 *payload;
>
> /*

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/