lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1229180475.29167.6.camel@localhost.localdomain>
Date:	Sat, 13 Dec 2008 10:01:15 -0500
From:	Eric Paris <eparis@...hat.com>
To:	Evgeniy Polyakov <zbr@...emap.net>
Cc:	linux-kernel@...r.kernel.org, a.p.zijlstra@...llo.nl,
	viro@...IV.linux.org.uk, hch@...radead.org,
	akpm@...ux-foundation.org, alan@...rguk.ukuu.org.uk
Subject: Re: [RFC PATCH -v4 05/14] fsnotify: unified filesystem
 notification backend

On Sat, 2008-12-13 at 05:54 +0300, Evgeniy Polyakov wrote:
> > +struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u64 mask, void *data, int data_is)
> > +{
> > +	struct fsnotify_event *event;
> > +
> > +	event = kmem_cache_alloc(event_kmem_cache, GFP_KERNEL);
> > +	if (!event)
> > +		return NULL;
> > +
> > +	atomic_set(&event->refcnt, 1);
> > +
> > +	spin_lock_init(&event->lock);
> > +
> > +	event->path.dentry = NULL;
> > +	event->path.mnt = NULL;
> > +	event->inode = NULL;
> > +
> > +	INIT_LIST_HEAD(&event->private_data_list);
> > +
> > +	event->to_tell = to_tell;
> 
> What prevents this inode to be released?

Absolutely nothing and I need to document that.  Two things,
event->to_tell and event->data if event->data_is == INODE are ONLY valid
during the call to group-?event_to_notif().  As soon as all groups
return from that call those are not valid fields.  I could set them NULL
when they aren't allowed to be used any more, but it's a wasted
operation on a VERY hot path (fsnotify())

As a side note event->data if event->data_is == FILE is perfectly
allowed to be used until the event is freed.  That's totally pointless
for this patch set and I might drop it on the next submission, but it is
needed for my fanotify notify patches that I keep in mind as I'm doing
this.

I'll remember to better document this 'quirk' in case anyone tries to
write a new notifier.

-Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ