diff options
-rw-r--r-- | drivers/infiniband/core/uverbs.h | 7 | ||||
-rw-r--r-- | drivers/infiniband/core/uverbs_main.c | 23 |
2 files changed, 14 insertions, 16 deletions
diff --git a/drivers/infiniband/core/uverbs.h b/drivers/infiniband/core/uverbs.h index b3ea9587dc80..e695f65328a3 100644 --- a/drivers/infiniband/core/uverbs.h +++ b/drivers/infiniband/core/uverbs.h | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/idr.h> | 41 | #include <linux/idr.h> |
42 | #include <linux/mutex.h> | 42 | #include <linux/mutex.h> |
43 | #include <linux/completion.h> | 43 | #include <linux/completion.h> |
44 | #include <linux/cdev.h> | ||
44 | 45 | ||
45 | #include <rdma/ib_verbs.h> | 46 | #include <rdma/ib_verbs.h> |
46 | #include <rdma/ib_umem.h> | 47 | #include <rdma/ib_umem.h> |
@@ -69,12 +70,12 @@ | |||
69 | 70 | ||
70 | struct ib_uverbs_device { | 71 | struct ib_uverbs_device { |
71 | struct kref ref; | 72 | struct kref ref; |
73 | int num_comp_vectors; | ||
72 | struct completion comp; | 74 | struct completion comp; |
73 | int devnum; | ||
74 | struct cdev *cdev; | ||
75 | struct device *dev; | 75 | struct device *dev; |
76 | struct ib_device *ib_dev; | 76 | struct ib_device *ib_dev; |
77 | int num_comp_vectors; | 77 | int devnum; |
78 | struct cdev cdev; | ||
78 | }; | 79 | }; |
79 | 80 | ||
80 | struct ib_uverbs_event_file { | 81 | struct ib_uverbs_event_file { |
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index 5f284ffd430e..5da9a734959a 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #include <linux/sched.h> | 43 | #include <linux/sched.h> |
44 | #include <linux/file.h> | 44 | #include <linux/file.h> |
45 | #include <linux/mount.h> | 45 | #include <linux/mount.h> |
46 | #include <linux/cdev.h> | ||
47 | 46 | ||
48 | #include <asm/uaccess.h> | 47 | #include <asm/uaccess.h> |
49 | 48 | ||
@@ -761,17 +760,15 @@ static void ib_uverbs_add_one(struct ib_device *device) | |||
761 | uverbs_dev->ib_dev = device; | 760 | uverbs_dev->ib_dev = device; |
762 | uverbs_dev->num_comp_vectors = device->num_comp_vectors; | 761 | uverbs_dev->num_comp_vectors = device->num_comp_vectors; |
763 | 762 | ||
764 | uverbs_dev->cdev = cdev_alloc(); | 763 | cdev_init(&uverbs_dev->cdev, NULL); |
765 | if (!uverbs_dev->cdev) | 764 | uverbs_dev->cdev.owner = THIS_MODULE; |
766 | goto err; | 765 | uverbs_dev->cdev.ops = device->mmap ? &uverbs_mmap_fops : &uverbs_fops; |
767 | uverbs_dev->cdev->owner = THIS_MODULE; | 766 | kobject_set_name(&uverbs_dev->cdev.kobj, "uverbs%d", uverbs_dev->devnum); |
768 | uverbs_dev->cdev->ops = device->mmap ? &uverbs_mmap_fops : &uverbs_fops; | 767 | if (cdev_add(&uverbs_dev->cdev, IB_UVERBS_BASE_DEV + uverbs_dev->devnum, 1)) |
769 | kobject_set_name(&uverbs_dev->cdev->kobj, "uverbs%d", uverbs_dev->devnum); | ||
770 | if (cdev_add(uverbs_dev->cdev, IB_UVERBS_BASE_DEV + uverbs_dev->devnum, 1)) | ||
771 | goto err_cdev; | 768 | goto err_cdev; |
772 | 769 | ||
773 | uverbs_dev->dev = device_create(uverbs_class, device->dma_device, | 770 | uverbs_dev->dev = device_create(uverbs_class, device->dma_device, |
774 | uverbs_dev->cdev->dev, uverbs_dev, | 771 | uverbs_dev->cdev.dev, uverbs_dev, |
775 | "uverbs%d", uverbs_dev->devnum); | 772 | "uverbs%d", uverbs_dev->devnum); |
776 | if (IS_ERR(uverbs_dev->dev)) | 773 | if (IS_ERR(uverbs_dev->dev)) |
777 | goto err_cdev; | 774 | goto err_cdev; |
@@ -790,10 +787,10 @@ static void ib_uverbs_add_one(struct ib_device *device) | |||
790 | return; | 787 | return; |
791 | 788 | ||
792 | err_class: | 789 | err_class: |
793 | device_destroy(uverbs_class, uverbs_dev->cdev->dev); | 790 | device_destroy(uverbs_class, uverbs_dev->cdev.dev); |
794 | 791 | ||
795 | err_cdev: | 792 | err_cdev: |
796 | cdev_del(uverbs_dev->cdev); | 793 | cdev_del(&uverbs_dev->cdev); |
797 | clear_bit(uverbs_dev->devnum, dev_map); | 794 | clear_bit(uverbs_dev->devnum, dev_map); |
798 | 795 | ||
799 | err: | 796 | err: |
@@ -811,8 +808,8 @@ static void ib_uverbs_remove_one(struct ib_device *device) | |||
811 | return; | 808 | return; |
812 | 809 | ||
813 | dev_set_drvdata(uverbs_dev->dev, NULL); | 810 | dev_set_drvdata(uverbs_dev->dev, NULL); |
814 | device_destroy(uverbs_class, uverbs_dev->cdev->dev); | 811 | device_destroy(uverbs_class, uverbs_dev->cdev.dev); |
815 | cdev_del(uverbs_dev->cdev); | 812 | cdev_del(&uverbs_dev->cdev); |
816 | 813 | ||
817 | spin_lock(&map_lock); | 814 | spin_lock(&map_lock); |
818 | dev_table[uverbs_dev->devnum] = NULL; | 815 | dev_table[uverbs_dev->devnum] = NULL; |