Loading drivers/infiniband/core/ucm.c +41 −47 Original line number Diff line number Diff line Loading @@ -49,6 +49,11 @@ MODULE_AUTHOR("Libor Michalek"); MODULE_DESCRIPTION("InfiniBand userspace Connection Manager access"); MODULE_LICENSE("Dual BSD/GPL"); static int ucm_debug_level; module_param_named(debug_level, ucm_debug_level, int, 0644); MODULE_PARM_DESC(debug_level, "Enable debug tracing if > 0"); enum { IB_UCM_MAJOR = 231, IB_UCM_MINOR = 255 Loading @@ -56,6 +61,14 @@ enum { #define IB_UCM_DEV MKDEV(IB_UCM_MAJOR, IB_UCM_MINOR) #define PFX "UCM: " #define ucm_dbg(format, arg...) \ do { \ if (ucm_debug_level > 0) \ printk(KERN_DEBUG PFX format, ## arg); \ } while (0) static struct semaphore ctx_id_mutex; static struct idr ctx_id_table; static int ctx_id_rover = 0; Loading Loading @@ -107,7 +120,7 @@ static void ib_ucm_ctx_put(struct ib_ucm_context *ctx) up(&ctx->file->mutex); printk(KERN_ERR "UCM: Destroyed CM ID <%d>\n", ctx->id); ucm_dbg("Destroyed CM ID <%d>\n", ctx->id); ib_destroy_cm_id(ctx->cm_id); kfree(ctx); Loading Loading @@ -145,7 +158,7 @@ static struct ib_ucm_context *ib_ucm_ctx_alloc(struct ib_ucm_file *file) if (result) goto error; printk(KERN_ERR "UCM: Allocated CM ID <%d>\n", ctx->id); ucm_dbg("Allocated CM ID <%d>\n", ctx->id); return ctx; error: Loading Loading @@ -378,9 +391,7 @@ static int ib_ucm_event_process(struct ib_cm_event *evt, return 0; error: if (uvt->info) kfree(uvt->info); if (uvt->data) kfree(uvt->data); return result; } Loading @@ -407,8 +418,7 @@ static int ib_ucm_event_handler(struct ib_cm_id *cm_id, break; } printk(KERN_ERR "UCM: Event. CM ID <%d> event <%d>\n", id, event->event); ucm_dbg("Event. CM ID <%d> event <%d>\n", id, event->event); ctx = ib_ucm_ctx_get(id); if (!ctx) Loading Loading @@ -551,9 +561,7 @@ static ssize_t ib_ucm_event(struct ib_ucm_file *file, list_del(&uevent->file_list); list_del(&uevent->ctx_list); if (uevent->data) kfree(uevent->data); if (uevent->info) kfree(uevent->info); kfree(uevent); done: Loading Loading @@ -846,11 +854,8 @@ static ssize_t ib_ucm_send_req(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); if (param.primary_path) kfree(param.primary_path); if (param.alternate_path) kfree(param.alternate_path); return result; Loading Loading @@ -900,7 +905,6 @@ static ssize_t ib_ucm_send_rep(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); return result; Loading Loading @@ -939,7 +943,6 @@ static ssize_t ib_ucm_send_private_data(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (private_data) kfree(private_data); return result; Loading Loading @@ -1009,9 +1012,7 @@ static ssize_t ib_ucm_send_info(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (data) kfree(data); if (info) kfree(info); return result; Loading Loading @@ -1063,7 +1064,6 @@ static ssize_t ib_ucm_send_mra(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (data) kfree(data); return result; Loading Loading @@ -1105,9 +1105,7 @@ static ssize_t ib_ucm_send_lap(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (data) kfree(data); if (path) kfree(path); return result; Loading Loading @@ -1157,9 +1155,7 @@ static ssize_t ib_ucm_send_sidr_req(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); if (param.path) kfree(param.path); return result; Loading Loading @@ -1209,9 +1205,7 @@ static ssize_t ib_ucm_send_sidr_rep(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); if (param.info) kfree(param.info); return result; Loading Loading @@ -1252,7 +1246,7 @@ static ssize_t ib_ucm_write(struct file *filp, const char __user *buf, if (copy_from_user(&hdr, buf, sizeof(hdr))) return -EFAULT; printk(KERN_ERR "UCM: Write. cmd <%d> in <%d> out <%d> len <%Zu>\n", ucm_dbg("Write. cmd <%d> in <%d> out <%d> len <%Zu>\n", hdr.cmd, hdr.in, hdr.out, len); if (hdr.cmd < 0 || hdr.cmd >= ARRAY_SIZE(ucm_cmd_table)) Loading Loading @@ -1300,7 +1294,7 @@ static int ib_ucm_open(struct inode *inode, struct file *filp) filp->private_data = file; file->filp = filp; printk(KERN_ERR "UCM: Created struct\n"); ucm_dbg("Created struct\n"); return 0; } Loading @@ -1326,7 +1320,7 @@ static int ib_ucm_close(struct inode *inode, struct file *filp) kfree(file); printk(KERN_ERR "UCM: Deleted struct\n"); ucm_dbg("Deleted struct\n"); return 0; } Loading @@ -1348,7 +1342,7 @@ static int __init ib_ucm_init(void) result = register_chrdev_region(IB_UCM_DEV, 1, "infiniband_cm"); if (result) { printk(KERN_ERR "UCM: Error <%d> registering dev\n", result); ucm_dbg("Error <%d> registering dev\n", result); goto err_chr; } Loading @@ -1356,14 +1350,14 @@ static int __init ib_ucm_init(void) result = cdev_add(&ib_ucm_cdev, IB_UCM_DEV, 1); if (result) { printk(KERN_ERR "UCM: Error <%d> adding cdev\n", result); ucm_dbg("Error <%d> adding cdev\n", result); goto err_cdev; } ib_ucm_class = class_create(THIS_MODULE, "infiniband_cm"); if (IS_ERR(ib_ucm_class)) { result = PTR_ERR(ib_ucm_class); printk(KERN_ERR "UCM: Error <%d> creating class\n", result); ucm_dbg("Error <%d> creating class\n", result); goto err_class; } Loading Loading
drivers/infiniband/core/ucm.c +41 −47 Original line number Diff line number Diff line Loading @@ -49,6 +49,11 @@ MODULE_AUTHOR("Libor Michalek"); MODULE_DESCRIPTION("InfiniBand userspace Connection Manager access"); MODULE_LICENSE("Dual BSD/GPL"); static int ucm_debug_level; module_param_named(debug_level, ucm_debug_level, int, 0644); MODULE_PARM_DESC(debug_level, "Enable debug tracing if > 0"); enum { IB_UCM_MAJOR = 231, IB_UCM_MINOR = 255 Loading @@ -56,6 +61,14 @@ enum { #define IB_UCM_DEV MKDEV(IB_UCM_MAJOR, IB_UCM_MINOR) #define PFX "UCM: " #define ucm_dbg(format, arg...) \ do { \ if (ucm_debug_level > 0) \ printk(KERN_DEBUG PFX format, ## arg); \ } while (0) static struct semaphore ctx_id_mutex; static struct idr ctx_id_table; static int ctx_id_rover = 0; Loading Loading @@ -107,7 +120,7 @@ static void ib_ucm_ctx_put(struct ib_ucm_context *ctx) up(&ctx->file->mutex); printk(KERN_ERR "UCM: Destroyed CM ID <%d>\n", ctx->id); ucm_dbg("Destroyed CM ID <%d>\n", ctx->id); ib_destroy_cm_id(ctx->cm_id); kfree(ctx); Loading Loading @@ -145,7 +158,7 @@ static struct ib_ucm_context *ib_ucm_ctx_alloc(struct ib_ucm_file *file) if (result) goto error; printk(KERN_ERR "UCM: Allocated CM ID <%d>\n", ctx->id); ucm_dbg("Allocated CM ID <%d>\n", ctx->id); return ctx; error: Loading Loading @@ -378,9 +391,7 @@ static int ib_ucm_event_process(struct ib_cm_event *evt, return 0; error: if (uvt->info) kfree(uvt->info); if (uvt->data) kfree(uvt->data); return result; } Loading @@ -407,8 +418,7 @@ static int ib_ucm_event_handler(struct ib_cm_id *cm_id, break; } printk(KERN_ERR "UCM: Event. CM ID <%d> event <%d>\n", id, event->event); ucm_dbg("Event. CM ID <%d> event <%d>\n", id, event->event); ctx = ib_ucm_ctx_get(id); if (!ctx) Loading Loading @@ -551,9 +561,7 @@ static ssize_t ib_ucm_event(struct ib_ucm_file *file, list_del(&uevent->file_list); list_del(&uevent->ctx_list); if (uevent->data) kfree(uevent->data); if (uevent->info) kfree(uevent->info); kfree(uevent); done: Loading Loading @@ -846,11 +854,8 @@ static ssize_t ib_ucm_send_req(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); if (param.primary_path) kfree(param.primary_path); if (param.alternate_path) kfree(param.alternate_path); return result; Loading Loading @@ -900,7 +905,6 @@ static ssize_t ib_ucm_send_rep(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); return result; Loading Loading @@ -939,7 +943,6 @@ static ssize_t ib_ucm_send_private_data(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (private_data) kfree(private_data); return result; Loading Loading @@ -1009,9 +1012,7 @@ static ssize_t ib_ucm_send_info(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (data) kfree(data); if (info) kfree(info); return result; Loading Loading @@ -1063,7 +1064,6 @@ static ssize_t ib_ucm_send_mra(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (data) kfree(data); return result; Loading Loading @@ -1105,9 +1105,7 @@ static ssize_t ib_ucm_send_lap(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (data) kfree(data); if (path) kfree(path); return result; Loading Loading @@ -1157,9 +1155,7 @@ static ssize_t ib_ucm_send_sidr_req(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); if (param.path) kfree(param.path); return result; Loading Loading @@ -1209,9 +1205,7 @@ static ssize_t ib_ucm_send_sidr_rep(struct ib_ucm_file *file, up(&ctx->file->mutex); ib_ucm_ctx_put(ctx); /* func reference */ done: if (param.private_data) kfree(param.private_data); if (param.info) kfree(param.info); return result; Loading Loading @@ -1252,7 +1246,7 @@ static ssize_t ib_ucm_write(struct file *filp, const char __user *buf, if (copy_from_user(&hdr, buf, sizeof(hdr))) return -EFAULT; printk(KERN_ERR "UCM: Write. cmd <%d> in <%d> out <%d> len <%Zu>\n", ucm_dbg("Write. cmd <%d> in <%d> out <%d> len <%Zu>\n", hdr.cmd, hdr.in, hdr.out, len); if (hdr.cmd < 0 || hdr.cmd >= ARRAY_SIZE(ucm_cmd_table)) Loading Loading @@ -1300,7 +1294,7 @@ static int ib_ucm_open(struct inode *inode, struct file *filp) filp->private_data = file; file->filp = filp; printk(KERN_ERR "UCM: Created struct\n"); ucm_dbg("Created struct\n"); return 0; } Loading @@ -1326,7 +1320,7 @@ static int ib_ucm_close(struct inode *inode, struct file *filp) kfree(file); printk(KERN_ERR "UCM: Deleted struct\n"); ucm_dbg("Deleted struct\n"); return 0; } Loading @@ -1348,7 +1342,7 @@ static int __init ib_ucm_init(void) result = register_chrdev_region(IB_UCM_DEV, 1, "infiniband_cm"); if (result) { printk(KERN_ERR "UCM: Error <%d> registering dev\n", result); ucm_dbg("Error <%d> registering dev\n", result); goto err_chr; } Loading @@ -1356,14 +1350,14 @@ static int __init ib_ucm_init(void) result = cdev_add(&ib_ucm_cdev, IB_UCM_DEV, 1); if (result) { printk(KERN_ERR "UCM: Error <%d> adding cdev\n", result); ucm_dbg("Error <%d> adding cdev\n", result); goto err_cdev; } ib_ucm_class = class_create(THIS_MODULE, "infiniband_cm"); if (IS_ERR(ib_ucm_class)) { result = PTR_ERR(ib_ucm_class); printk(KERN_ERR "UCM: Error <%d> creating class\n", result); ucm_dbg("Error <%d> creating class\n", result); goto err_class; } Loading