From: Guenter Roeck <linux@roeck-us.net>
To: "Winkler, Tomas" <tomas.winkler@intel.com>,
Wim Van Sebroeck <wim@iguana.be>
Cc: "linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>
Subject: Re: [watchdog-next] watchdog: kill unref/ref ops
Date: Mon, 4 Jan 2016 15:58:05 -0800 [thread overview]
Message-ID: <568B070D.8000306@roeck-us.net> (raw)
In-Reply-To: <5B8DA87D05A7694D9FA63FD143655C1B541154C0@hasmsx108.ger.corp.intel.com>
On 01/04/2016 03:38 PM, Winkler, Tomas wrote:
>
>
>> -----Original Message-----
>> From: Guenter Roeck [mailto:linux@roeck-us.net]
>> Sent: Sunday, January 03, 2016 17:48
>> To: Winkler, Tomas; Wim Van Sebroeck
>> Cc: linux-watchdog@vger.kernel.org
>> Subject: Re: [watchdog-next] watchdog: kill unref/ref ops
>>
>> On 01/03/2016 03:32 AM, Tomas Winkler wrote:
>>> ref/unref ops are not called at all so even marked them as deprecated
>>> is misleading, we need to just drop the API.
>>>
>> One the other side, the functions are now no-ops, so they don't hurt either.
>> Only reason for not dropping the functions as part of my series was that
>> the mei watchdog code was starting to implement them, and I didn't want
>> to create dependencies for that code. Maybe my thinking was too conservative.
>>
>>> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
>>
>> ... of course that is no concern anymore since this patch is from its
>> maintainer.
>>
>> Acked-by: Guenter Roeck <linux@roeck-us.net>
>
> Now I'm looking into the current code and one thing I do not understand , if the watchdog_core_data is holding
> a pointer to wdd, who is responsible for wdd and who is holding the reference counter on that pointer.
> If the underlying driver will release the wdd (for any reason) your code will read junk.
> I think wdd should not be a pointer here.
>
The pointer is cleared when the watchdog device is removed (in watchdog_cdev_unregister,
which is called from watchdog_dev_unregister), and the cleared pointer is used by
the watchdog core as indication that the driver is no longer accessible.
This replaces the WDOG_UNREGISTERED flag.
Guenter
> /*
> * struct watchdog_core_data - watchdog core internal data
> * @kref: Reference count.
> * @cdev: The watchdog's Character device.
> * @wdd: Pointer to watchdog device.
> * @lock: Lock for watchdog core.
> * @status: Watchdog core internal status bits.
> */
> struct watchdog_core_data {
> struct kref kref;
> struct cdev cdev;
> struct watchdog_device *wdd;
> struct mutex lock;
> unsigned long status; /* Internal status bits */
> #define _WDOG_DEV_OPEN 0 /* Opened ? */
> #define _WDOG_ALLOW_RELEASE 1 /* Did we receive the magic char ? */
> };
>
> Thanks
> Tomas
>
next prev parent reply other threads:[~2016-01-04 23:58 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-03 11:32 [watchdog-next] watchdog: kill unref/ref ops Tomas Winkler
2016-01-03 15:48 ` Guenter Roeck
2016-01-04 23:38 ` Winkler, Tomas
2016-01-04 23:58 ` Guenter Roeck [this message]
2016-01-11 21:28 ` Wim Van Sebroeck
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=568B070D.8000306@roeck-us.net \
--to=linux@roeck-us.net \
--cc=linux-watchdog@vger.kernel.org \
--cc=tomas.winkler@intel.com \
--cc=wim@iguana.be \
/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.