mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] misc: keba: Fix sysfs group creation
@ 2024-08-19 19:26 Gerhard Engleder
  2024-08-27 18:27 ` Gerhard Engleder
  0 siblings, 1 reply; 3+ messages in thread
From: Gerhard Engleder @ 2024-08-19 19:26 UTC (permalink / raw)
  To: linux-kernel; +Cc: arnd, gregkh, Gerhard Engleder, Gerhard Engleder

From: Gerhard Engleder <eg@keba.com>

sysfs_create_group() races with userspace. Use dev_groups instead which
prevents all the problems of sysfs_create_group().

Fixes: a1944676767e ("misc: keba: Add basic KEBA CP500 system FPGA support")
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Gerhard Engleder <eg@keba.com>
---
 drivers/misc/keba/cp500.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/drivers/misc/keba/cp500.c b/drivers/misc/keba/cp500.c
index 9ba46f0f9392..ae0922817881 100644
--- a/drivers/misc/keba/cp500.c
+++ b/drivers/misc/keba/cp500.c
@@ -212,12 +212,12 @@ static ssize_t keep_cfg_store(struct device *dev, struct device_attribute *attr,
 }
 static DEVICE_ATTR_RW(keep_cfg);
 
-static struct attribute *attrs[] = {
+static struct attribute *cp500_attrs[] = {
 	&dev_attr_version.attr,
 	&dev_attr_keep_cfg.attr,
 	NULL
 };
-static const struct attribute_group attrs_group = { .attrs = attrs };
+ATTRIBUTE_GROUPS(cp500);
 
 static void cp500_i2c_release(struct device *dev)
 {
@@ -396,20 +396,15 @@ static int cp500_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
 
 	pci_set_drvdata(pci_dev, cp500);
 
-	ret = sysfs_create_group(&pci_dev->dev.kobj, &attrs_group);
-	if (ret != 0)
-		goto out_free_irq;
 
 	ret = cp500_enable(cp500);
 	if (ret != 0)
-		goto out_remove_group;
+		goto out_free_irq;
 
 	cp500_register_auxiliary_devs(cp500);
 
 	return 0;
 
-out_remove_group:
-	sysfs_remove_group(&pci_dev->dev.kobj, &attrs_group);
 out_free_irq:
 	pci_free_irq_vectors(pci_dev);
 out_disable:
@@ -427,8 +422,6 @@ static void cp500_remove(struct pci_dev *pci_dev)
 
 	cp500_disable(cp500);
 
-	sysfs_remove_group(&pci_dev->dev.kobj, &attrs_group);
-
 	pci_set_drvdata(pci_dev, 0);
 
 	pci_free_irq_vectors(pci_dev);
@@ -450,6 +443,7 @@ static struct pci_driver cp500_driver = {
 	.id_table = cp500_ids,
 	.probe = cp500_probe,
 	.remove = cp500_remove,
+	.dev_groups = cp500_groups,
 };
 module_pci_driver(cp500_driver);
 
-- 
2.39.2


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

* Re: [PATCH] misc: keba: Fix sysfs group creation
  2024-08-19 19:26 [PATCH] misc: keba: Fix sysfs group creation Gerhard Engleder
@ 2024-08-27 18:27 ` Gerhard Engleder
  2024-08-28  7:27   ` Greg KH
  0 siblings, 1 reply; 3+ messages in thread
From: Gerhard Engleder @ 2024-08-27 18:27 UTC (permalink / raw)
  To: linux-kernel, gregkh; +Cc: arnd, Gerhard Engleder

On 19.08.24 21:26, Gerhard Engleder wrote:
> From: Gerhard Engleder <eg@keba.com>
> 
> sysfs_create_group() races with userspace. Use dev_groups instead which
> prevents all the problems of sysfs_create_group().
> 
> Fixes: a1944676767e ("misc: keba: Add basic KEBA CP500 system FPGA support")
> Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Gerhard Engleder <eg@keba.com>
> ---
>   drivers/misc/keba/cp500.c | 14 ++++----------
>   1 file changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/misc/keba/cp500.c b/drivers/misc/keba/cp500.c
> index 9ba46f0f9392..ae0922817881 100644
> --- a/drivers/misc/keba/cp500.c
> +++ b/drivers/misc/keba/cp500.c
> @@ -212,12 +212,12 @@ static ssize_t keep_cfg_store(struct device *dev, struct device_attribute *attr,
>   }
>   static DEVICE_ATTR_RW(keep_cfg);
>   
> -static struct attribute *attrs[] = {
> +static struct attribute *cp500_attrs[] = {
>   	&dev_attr_version.attr,
>   	&dev_attr_keep_cfg.attr,
>   	NULL
>   };
> -static const struct attribute_group attrs_group = { .attrs = attrs };
> +ATTRIBUTE_GROUPS(cp500);
>   
>   static void cp500_i2c_release(struct device *dev)
>   {
> @@ -396,20 +396,15 @@ static int cp500_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
>   
>   	pci_set_drvdata(pci_dev, cp500);
>   
> -	ret = sysfs_create_group(&pci_dev->dev.kobj, &attrs_group);
> -	if (ret != 0)
> -		goto out_free_irq;
>   
>   	ret = cp500_enable(cp500);
>   	if (ret != 0)
> -		goto out_remove_group;
> +		goto out_free_irq;
>   
>   	cp500_register_auxiliary_devs(cp500);
>   
>   	return 0;
>   
> -out_remove_group:
> -	sysfs_remove_group(&pci_dev->dev.kobj, &attrs_group);
>   out_free_irq:
>   	pci_free_irq_vectors(pci_dev);
>   out_disable:
> @@ -427,8 +422,6 @@ static void cp500_remove(struct pci_dev *pci_dev)
>   
>   	cp500_disable(cp500);
>   
> -	sysfs_remove_group(&pci_dev->dev.kobj, &attrs_group);
> -
>   	pci_set_drvdata(pci_dev, 0);
>   
>   	pci_free_irq_vectors(pci_dev);
> @@ -450,6 +443,7 @@ static struct pci_driver cp500_driver = {
>   	.id_table = cp500_ids,
>   	.probe = cp500_probe,
>   	.remove = cp500_remove,
> +	.dev_groups = cp500_groups,
>   };
>   module_pci_driver(cp500_driver);
>   

Hello Greg,

did I made some mistakes that keeps this patch from being merged?
I think it can be included to 6.11-rc6, but maybe I'm wrong.

Thanks,
Gerhard

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

* Re: [PATCH] misc: keba: Fix sysfs group creation
  2024-08-27 18:27 ` Gerhard Engleder
@ 2024-08-28  7:27   ` Greg KH
  0 siblings, 0 replies; 3+ messages in thread
From: Greg KH @ 2024-08-28  7:27 UTC (permalink / raw)
  To: Gerhard Engleder; +Cc: linux-kernel, arnd, Gerhard Engleder

On Tue, Aug 27, 2024 at 08:27:21PM +0200, Gerhard Engleder wrote:
> On 19.08.24 21:26, Gerhard Engleder wrote:
> > From: Gerhard Engleder <eg@keba.com>
> > 
> > sysfs_create_group() races with userspace. Use dev_groups instead which
> > prevents all the problems of sysfs_create_group().
> > 
> > Fixes: a1944676767e ("misc: keba: Add basic KEBA CP500 system FPGA support")
> > Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > Signed-off-by: Gerhard Engleder <eg@keba.com>
> > ---
> >   drivers/misc/keba/cp500.c | 14 ++++----------
> >   1 file changed, 4 insertions(+), 10 deletions(-)
> > 
> > diff --git a/drivers/misc/keba/cp500.c b/drivers/misc/keba/cp500.c
> > index 9ba46f0f9392..ae0922817881 100644
> > --- a/drivers/misc/keba/cp500.c
> > +++ b/drivers/misc/keba/cp500.c
> > @@ -212,12 +212,12 @@ static ssize_t keep_cfg_store(struct device *dev, struct device_attribute *attr,
> >   }
> >   static DEVICE_ATTR_RW(keep_cfg);
> > -static struct attribute *attrs[] = {
> > +static struct attribute *cp500_attrs[] = {
> >   	&dev_attr_version.attr,
> >   	&dev_attr_keep_cfg.attr,
> >   	NULL
> >   };
> > -static const struct attribute_group attrs_group = { .attrs = attrs };
> > +ATTRIBUTE_GROUPS(cp500);
> >   static void cp500_i2c_release(struct device *dev)
> >   {
> > @@ -396,20 +396,15 @@ static int cp500_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
> >   	pci_set_drvdata(pci_dev, cp500);
> > -	ret = sysfs_create_group(&pci_dev->dev.kobj, &attrs_group);
> > -	if (ret != 0)
> > -		goto out_free_irq;
> >   	ret = cp500_enable(cp500);
> >   	if (ret != 0)
> > -		goto out_remove_group;
> > +		goto out_free_irq;
> >   	cp500_register_auxiliary_devs(cp500);
> >   	return 0;
> > -out_remove_group:
> > -	sysfs_remove_group(&pci_dev->dev.kobj, &attrs_group);
> >   out_free_irq:
> >   	pci_free_irq_vectors(pci_dev);
> >   out_disable:
> > @@ -427,8 +422,6 @@ static void cp500_remove(struct pci_dev *pci_dev)
> >   	cp500_disable(cp500);
> > -	sysfs_remove_group(&pci_dev->dev.kobj, &attrs_group);
> > -
> >   	pci_set_drvdata(pci_dev, 0);
> >   	pci_free_irq_vectors(pci_dev);
> > @@ -450,6 +443,7 @@ static struct pci_driver cp500_driver = {
> >   	.id_table = cp500_ids,
> >   	.probe = cp500_probe,
> >   	.remove = cp500_remove,
> > +	.dev_groups = cp500_groups,
> >   };
> >   module_pci_driver(cp500_driver);
> 
> Hello Greg,
> 
> did I made some mistakes that keeps this patch from being merged?
> I think it can be included to 6.11-rc6, but maybe I'm wrong.

Please give me some time to catch up with reviews.

In the meantime, please feel free to review other changes on the mailing
lists to help us out!

thanks,

greg k-h

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

end of thread, other threads:[~2024-08-28  7:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-19 19:26 [PATCH] misc: keba: Fix sysfs group creation Gerhard Engleder
2024-08-27 18:27 ` Gerhard Engleder
2024-08-28  7:27   ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®