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

From: Thomas Petazzoni <[email-masked]>
Date: Wed, 26 Jun 2013 17:24:46 +0200

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?

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com