diff options
| author | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
| commit | 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e (patch) | |
| tree | d57f3a63479a07b4e0cece029886e76e04feb984 /drivers/gpio/gpiolib-cdev.c | |
| parent | 5dc63e56a9cf8df0b59c234a505a1653f1bdf885 (diff) | |
| parent | 53bea86b5712c7491bb3dae12e271666df0a308c (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.4 merge window.
Diffstat (limited to 'drivers/gpio/gpiolib-cdev.c')
| -rw-r--r-- | drivers/gpio/gpiolib-cdev.c | 21 | 
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/gpio/gpiolib-cdev.c b/drivers/gpio/gpiolib-cdev.c index e878e3f22b0e..0a33971c964c 100644 --- a/drivers/gpio/gpiolib-cdev.c +++ b/drivers/gpio/gpiolib-cdev.c @@ -321,7 +321,7 @@ static void linehandle_free(struct linehandle_state *lh)  		if (lh->descs[i])  			gpiod_free(lh->descs[i]);  	kfree(lh->label); -	put_device(&lh->gdev->dev); +	gpio_device_put(lh->gdev);  	kfree(lh);  } @@ -363,8 +363,7 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)  	lh = kzalloc(sizeof(*lh), GFP_KERNEL);  	if (!lh)  		return -ENOMEM; -	lh->gdev = gdev; -	get_device(&gdev->dev); +	lh->gdev = gpio_device_get(gdev);  	if (handlereq.consumer_label[0] != '\0') {  		/* label is only initialized if consumer_label is set */ @@ -1576,7 +1575,7 @@ static void linereq_free(struct linereq *lr)  	}  	kfifo_free(&lr->events);  	kfree(lr->label); -	put_device(&lr->gdev->dev); +	gpio_device_put(lr->gdev);  	kfree(lr);  } @@ -1646,8 +1645,7 @@ static int linereq_create(struct gpio_device *gdev, void __user *ip)  	if (!lr)  		return -ENOMEM; -	lr->gdev = gdev; -	get_device(&gdev->dev); +	lr->gdev = gpio_device_get(gdev);  	for (i = 0; i < ulr.num_lines; i++) {  		lr->lines[i].req = lr; @@ -1916,7 +1914,7 @@ static void lineevent_free(struct lineevent_state *le)  	if (le->desc)  		gpiod_free(le->desc);  	kfree(le->label); -	put_device(&le->gdev->dev); +	gpio_device_put(le->gdev);  	kfree(le);  } @@ -2094,8 +2092,7 @@ static int lineevent_create(struct gpio_device *gdev, void __user *ip)  	le = kzalloc(sizeof(*le), GFP_KERNEL);  	if (!le)  		return -ENOMEM; -	le->gdev = gdev; -	get_device(&gdev->dev); +	le->gdev = gpio_device_get(gdev);  	if (eventreq.consumer_label[0] != '\0') {  		/* label is only initialized if consumer_label is set */ @@ -2671,7 +2668,7 @@ static int gpio_chrdev_open(struct inode *inode, struct file *file)  	init_waitqueue_head(&cdev->wait);  	INIT_KFIFO(cdev->events); -	cdev->gdev = gdev; +	cdev->gdev = gpio_device_get(gdev);  	cdev->lineinfo_changed_nb.notifier_call = lineinfo_changed_notify;  	ret = blocking_notifier_chain_register(&gdev->notifier, @@ -2679,7 +2676,6 @@ static int gpio_chrdev_open(struct inode *inode, struct file *file)  	if (ret)  		goto out_free_bitmap; -	get_device(&gdev->dev);  	file->private_data = cdev;  	ret = nonseekable_open(inode, file); @@ -2694,6 +2690,7 @@ out_unregister_notifier:  	blocking_notifier_chain_unregister(&gdev->notifier,  					   &cdev->lineinfo_changed_nb);  out_free_bitmap: +	gpio_device_put(gdev);  	bitmap_free(cdev->watched_lines);  out_free_cdev:  	kfree(cdev); @@ -2716,7 +2713,7 @@ static int gpio_chrdev_release(struct inode *inode, struct file *file)  	bitmap_free(cdev->watched_lines);  	blocking_notifier_chain_unregister(&gdev->notifier,  					   &cdev->lineinfo_changed_nb); -	put_device(&gdev->dev); +	gpio_device_put(gdev);  	kfree(cdev);  	return 0;  |