From: John McCutchan <ttb@tentacle.dhs.org>
To: Robert Love <rml@novell.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [patch] inotify: locking
Date: Wed, 22 Sep 2004 19:22:40 -0400 [thread overview]
Message-ID: <1095895360.29226.17.camel@vertex> (raw)
In-Reply-To: <1095881861.5090.59.camel@betsy.boston.ximian.com>
On Wed, 2004-09-22 at 15:37, Robert Love wrote:
> Hey, John.
>
> I went over the locking in drivers/char/inotify.c Looks right.
>
> I made two major changes:
>
> - In a couple places you used irq-safe locks, but in most places
> you did not. It has to be all or never. We do not currently
> need protection from interrupts, so I changed the few
> irq-safe locks on dev->lock to normal spin_lock/spin_unlock
> calls.
>
> - dev->event_count was an atomic_t, but it was never accessed
> outside of dev->lock. I also did not see why ->event_count
> was atomic but not ->nr_watches. So I made event_count an
> unsigned int and removed the atomic operations.
>
Okay, this is my first kernel project so I didn't know/follow all of the
rules, I admit it is a bit of a mishmash.
> The rest of the (admittedly a bit large) patch is documenting the
> locking rules. I tried to put the locking assumptions in comments at
> the top of each function. I made some coding style cleanups as I went
> along, too, but not too many (those come next).
>
The patch and your previous patches look excellent. I have applied them
to my tree and I will be making a new release this evening.
> I do have one remaining concern: create_watcher() is called without the
> lock on dev, but it later obtains the lock, before it touches dev. So
> it is safe in that regard, but what if dev is deallocated before it
> grabs the lock? dev is passed in, so, for example, dev could be freed
> (or otherwise manipulated) and then the dereference of dev->lock would
> oops. A couple other functions do this. We probably need proper ref
> counting on dev. BUT, are all of these call chains off of VFS functions
> on the device? Perhaps so long as the device is open it is pinned?
>
Yes, AFAIK the only places where we rely on the dev not going away are
when we are handling a request from user space. As long as VFS
operations are serialized I don't think we have to worry about that.
John
next prev parent reply other threads:[~2004-09-22 22:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-22 19:37 [patch] inotify: locking Robert Love
2004-09-22 19:38 ` Robert Love
2004-09-23 9:09 ` Paul Jackson
2004-09-22 23:22 ` John McCutchan [this message]
2004-09-22 23:22 ` Robert Love
-- strict thread matches above, loose matches on Subject: below --
2004-09-28 22:33 [RFC][PATCH] inotify 0.11.0 [WITH PATCH!] John McCutchan
2004-09-30 19:01 ` [patch] inotify: locking Robert Love
2004-09-30 19:17 ` Robert Love
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=1095895360.29226.17.camel@vertex \
--to=ttb@tentacle.dhs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rml@novell.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox