IB/uverbs: New macro to set pointers to NULL if length is 0 in INIT_UDATA()
authorRoland Dreier <roland@purestorage.com>
Thu, 19 Dec 2013 16:37:03 +0000 (08:37 -0800)
committerRoland Dreier <roland@purestorage.com>
Fri, 20 Dec 2013 18:53:44 +0000 (10:53 -0800)
commita96e4e2ffe439e45732d820fac6fee486b6412bf
tree94b6871a378f9a643f268c1e5c6ccd563fd65fa6
parent309243ec14fde1149e1c66f19746e239e86caf39
IB/uverbs: New macro to set pointers to NULL if length is 0 in INIT_UDATA()

Trying to have a ternary operator to choose between NULL (or 0) and the
real pointer value in invocations leads to an impossible choice between
a sparse error about a literal 0 used as a NULL pointer, and a gcc
warning about "pointer/integer type mismatch in conditional expression."

Rather than clutter the source with more casts, move the ternary
operator into a new INIT_UDATA_BUF_OR_NULL() macro, which makes it
easier to use and simplifies its callers.

Reported-by: Yann Droneaud <ydroneaud@opteya.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/core/uverbs.h
drivers/infiniband/core/uverbs_main.c