···3838#include <linux/in.h>3939#include <linux/in6.h>4040#include <linux/miscdevice.h>4141-#include <linux/smp_lock.h>42414342#include <rdma/rdma_user_cm.h>4443#include <rdma/ib_marshall.h>···11481149 return mask;11491150}1150115111521152+/*11531153+ * ucma_open() does not need the BKL:11541154+ *11551155+ * - no global state is referred to;11561156+ * - there is no ioctl method to race against;11571157+ * - no further module initialization is required for open to work11581158+ * after the device is registered.11591159+ */11511160static int ucma_open(struct inode *inode, struct file *filp)11521161{11531162 struct ucma_file *file;···11641157 if (!file)11651158 return -ENOMEM;1166115911671167- lock_kernel();11681160 INIT_LIST_HEAD(&file->event_list);11691161 INIT_LIST_HEAD(&file->ctx_list);11701162 init_waitqueue_head(&file->poll_wait);···1171116511721166 filp->private_data = file;11731167 file->filp = filp;11741174- unlock_kernel();11751168 return 0;11761169}11771170