summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/greybus/core.c5
-rw-r--r--drivers/staging/greybus/operation.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/staging/greybus/core.c b/drivers/staging/greybus/core.c
index e32d6c4..91dcc5b 100644
--- a/drivers/staging/greybus/core.c
+++ b/drivers/staging/greybus/core.c
@@ -188,6 +188,11 @@ struct greybus_host_device *greybus_create_hd(struct greybus_host_driver *driver
return NULL;
}
+ if (buffer_size_max < GB_OPERATION_MESSAGE_SIZE_MIN) {
+ dev_err(parent, "greybus host-device buffers too small\n");
+ return NULL;
+ }
+
/*
* Make sure to never allocate messages larger than what the Greybus
* protocol supports.
diff --git a/drivers/staging/greybus/operation.h b/drivers/staging/greybus/operation.h
index 1edd512..740aacc 100644
--- a/drivers/staging/greybus/operation.h
+++ b/drivers/staging/greybus/operation.h
@@ -69,6 +69,7 @@ struct gb_operation_msg_hdr {
__u8 pad[2]; /* must be zero (ignore when read) */
} __aligned(sizeof(u64));
+#define GB_OPERATION_MESSAGE_SIZE_MIN sizeof(struct gb_operation_msg_hdr)
#define GB_OPERATION_MESSAGE_SIZE_MAX U16_MAX
/*