[ofa-general] [PATCH 5 of 5] libipathverbs: zero context struct at allocation time (prep for additional context ops)

Jack Morgenstein jackm at dev.mellanox.co.il
Mon Dec 17 00:19:38 PST 2007


The ibv_context structure will be getting additional ops,
to be added at the end of the structure (and not as part of
the existing ibv_context_ops structure).

Reason: ibv_context_ops is declared directly as a member of ibv_context,
and not as a pointer.  Binaries compiled with previous libibverbs versions
will not be backwards compatible if we add new operations to ibv_context_ops,
since fields following the ops structure will move.

To enable adding new operations at the end of the existing ibv_context struct,
all driver libraries MUST zero their context structure at allocation time, so
that new ops will be NULL by default.

Signed-off-by: Jack Morgenstein <jackm at dev.mellanox.co.il>

diff --git a/src/ipathverbs.c b/src/ipathverbs.c
index eb16fb0..55d8dcf 100644
--- a/src/ipathverbs.c
+++ b/src/ipathverbs.c
@@ -42,6 +42,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <string.h>
 
 #include "ipathverbs.h"
 #include "ipath-abi.h"
@@ -140,6 +141,7 @@ static struct ibv_context *ipath_alloc_context(struct ibv_device *ibdev,
 	context = malloc(sizeof *context);
 	if (!context)
 		return NULL;
+	memset(context, 0, sizeof *context);
 	context->ibv_ctx.cmd_fd = cmd_fd;
 	if (ibv_cmd_get_context(&context->ibv_ctx, &cmd,
 				sizeof cmd, &resp, sizeof resp))



More information about the general mailing list