From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: Yishai Hadas <yishaih-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
Cc: Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org,
ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
tzahio-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH V8 libibverbs 1/7] Infrastructure to support verbs extensions
Date: Tue, 30 Jul 2013 16:15:48 -0600 [thread overview]
Message-ID: <20130730221548.GA14439@obsidianresearch.com> (raw)
In-Reply-To: <51F821A3.1010507-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
On Tue, Jul 30, 2013 at 11:27:15PM +0300, Yishai Hadas wrote:
> Can accept it, however as it's a const pointer may need some casting later
> which is not fully clean.
Drop the const from the definition then.
> Your suggestion for verbs_set_ctx_op can't not work as it calls internally
> to verbs_get_ctx_op and will may fail as
> at that step function pointer was not set and *(void **)((uint8_t *)vctx +
> off) will be NULL.
Yes, that is too bad in that case, but the old macro is still flawed:
+#define verbs_set_ctx_op(vctx, op, ptr) ({ \
+ if (vctx && (vctx->sz >= sizeof(*vctx) - offsetof(struct verbs_context, op))) \
+ vctx->op = ptr; })
- Missing () on all vctx usages
- Missing type enforcement on vctx
Something like this:
#define verbs_set_ctx_op(_vctx, op, ptr) ({ \
struct verbs_context *vctx = _vctx; \
if (vctx && (vctx->sz >= sizeof(*vctx) - offsetof(struct verbs_context, op))) \
vctx->op = ptr; })
> In addition changing to use const as part of returning from
> __verbs_get_ctx_op causes some necessary casting to non const in some places
> which
> is not fully clean. (e.g. free((void *)context_ex); as part of
> __ibv_close_device, verbs_ctx->has_comp_mask = VERBS_CONTEXT_XRCD |
> VERBS_CONTEXT_SRQ |
> VERBS_CONTEXT_QP; as part of mlx4_init_context)
It is virtually impossible to do const-correctness fully and
transparently in C, since the language has no feature to silently
propogate the const.
If you want to be 100% clean then provide a non-const version --
verbs_get_ctx_nc that takes non-const input.
Functions that silently discard const are bad since it silently
defeats static analysis around const.
> I recommend staying with V8 suggestion for both macros, in case
> you think there is any problem with missing () for the set operation
> please point on and may handle.
Using the inline to help the -Os case is definitely desirable, and the
fix to the () at least.
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-07-30 22:15 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-25 8:38 [PATCH V8 libibverbs 0/7] Add extension and XRC QP support Yishai Hadas
[not found] ` <1374741488-30895-1-git-send-email-yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-07-25 8:38 ` [PATCH V8 libibverbs 1/7] Infrastructure to support verbs extensions Yishai Hadas
[not found] ` <1374741488-30895-2-git-send-email-yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-07-25 17:14 ` Jason Gunthorpe
[not found] ` <20130725171408.GA17616-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-07-26 12:16 ` Yishai Hadas
[not found] ` <51F268B1.9040003-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2013-07-29 23:30 ` Jason Gunthorpe
[not found] ` <51F821A3.1010507@dev.mellanox.co.il>
[not found] ` <51F821A3.1010507-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2013-07-30 22:15 ` Jason Gunthorpe [this message]
[not found] ` <20130730221548.GA14439-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-07-31 7:27 ` Yishai Hadas
[not found] ` <51F8BC4A.5010102-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2013-07-31 16:52 ` Jason Gunthorpe
[not found] ` <20130731165205.GC27845-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-08-01 16:01 ` Yishai Hadas
2013-07-25 8:38 ` [PATCH V8 libibverbs 2/7] Introduce XRC domains Yishai Hadas
2013-07-25 8:38 ` [PATCH V8 libibverbs 3/7] Add support for XRC SRQs Yishai Hadas
2013-07-25 8:38 ` [PATCH V8 libibverbs 4/7] Add support for XRC QPs Yishai Hadas
2013-07-25 8:38 ` [PATCH V8 libibverbs 5/7] Add ibv_open_qp Yishai Hadas
2013-07-25 8:38 ` [PATCH V8 libibverbs 6/7] XRC man pages Yishai Hadas
2013-07-25 8:38 ` [PATCH V8 libibverbs 7/7] Add XRC sample application Yishai Hadas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130730221548.GA14439@obsidianresearch.com \
--to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org \
--cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=tzahio-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=yishaih-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
--cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.