Subject: Re: linux-next: Tree for Jun 26 [ vfs | block | fuse (cpuidle) releated? ]

From: Greg Kroah-Hartman <[email-masked]>
Date: Wed, 26 Jun 2013 08:32:36 -0700

On Wed, Jun 26, 2013 at 05:24:46PM +0200, Thomas Petazzoni wrote:
> Dear Sedat Dilek,
> 
> On Wed, 26 Jun 2013 16:50:55 +0200, Sedat Dilek wrote:
> 
> > [ TO/CC char-misc folks ]
> > 
> > The CULPRIT commit [1] due to my git-bisecting is:
> > 
> > commit 585d98e00ba7a5e2abe65f7a1eff631cb612289b
> > "char: misc: assign file->private_data in all cases"
> > 
> > After reverting it, my system boots up fine again.
> > 
> > Can someone from the char-misc folks look at that?
> 
> Ok. My understanding is that the misc device registered by
> fs/fuse/dev.c:fuse_dev_init() makes the assumption that
> file->private_data == NULL when a misc device is opened. But I'm not
> sure to fully understand the code flow of the FUSE filesystem.
> 
> And since it doesn't provide its own implementation of the ->open()
> operation, the misc infrastructure was leaving the file->private_data
> defined to NULL before my patch.
> 
> With my patch, the file->private_data gets assigned unconditionally
> (regardless of whether the misc driver provides or does not provide a
> ->open() operation) which modifies the unwritten assumption that fuse
> was making about the initial value of file->private_data. I believe the
> assumption made by fuse over the initial value of this variable is a
> bit fragile.
> 
> Maybe the FUSE code needs to be slightly adjusted to not make this
> assumption?

As the FUSE code was working properly before this change, I think this
misc core change needs to be reverted, so I'll go do that in a bit.

thanks,

greg k-h