Re: 2.6.11-rc4-mm1

Mathieu Segaud
2005-02-23T11:03:50Z

[-- Attachment #1: Type: text/plain, Size: 1313 bytes --]

Andrew Morton <akpm@osdl.org> disait dernièrement que :

> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.11-rc4/2.6.11-rc4-mm1/
>
>
> - Various fixes and updates all over the place. Things seem to have slowed
> down a bit.
>
> - Last, final, ultimate call: if anyone has patches in here which are 2.6.11
> material, please tell me.
>
>
>
> Changes since 2.6.11-rc3-mm1:

[snip]

> +inotify.patch
>
> Not sure if this is the latest version.

it is the latest Robert Love posted against -mm kernels, but in
inotify_ignore():

static int inotify_ignore(struct inotify_device *dev, s32 wd)
{
struct inotify_watch *watch;
int ret = 0;

spin_lock(&dev->lock);
watch = dev_find_wd(dev, wd);
spin_unlock(&dev->lock); <------------- lock is released, but
if (!watch) {
ret = -EINVAL;
goto out;
}
__remove_watch(watch, dev); <---------- must be called with lock held

out:
spin_unlock(&dev->lock); <------------- anyway, lock is
return ret; released and sub_preempt_count
} BUG's on SMP and PREEMPT

__remove_watch() must be called with ->lock held on dev.
Anyway, ->lock is released after label out.

Signed-off-by: Mathieu Segaud <matt@minas-morgul.org>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: fix-double-spin_unlock-in-inotify_ignore.patch --]
[-- Type: text/x-patch, Size: 285 bytes --]

--- a/drivers/char/inotify.c 2005-02-23 11:55:21.321385752 +0100
+++ b/drivers/char/inotify.c 2005-02-23 11:55:29.772101048 +0100
@@ -952,7 +952,7 @@

spin_lock(&dev->lock);
watch = dev_find_wd(dev, wd);
- spin_unlock(&dev->lock);
+
if (!watch) {
ret = -EINVAL;
goto out;

[-- Attachment #3: Type: text/plain, Size: 117 bytes --]

--
> Can you explain this behaviour?

Yes
--
Alan

[Oh wait you want to know why...]

- Alan Cox on linux-kernel