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 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.