]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
greybus: enforce a buffer headroom maximum size
authorAlex Elder <elder@linaro.org>
Tue, 2 Dec 2014 14:30:34 +0000 (08:30 -0600)
committerGreg Kroah-Hartman <greg@kroah.com>
Tue, 2 Dec 2014 22:39:42 +0000 (14:39 -0800)
Define a maximum size that a host device can use for its private
area ahead of the payload space used by Greybus in a message buffer.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/staging/greybus/es1-ap-usb.c
drivers/staging/greybus/greybus.h

index 1832d0f41b8a73afaa6ab2510d387a33f8ec196f..f551907ced2dbfb027329f8ef7912b25e76e6c55 100644 (file)
@@ -127,6 +127,7 @@ static void hd_buffer_constraints(struct greybus_host_device *hd)
         */
        hd->buffer_headroom = sizeof(u32);      /* For cport id */
        hd->buffer_size_max = ES1_GBUF_MSG_SIZE_MAX;
+       BUILD_BUG_ON(hd->buffer_headroom > GB_BUFFER_HEADROOM_MAX);
 }
 
 #define ES1_TIMEOUT    500     /* 500 ms for the SVC to do something */
index 8fda37c42a0c695f9c1292b1fde2f10eaaf812d9..11f4e5529d9a8bb6c57ae98496181bd3a7588ed2 100644 (file)
 struct greybus_host_device;
 struct svc_msg;
 
+/*
+ * When the Greybus code allocates a buffer it sets aside bytes
+ * prior to the beginning of the payload area for the host device's
+ * exclusive use.  The size is specified by hd->buffer_headroom, and
+ * which can't be greater than GB_BUFFER_HEADROOM_MAX.
+ */
+#define GB_BUFFER_HEADROOM_MAX         sizeof(u64)
+
 /* Buffers allocated from the host driver will be aligned to this multiple */
 #define GB_BUFFER_ALIGN        sizeof(u32)