All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Christian Schneider <cschneider@radiodata.biz>
Cc: linux-hwmon@vger.kernel.org, Christian Schneider <christian@ch-sc.de>
Subject: Re: [PATCH] Fix sysfs_notify and kobject_uevent in fan_alarm_notify
Date: Wed, 19 Jun 2019 12:55:33 -0700	[thread overview]
Message-ID: <20190619195533.GB29429@roeck-us.net> (raw)
In-Reply-To: <e64607f6-d2d3-44a9-4e4b-90e5ab2d74ab@radiodata.biz>

On Wed, Jun 19, 2019 at 10:47:34AM +0200, Christian Schneider wrote:
> Hi,
> unfrotunately I found a problem with my patch. It didn't appear on the
> devices, where I tested, only when distributing the patch to more devices,
> it occurs sometimes.
> 
> There is a possible race condition. In gpio_fan_probe, the IRQ handler for
> the fan alarm is registered before the hwmon_dev is initialised.
> So it is possible, that the handler executes, while fandata->hwmon_dev is
> still unitialised and the handler runs in an invalid pointer dereference.
> 
> The obvious fix, moving the
> /* Configure alarm GPIO if available. */
> if (fan_data->alarm_gpio) {
> 	err = fan_alarm_init(fan_data);
> 	if (err)
> 		return err;
> }
> block after
> 
> /* Make this driver part of hwmon class. */
> fan_data->hwmon_dev =
> 	devm_hwmon_device_register_with_groups(dev,
> 					       "gpio_fan", fan_data,
> 					       gpio_fan_groups);
> 
> doesn't work. Sysfs doesn't have a fan1_alarm attribute anymore then.
> 
> It is not yet clear to me, why creation of the attribute fails in this case.
> I need to investigate further.
> In the meanwhile, please revert my patch.
> 
> I'm sorry for the disturbance I created....
> 
No worries. Thanks for noticing and for reporting the problem. I dropped
the patch from the queue for now.

Guenter

> BR, Christian
> 
> 
> Am 17.06.2019 um 18:04 schrieb Guenter Roeck:
> >On Mon, Jun 17, 2019 at 11:33:43AM +0200, cschneider@radiodata.biz wrote:
> >>From: Christian Schneider <christian@ch-sc.de>
> >>
> >>sysfs_notify and kobject_uevent are passed the wrong kobject.
> >>that why notifications can't be received and uevents have the wrong path.
> >>this patch fixes this.
> >>
> >>Signed-off-by: Christian Schneider <cschneider@radiodata.biz>
> >
> >Applied.
> >
> >In the future, please version your patches, add a change log,
> >and reflect the subsystem and driver in the subject line.
> >
> >Thanks,
> >Guenter
> >
> >>---
> >>  drivers/hwmon/gpio-fan.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >>diff --git a/drivers/hwmon/gpio-fan.c b/drivers/hwmon/gpio-fan.c
> >>index 84753680a4e8..76377791ff0e 100644
> >>--- a/drivers/hwmon/gpio-fan.c
> >>+++ b/drivers/hwmon/gpio-fan.c
> >>@@ -54,8 +54,8 @@ static void fan_alarm_notify(struct work_struct *ws)
> >>  	struct gpio_fan_data *fan_data =
> >>  		container_of(ws, struct gpio_fan_data, alarm_work);
> >>-	sysfs_notify(&fan_data->dev->kobj, NULL, "fan1_alarm");
> >>-	kobject_uevent(&fan_data->dev->kobj, KOBJ_CHANGE);
> >>+	sysfs_notify(&fan_data->hwmon_dev->kobj, NULL, "fan1_alarm");
> >>+	kobject_uevent(&fan_data->hwmon_dev->kobj, KOBJ_CHANGE);
> >>  }
> >>  static irqreturn_t fan_alarm_irq_handler(int irq, void *dev_id)

      parent reply	other threads:[~2019-06-19 19:55 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-17  9:33 [PATCH] Fix sysfs_notify and kobject_uevent in fan_alarm_notify cschneider
2019-06-17 17:04 ` Guenter Roeck
2019-06-19  8:47   ` Christian Schneider
2019-06-19 10:00     ` Christian Schneider
2019-06-19 19:53       ` Guenter Roeck
2019-06-21  8:30         ` Christian Schneider
2019-06-21 14:05           ` Guenter Roeck
2019-06-19 19:55     ` Guenter Roeck [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190619195533.GB29429@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=christian@ch-sc.de \
    --cc=cschneider@radiodata.biz \
    --cc=linux-hwmon@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.