@@ -1532,8 +1532,36 @@ struct ib_udata {
void __user *outbuf;
size_t inlen;
size_t outlen;
+ struct ib_ucontext *context; /* associated user context */
};
+/**
+ * _rdma_udata_context - Get ucontext from udata
+ * @udata: The udata object
+ * @warn: Warn true/false if ucontext is NULL
+ *
+ * NOTE:
+ * Most of the code should use rdma_udata_context which turn
+ * the NULL ucontext warning on. Use this function if you need
+ * to *test* if udata has ucontext and want to turn the warning
+ * off.
+ */
+static inline struct ib_ucontext *_rdma_udata_context(struct ib_udata *udata,
+ bool warn)
+{
+ WARN_ON(warn && !udata->context);
+ return udata->context;
+}
+
+/**
+ * rdma_udata_context - Get ucontext from udata
+ * @udata: The udata object
+ *
+ * NOTE: Assume valid ucontext & warn if ucontext is NULL!
+ */
+#define rdma_udata_context(udata) \
+ _rdma_udata_context(udata, true)
+
struct ib_pd {
u32 local_dma_lkey;
u32 flags;
ib_udata is used in (almost) all the places in the code that require ib_ucontext and can convey this information to the ib core and driver layers. Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com> --- include/rdma/ib_verbs.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)