From 55b930cd17a7cd66a1fb2a587660a344ea5a9ee2 Mon Sep 17 00:00:00 2001 From: Viresh Kumar Date: Wed, 29 Apr 2015 11:02:08 +0530 Subject: [PATCH] greybus: manifest: Warn if descriptor size > expected size A descriptor passed to AP can be bigger than what AP expects, if manifest's minor version is higher with same major number as the AP. As it can have some extra data in descriptor. But, if AP and manifest versions are identical, or if the AP's minor version is greater than the manifest version, we should at least warn (if not fail). Doing this would require some changes to record the manifest version somewhere reachable by identify_descriptor(). For now, just warn if descriptor is bigger than expected. Signed-off-by: Viresh Kumar Reviewed-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/manifest.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/staging/greybus/manifest.c b/drivers/staging/greybus/manifest.c index 12536637536c..2346ead2a977 100644 --- a/drivers/staging/greybus/manifest.c +++ b/drivers/staging/greybus/manifest.c @@ -129,6 +129,13 @@ static int identify_descriptor(struct gb_interface *intf, return -EINVAL; } + /* Descriptor bigger than what we expect */ + if (desc_size > expected_size) { + pr_warn("%s descriptor size mismatch (want %zu got %zu)\n", + get_descriptor_type_string(desc_header->type), + expected_size, desc_size); + } + descriptor = kzalloc(sizeof(*descriptor), GFP_KERNEL); if (!descriptor) return -ENOMEM; -- 2.11.0