OSDN Git Service

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 1832d0f..f551907 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 8fda37c..11f4e55 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)