2005-12-19 14:57:45

by Vladimir V. Saveliev

[permalink] [raw]
Subject: bug in get_name of export operations?

Hello

Please point my error if I am wrong:

fs/exportfs/expfs.c:get_name() opens a directory with:
file = dentry_open(dget(dentry), NULL, O_RDONLY);
which results in file where file->f_vfsmnt == NULL.

Then fs/readdir.c:vfs_readdir() and, therefore,
include/linux/fs.h:file_accessed(file) are called.
file_accessed() calls fs/inode.c:touch_atime() which tryies to dereference mnt
which is NULL.





2005-12-20 10:52:39

by Andrew Morton

[permalink] [raw]
Subject: Re: bug in get_name of export operations?

"Vladimir V. Saveliev" <[email protected]> wrote:
>
> Hello
>
> Please point my error if I am wrong:
>
> fs/exportfs/expfs.c:get_name() opens a directory with:
> file = dentry_open(dget(dentry), NULL, O_RDONLY);
> which results in file where file->f_vfsmnt == NULL.
>
> Then fs/readdir.c:vfs_readdir() and, therefore,
> include/linux/fs.h:file_accessed(file) are called.
> file_accessed() calls fs/inode.c:touch_atime() which tryies to dereference mnt
> which is NULL.
>

I think you're looking at the -mm tree, in which Christoph changed all that
stuff.

2005-12-20 11:36:07

by Vladimir V. Saveliev

[permalink] [raw]
Subject: Re: bug in get_name of export operations?

Hello

Andrew Morton wrote:
> "Vladimir V. Saveliev" <[email protected]> wrote:
>>Hello
>>
>>Please point my error if I am wrong:
>>
>>fs/exportfs/expfs.c:get_name() opens a directory with:
>>file = dentry_open(dget(dentry), NULL, O_RDONLY);
>>which results in file where file->f_vfsmnt == NULL.
>>
>>Then fs/readdir.c:vfs_readdir() and, therefore,
>>include/linux/fs.h:file_accessed(file) are called.
>>file_accessed() calls fs/inode.c:touch_atime() which tryies to dereference mnt
>>which is NULL.
>>
>
> I think you're looking at the -mm tree, in which Christoph changed all that
> stuff.
>

Ah, sorry, yes, I found that in 2.6.15-rc5-mm3