diff options
author | Gustavo A. R. Silva | 2019-08-06 18:03:16 +0200 |
---|---|---|
committer | Dmitry Torokhov | 2019-08-06 18:10:56 +0200 |
commit | 37ad2e343449ced9e41505eae5494bf40f433181 (patch) | |
tree | a86ee9d347d08cbec0b61978fb2ee278bb150c79 | |
parent | Input: kbtab - sanity check for endpoint type (diff) | |
download | kernel-qcow2-linux-37ad2e343449ced9e41505eae5494bf40f433181.tar.gz kernel-qcow2-linux-37ad2e343449ced9e41505eae5494bf40f433181.tar.xz kernel-qcow2-linux-37ad2e343449ced9e41505eae5494bf40f433181.zip |
Input: applespi - use struct_size() helper
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:
struct touchpad_protocol {
...
struct tp_finger fingers[0];
};
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.
So, replace the following form:
sizeof(*tp) + tp->number_of_fingers * sizeof(tp->fingers[0]);
with:
struct_size(tp, fingers, tp->number_of_fingers)
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r-- | drivers/input/keyboard/applespi.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/input/keyboard/applespi.c b/drivers/input/keyboard/applespi.c index acf34a5ff571..584289b67fb3 100644 --- a/drivers/input/keyboard/applespi.c +++ b/drivers/input/keyboard/applespi.c @@ -1494,8 +1494,7 @@ static void applespi_got_data(struct applespi_data *applespi) size_t tp_len; tp = &message->touchpad; - tp_len = sizeof(*tp) + - tp->number_of_fingers * sizeof(tp->fingers[0]); + tp_len = struct_size(tp, fingers, tp->number_of_fingers); if (le16_to_cpu(message->length) + 2 != tp_len) { dev_warn_ratelimited(&applespi->spi->dev, |