xen-netback: update ubuf_info initialization to anonymous union
authorWillem de Bruijn <willemb@google.com>
Fri, 25 Aug 2017 17:10:43 +0000 (13:10 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Aug 2017 22:11:50 +0000 (15:11 -0700)
The xen driver initializes struct ubuf_info fields using designated
initializers. I recently moved these fields inside a nested anonymous
struct inside an anonymous union. I had missed this use case.

This breaks compilation of xen-netback with older compilers.
>From kbuild bot with gcc-4.4.7:

   drivers/net//xen-netback/interface.c: In function
   'xenvif_init_queue':
   >> drivers/net//xen-netback/interface.c:554: error: unknown field 'ctx' specified in initializer
   >> drivers/net//xen-netback/interface.c:554: warning: missing braces around initializer
      drivers/net//xen-netback/interface.c:554: warning: (near initialization for '(anonymous).<anonymous>')
   >> drivers/net//xen-netback/interface.c:554: warning: initialization makes integer from pointer without a cast
   >> drivers/net//xen-netback/interface.c:555: error: unknown field 'desc' specified in initializer

Add double braces around the designated initializers to match their
nested position in the struct. After this, compilation succeeds again.

Fixes: 4ab6c99d99bb ("sock: MSG_ZEROCOPY notification coalescing")
Reported-by: kbuild bot <lpk@intel.com>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netback/interface.c

index e322a862ddfe70b4e1b2fbdbffd8cd78cbdc4b24..ee8ed9da00ade809a70ac80800f9006edd8f535c 100644 (file)
@@ -551,8 +551,8 @@ int xenvif_init_queue(struct xenvif_queue *queue)
        for (i = 0; i < MAX_PENDING_REQS; i++) {
                queue->pending_tx_info[i].callback_struct = (struct ubuf_info)
                        { .callback = xenvif_zerocopy_callback,
-                         .ctx = NULL,
-                         .desc = i };
+                         { { .ctx = NULL,
+                             .desc = i } } };
                queue->grant_tx_handle[i] = NETBACK_INVALID_HANDLE;
        }