diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index ef325f178e9a..f950e930edc8 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -703,20 +703,13 @@ static void hid_close_report(struct hid_device *device) * Free a device structure, all reports, and all fields. */ -void hiddev_free(struct kref *ref) -{ - struct hid_device *hid = container_of(ref, struct hid_device, ref); - - hid_close_report(hid); - kfree(hid->dev_rdesc); - kfree(hid); -} - static void hid_device_release(struct device *dev) { struct hid_device *hid = to_hid_device(dev); - kref_put(&hid->ref, hiddev_free); + hid_close_report(hid); + kfree(hid->dev_rdesc); + kfree(hid); } /* @@ -2500,7 +2493,6 @@ struct hid_device *hid_allocate_device(void) spin_lock_init(&hdev->debug_list_lock); sema_init(&hdev->driver_input_lock, 1); mutex_init(&hdev->ll_open_lock); - kref_init(&hdev->ref); return hdev; } diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c index 81da80f0c75b..1f60a381ae63 100644 --- a/drivers/hid/hid-debug.c +++ b/drivers/hid/hid-debug.c @@ -1082,7 +1082,6 @@ static int hid_debug_events_open(struct inode *inode, struct file *file) goto out; } list->hdev = (struct hid_device *) inode->i_private; - kref_get(&list->hdev->ref); file->private_data = list; mutex_init(&list->read_mutex); @@ -1175,8 +1174,6 @@ static int hid_debug_events_release(struct inode *inode, struct file *file) list_del(&list->node); spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags); kfifo_free(&list->hid_debug_fifo); - - kref_put(&list->hdev->ref, hiddev_free); kfree(list); return 0; diff --git a/include/linux/hid.h b/include/linux/hid.h index 29fb705a27be..7e8a233ad7af 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -624,13 +624,10 @@ struct hid_device { /* device report descriptor */ struct list_head debug_list; spinlock_t debug_list_lock; wait_queue_head_t debug_wait; - struct kref ref; unsigned int id; /* system unique id */ }; -void hiddev_free(struct kref *ref); - #define to_hid_device(pdev) \ container_of(pdev, struct hid_device, dev)