All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V1] extcon: modify extcon device to be created after driver data is set
       [not found] <CGME20220427030050epcas1p377eb744ed82b0e4a80747da6229fedca@epcas1p3.samsung.com>
@ 2022-04-27  3:00 ` bumwoo lee
  2022-04-27 23:16   ` Chanwoo Choi
  0 siblings, 1 reply; 3+ messages in thread
From: bumwoo lee @ 2022-04-27  3:00 UTC (permalink / raw)
  To: MyungJoo Ham, Chanwoo Choi, linux-kernel; +Cc: bumwoo lee

Currently, someone can invoke the sysfs such as state_show()
intermittently before dev_set_drvdata() is done.
And it can be a cause of kernel Oops because of edev is Null at that time.
So modified the driver registration to after setting drviver data.

- Oops's backtrace.

Backtrace:
[<c067865c>] (state_show) from [<c05222e8>] (dev_attr_show)
[<c05222c0>] (dev_attr_show) from [<c02c66e0>] (sysfs_kf_seq_show)
[<c02c6648>] (sysfs_kf_seq_show) from [<c02c496c>] (kernfs_seq_show)
[<c02c4938>] (kernfs_seq_show) from [<c025e2a0>] (seq_read)
[<c025e11c>] (seq_read) from [<c02c50a0>] (kernfs_fop_read)
[<c02c5064>] (kernfs_fop_read) from [<c0231cac>] (__vfs_read)
[<c0231c5c>] (__vfs_read) from [<c0231ee0>] (vfs_read)
[<c0231e34>] (vfs_read) from [<c0232464>] (ksys_read)
[<c02323f0>] (ksys_read) from [<c02324fc>] (sys_read)
[<c02324e4>] (sys_read) from [<c00091d0>] (__sys_trace_return)

Signed-off-by: bumwoo lee <bw365.lee@samsung.com>
---
 drivers/extcon/extcon.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
index d27cd9f88f86..d3a32b806499 100644
--- a/drivers/extcon/extcon.c
+++ b/drivers/extcon/extcon.c
@@ -1224,19 +1224,14 @@ int extcon_dev_register(struct extcon_dev *edev)
 		edev->dev.type = &edev->extcon_dev_type;
 	}
 
-	ret = device_register(&edev->dev);
-	if (ret) {
-		put_device(&edev->dev);
-		goto err_dev;
-	}
-
 	spin_lock_init(&edev->lock);
-	edev->nh = devm_kcalloc(&edev->dev, edev->max_supported,
-				sizeof(*edev->nh), GFP_KERNEL);
-	if (!edev->nh) {
-		ret = -ENOMEM;
-		device_unregister(&edev->dev);
-		goto err_dev;
+	if (edev->max_supported) {
+		edev->nh = kcalloc(edev->max_supported, sizeof(*edev->nh),
+				GFP_KERNEL);
+		if (!edev->nh) {
+			ret = -ENOMEM;
+			goto err_alloc_nh;
+		}
 	}
 
 	for (index = 0; index < edev->max_supported; index++)
@@ -1247,6 +1242,12 @@ int extcon_dev_register(struct extcon_dev *edev)
 	dev_set_drvdata(&edev->dev, edev);
 	edev->state = 0;
 
+	ret = device_register(&edev->dev);
+	if (ret) {
+		put_device(&edev->dev);
+		goto err_dev;
+	}
+
 	mutex_lock(&extcon_dev_list_lock);
 	list_add(&edev->entry, &extcon_dev_list);
 	mutex_unlock(&extcon_dev_list_lock);
@@ -1254,6 +1255,9 @@ int extcon_dev_register(struct extcon_dev *edev)
 	return 0;
 
 err_dev:
+	if (edev->max_supported)
+		kfree(edev->nh);
+err_alloc_nh:
 	if (edev->max_supported)
 		kfree(edev->extcon_dev_type.groups);
 err_alloc_groups:
@@ -1314,6 +1318,7 @@ void extcon_dev_unregister(struct extcon_dev *edev)
 	if (edev->max_supported) {
 		kfree(edev->extcon_dev_type.groups);
 		kfree(edev->cables);
+		kfree(edev->nh);
 	}
 
 	put_device(&edev->dev);
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH V1] extcon: modify extcon device to be created after driver data is set
  2022-04-27  3:00 ` [PATCH V1] extcon: modify extcon device to be created after driver data is set bumwoo lee
@ 2022-04-27 23:16   ` Chanwoo Choi
  2022-04-28  0:36     ` Bumwoo Lee
  0 siblings, 1 reply; 3+ messages in thread
From: Chanwoo Choi @ 2022-04-27 23:16 UTC (permalink / raw)
  To: bumwoo lee, MyungJoo Ham, Chanwoo Choi, linux-kernel

Hi bumwoo,

On 22. 4. 27. 12:00, bumwoo lee wrote:
> Currently, someone can invoke the sysfs such as state_show()
> intermittently before dev_set_drvdata() is done.
> And it can be a cause of kernel Oops because of edev is Null at that time.
> So modified the driver registration to after setting drviver data.
> 
> - Oops's backtrace.
> 
> Backtrace:
> [<c067865c>] (state_show) from [<c05222e8>] (dev_attr_show)
> [<c05222c0>] (dev_attr_show) from [<c02c66e0>] (sysfs_kf_seq_show)
> [<c02c6648>] (sysfs_kf_seq_show) from [<c02c496c>] (kernfs_seq_show)
> [<c02c4938>] (kernfs_seq_show) from [<c025e2a0>] (seq_read)
> [<c025e11c>] (seq_read) from [<c02c50a0>] (kernfs_fop_read)
> [<c02c5064>] (kernfs_fop_read) from [<c0231cac>] (__vfs_read)
> [<c0231c5c>] (__vfs_read) from [<c0231ee0>] (vfs_read)
> [<c0231e34>] (vfs_read) from [<c0232464>] (ksys_read)
> [<c02323f0>] (ksys_read) from [<c02324fc>] (sys_read)
> [<c02324e4>] (sys_read) from [<c00091d0>] (__sys_trace_return)
> 
> Signed-off-by: bumwoo lee <bw365.lee@samsung.com>
> ---
>   drivers/extcon/extcon.c | 29 +++++++++++++++++------------
>   1 file changed, 17 insertions(+), 12 deletions(-)
(snip)

Applied it on extcon-fixes. Thanks for your work.
I change the first letter to capital letter as  following:
- extcon: Modify extcon device to be created after driver data is set


And better to use the correct version on patch title on next
and then add the changes according to version as following:
If you describe changes under '---', it is no problem
when git apply with git am command.

For example.
[PATCH v2] extcon: Modify extcon device to be created after driver data
...

Signed-off-by: bumwoo lee <bw365.lee@samsung.com>
---

Changes from v1:
- explain what are changes


-- 
Best Regards,
Samsung Electronics
Chanwoo Choi

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH V1] extcon: modify extcon device to be created after driver data is set
  2022-04-27 23:16   ` Chanwoo Choi
@ 2022-04-28  0:36     ` Bumwoo Lee
  0 siblings, 0 replies; 3+ messages in thread
From: Bumwoo Lee @ 2022-04-28  0:36 UTC (permalink / raw)
  To: 'Chanwoo Choi', 'MyungJoo Ham',
	'Chanwoo Choi',
	linux-kernel

Hi Chanwoo,

Thank you for your kind detail guidance and example.

Best Regards,
Bumwoo Lee.
-----Original Message-----
From: Chanwoo Choi <cwchoi00@gmail.com> 
Sent: Thursday, April 28, 2022 8:16 AM
To: bumwoo lee <bw365.lee@samsung.com>; MyungJoo Ham <myungjoo.ham@samsung.com>; Chanwoo Choi <cw00.choi@samsung.com>; linux-kernel@vger.kernel.org
Subject: Re: [PATCH V1] extcon: modify extcon device to be created after driver data is set

Hi bumwoo,

On 22. 4. 27. 12:00, bumwoo lee wrote:
> Currently, someone can invoke the sysfs such as state_show() 
> intermittently before dev_set_drvdata() is done.
> And it can be a cause of kernel Oops because of edev is Null at that time.
> So modified the driver registration to after setting drviver data.
> 
> - Oops's backtrace.
> 
> Backtrace:
> [<c067865c>] (state_show) from [<c05222e8>] (dev_attr_show) 
> [<c05222c0>] (dev_attr_show) from [<c02c66e0>] (sysfs_kf_seq_show) 
> [<c02c6648>] (sysfs_kf_seq_show) from [<c02c496c>] (kernfs_seq_show) 
> [<c02c4938>] (kernfs_seq_show) from [<c025e2a0>] (seq_read) 
> [<c025e11c>] (seq_read) from [<c02c50a0>] (kernfs_fop_read) 
> [<c02c5064>] (kernfs_fop_read) from [<c0231cac>] (__vfs_read) 
> [<c0231c5c>] (__vfs_read) from [<c0231ee0>] (vfs_read) [<c0231e34>] 
> (vfs_read) from [<c0232464>] (ksys_read) [<c02323f0>] (ksys_read) from 
> [<c02324fc>] (sys_read) [<c02324e4>] (sys_read) from [<c00091d0>] 
> (__sys_trace_return)
> 
> Signed-off-by: bumwoo lee <bw365.lee@samsung.com>
> ---
>   drivers/extcon/extcon.c | 29 +++++++++++++++++------------
>   1 file changed, 17 insertions(+), 12 deletions(-)
(snip)

Applied it on extcon-fixes. Thanks for your work.
I change the first letter to capital letter as  following:
- extcon: Modify extcon device to be created after driver data is set


And better to use the correct version on patch title on next and then add the changes according to version as following:
If you describe changes under '---', it is no problem when git apply with git am command.

For example.
[PATCH v2] extcon: Modify extcon device to be created after driver data ...

Signed-off-by: bumwoo lee <bw365.lee@samsung.com>
---

Changes from v1:
- explain what are changes


--
Best Regards,
Samsung Electronics
Chanwoo Choi


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-04-28  0:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20220427030050epcas1p377eb744ed82b0e4a80747da6229fedca@epcas1p3.samsung.com>
2022-04-27  3:00 ` [PATCH V1] extcon: modify extcon device to be created after driver data is set bumwoo lee
2022-04-27 23:16   ` Chanwoo Choi
2022-04-28  0:36     ` Bumwoo Lee

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.