diff options
author | Michael Tretter <m.tretter@pengutronix.de> | 2019-06-24 10:17:15 +0200 |
---|---|---|
committer | Michael Tretter <m.tretter@pengutronix.de> | 2020-03-03 17:47:05 +0100 |
commit | 5567bbd614d84a956af20152146ecea5fcb09372 (patch) | |
tree | 3382e7d136ae458f3d1807a81d4ad81c2402a1ea | |
parent | db4f52b2ebb05bd6536ef3e6b889f30357003394 (diff) | |
download | linux-0-day-5567bbd614d84a956af20152146ecea5fcb09372.tar.gz linux-0-day-5567bbd614d84a956af20152146ecea5fcb09372.tar.xz |
media: allegro: warn if response message has an unexpected size
The driver uses structs to parse the responses from the VCU and expects
a certain size of the responses. However, the size and format of the
mails is not stable across firmware versions. Therefore, print a warning
if the size does not match the expected size to warn the user that
strange things might happen.
Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
---
Changelog:
v1 -> v2:
- Fix checkpatch warnings about lines over 80 characters
-rw-r--r-- | drivers/staging/media/allegro-dvt/allegro-core.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/staging/media/allegro-dvt/allegro-core.c b/drivers/staging/media/allegro-dvt/allegro-core.c index 6c2237d4a6747..2392867b4270c 100644 --- a/drivers/staging/media/allegro-dvt/allegro-core.c +++ b/drivers/staging/media/allegro-dvt/allegro-core.c @@ -1711,6 +1711,12 @@ allegro_handle_create_channel(struct allegro_dev *dev, struct allegro_channel *channel; int err = 0; + if (msg->header.length != sizeof(*msg) - sizeof(msg->header)) + v4l2_warn(&dev->v4l2_dev, + "received message has %d bytes, but expected %zu\n", + msg->header.length, + sizeof(*msg) - sizeof(msg->header)); + channel = allegro_find_channel_by_user_id(dev, msg->user_id); if (IS_ERR(channel)) { v4l2_warn(&dev->v4l2_dev, @@ -1804,6 +1810,12 @@ allegro_handle_encode_frame(struct allegro_dev *dev, { struct allegro_channel *channel; + if (msg->header.length != sizeof(*msg) - sizeof(msg->header)) + v4l2_warn(&dev->v4l2_dev, + "received message has %d bytes, but expected %zu\n", + msg->header.length, + sizeof(*msg) - sizeof(msg->header)); + channel = allegro_find_channel_by_channel_id(dev, msg->channel_id); if (IS_ERR(channel)) { v4l2_err(&dev->v4l2_dev, |